Coder Social home page Coder Social logo

Retina display support about ng2-pdf-viewer HOT 9 CLOSED

vadimdez avatar vadimdez commented on May 24, 2024 3
Retina display support

from ng2-pdf-viewer.

Comments (9)

cbratschi avatar cbratschi commented on May 24, 2024 2

Here is a patch (JS version) to use SVG rendering:

    PdfViewerComponent.prototype.renderPage = function (pageNumber) {
        var _this = this;
        return this._pdf.getPage(pageNumber).then(function (page) {
            var viewport = page.getViewport(_this._zoom, _this._rotation);
            var container = _this.element.nativeElement.querySelector('div');
            var canvas = document.createElement('canvas');
            var div = document.createElement('div');
            if (!_this._originalSize) {

                viewport = page.getViewport(_this.element.nativeElement.offsetWidth / viewport.width, _this._rotation);
            }
            if (!_this._showAll) {
                _this.removeAllChildNodes(container);
            }
            div.appendChild(canvas);
//            container.appendChild(div);

// Set dimensions
container.style.width = viewport.width + 'px';
container.style.height = viewport.height + 'px';

// SVG rendering by PDF.js
page.getOperatorList()
    .then(function (opList) {
        var svgGfx = new window.PDFJS.SVGGraphics(page.commonObjs, page.objs);

        return svgGfx.getSVG(opList, viewport);
    })
    .then(function (svg) {
        container.appendChild(svg);
    });
return;

This is the best solution. Rendering quality is optimal on all platforms and performance seems to be better too.

Reference: https://www.sitepoint.com/custom-pdf-rendering/

from ng2-pdf-viewer.

cbratschi avatar cbratschi commented on May 24, 2024 1

My patch above uses SVG and not a higher resolution bitmap. Performance is therefore better. Please consider adding SVG support too.

from ng2-pdf-viewer.

liangwenzhong avatar liangwenzhong commented on May 24, 2024

@cbratschi may i have demo ?

from ng2-pdf-viewer.

cbratschi avatar cbratschi commented on May 24, 2024

@liangwenzhong We are using the patch as part of an Ionic 2 project. Rendering quality is great on iOS and desktop devices. There was only a problem with a missing font we fixed by updating some PDFs. Unfortunately I cannot provide an online demo because this is a private business app.

from ng2-pdf-viewer.

liangwenzhong avatar liangwenzhong commented on May 24, 2024

@cbratschi i also use ionic 2 !~ i think we doing the same thing !~but i still have a problem ~~can i use the pinch event ? i wanna zoom the pdf file ~~~~have u did this ?

from ng2-pdf-viewer.

cbratschi avatar cbratschi commented on May 24, 2024

@liangwenzhong The SVG based rendering should be fine for zooming without quality loss. What I would need is resize support e.g. from portrait to landscape on mobile devices. Pinching is probably more complicated as this discussion exhibits:

mozilla/pdf.js#2582

I hope the SVG patch will be integrated soon.

from ng2-pdf-viewer.

liangwenzhong avatar liangwenzhong commented on May 24, 2024

@cbratschi thanks for ur replay so much !~ i have anothre problem . i use ur script below:

PdfViewerComponent.prototype['renderPage'] = function(pageNumber) {
var _this = this;
return this._pdf.getPage(pageNumber).then(function(page) {
var viewport = page.getViewport(_this._zoom, _this._rotation);
var container = _this.element.nativeElement.querySelector('div');
var canvas = document.createElement('canvas');
var div = document.createElement('div');
if (!_this._originalSize) {
viewport = page.getViewport(_this.element.nativeElement.offsetWidth / viewport.width, _this._rotation);
}
if (!_this._showAll) {
_this.removeAllChildNodes(container);
}
div.appendChild(canvas);
container.appendChild(div);
// SVG rendering by PDF.js
page.getOperatorList()
.then(function(opList) {
var svgGfx = new window['PDFJS'].SVGGraphics(page.commonObjs, page.objs);
return svgGfx.getSVG(opList, viewport);
})
.then(function(svg) {
container.appendChild(svg);
});
return;

});

}
a very strange problem happened~

the page's become inverted order . the page2 go to the first page ,the page1 go to the second page .

have u resolve this ? :)

from ng2-pdf-viewer.

liangwenzhong avatar liangwenzhong commented on May 24, 2024

@cbratschi i fix the inverted order problem . :) like:

image

but, i got another problem -.- !~

how to catch the error event ? if an error happened?how can i catch?
just like : if error ,i have to hide the loading and alert some tips .

from ng2-pdf-viewer.

VadimDez avatar VadimDez commented on May 24, 2024

@cbratschi did the change in 1.1.4

from ng2-pdf-viewer.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.