簡體   English   中英

Swift:如何在iOS UIWebView中顯示包含多個頁面的遠程PDF文件?

[英]Swift: How to display a remote PDF file with multiple pages in iOS UIWebView?

我想使用UIWebView顯示遠程多頁pdf。 這是我在viewDidLoad所做的事情:

self.webView.scalesPageToFit = true
self.webView.contentMode = UIViewContentMode.ScaleAspectFit
let url : NSURL! = NSURL(string: pdfFile)
webView.loadRequest(NSURLRequest(URL: url ))

webviewUIWebView的一個實例,字符串pdfFile包含遠程服務器上pdf的URL。

當我運行它時,視圖顯示pdf的第一頁。 如何顯示所有頁面?

您的代碼看起來正確。 PDF文件在Safari / iOS中有效嗎?

Apple的CoreGraphics PDF渲染器存在很多已知問題 - 您可能只是遇到這樣的問題並且錯誤地解析了該文件。 也可能是文件本身有點損壞,但是當其他解析器通常彈性較差時,Adobe Acrobat有許多處理這些文件的解決方法。 我非常了解這個空間,因為我在過去的5年里花了很多時間在PSPDFKit上,這是一個用於在iOS上渲染和編輯/注釋PDF文檔的第三方SDK,你可以像上面的代碼一樣使用它。 (只需使用PSPDFViewController而不是UIWebView )。

這是一個商業解決方案,我們有一個由25人組成的團隊 - 在我們發現Apple的渲染器存在太多缺陷和問題后,我們編寫了自己的PDF渲染器。 您可以找到的大多數開源解決方案都將使用CGPDF並且會出現與UIWebView相同的問題。

如果您正在尋找的是更多控制但渲染很好,並且您不需要智能縮放,文本選擇或搜索,請查看Apple的ZoomingPDFViewer示例 - 這將使您開始如何最好地使用CGContextDrawPDFPage繪制PDF並允許縮放。 (公平警告,如果你不編寫自己的緩存層,它會很慢。)

有時,在Apple Preview中打開PDF並簡單地重新保存它也可以解決您的問題,因為此過程會重寫整個樹。 您將丟失大量數據,如PDF小部件和一些注釋,但在某些情況下,這足以糾正部分損壞的文檔,以便在移動設備上呈現它們。 我們有一篇關於第三方支持的支持文章 ,您可以在其中了解更多信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM