PDFKit - PDFView using pageViewController - page rendering slow when swiping to next page

余生长醉 提交于 2019-12-22 04:14:13

问题


I have a PDFView that's set to use a pageViewController:

    let pdfView = PDFView()
    let pdfDoc = PDFDocument(url: Bundle.main.url(forResource: "test", withExtension: "pdf")!)
    pdfView.document = pdfDoc
    pdfView.autoScales = true
    pdfView.displayDirection = .horizontal
    pdfView.usePageViewController(true, withViewOptions: [:])

Whenever I swipe to get to the next page, said next page is blurry for half a second before it's rendered sharply. That is quite annoying. Can I somehow preload the pages? I haven't found any attributes/methods in the documentation.

(Interestingly, I have the exact same problem in Preview on MacOS when it's in fullscreen mode [since forever, on every mac I own])

It's not reliant on pdf (file) size. The problem occurs with every pdf I tried.

Thanks for any help


回答1:


Please make sure to add values of .maxScaleFactor .minScaleFactor also as per your requirement and see if it makes any difference in the loading time. e.g.

.maxScaleFactor = 4.0;
.minScaleFactor = self.scaleFactorForSizeToFit;



回答2:


I think this is due to the high resolution of your PDF and the way PDFView renders PDF. Do you have more information on your PDF?

Could you try with a PDF with less heavy images? It should render fine. If so, it's not your code which is at fault, but the resources needed to display and render it to the view.

UPDATE

You can try using the PDFView without PageViewController and see you it behaves. You could do this:

pdfView = PDFView(frame: view.frame)
pdfView.backgroundColor = UIColor.white

var documentName: String = "test"

if let documentURL = Bundle.main.url(forResource: documentName, withExtension: "pdf") {
    if let document = PDFDocument(url: documentURL) {
        pdfView.autoScales = true
        pdfView.displayDirection = .horizontal
        pdfView.displayMode = .singlePageContinuous
        pdfView.document = document
    }
}

self.view.addSubview(pdfView)

Does it behave differently? I've notice that the option usePageViewController loads the document faster for big PDF documents. Something to take into consideration when implementing.

I hope this helps




回答3:


Did you try to change the interpolationQuality option ?

The interpolation quality for images drawn into the PDFView context.

Possible values are

  • none
  • low
  • high

Maybe you could try something like

pdfView.interpolationQuality = .low

or

pdfView.interpolationQuality = .none


来源:https://stackoverflow.com/questions/49335737/pdfkit-pdfview-using-pageviewcontroller-page-rendering-slow-when-swiping-to

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!