水平滚动以在Swift中显示PDF

时间:2016-10-26 09:15:11

标签: swift pdf webview

我有集合视图,用户可以在Web视图中下载和查看PDF文件。我的应用程序是横向的,所以垂直滚动感觉很奇怪,所以我想让滚动水平。在Web视图中可以吗?或者我必须使用scrollview代替?在swift。

我正在使用alamofire下载和我的目的地:

let documentsURL = NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask)[0]

                    let fileURL = documentsURL.URLByAppendingPathComponent("\(magazineObject.title).pdf")

                    return fileURL
                }

这是我查看pdf

的代码
class RedirectMagazineViewController: UIViewController {

@IBOutlet weak var webView: UIWebView!
@IBOutlet weak var activityIndicator: UIActivityIndicatorView!

var receiveData: NSURL!
var receiveTitle: String = ""

override func viewDidLoad() {
    super.viewDidLoad()
    print("receiveData 2ndVC =>\(receiveData)")
    self.navigationController?.navigationBarHidden = false
    self.title = receiveTitle
    let documentsPath = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0]
    let filePath = "\(documentsPath)/\(receiveTitle).pdf"
    let url = NSURL(fileURLWithPath: filePath)
    let urlRequest = NSURLRequest(URL: url)
    webView.loadRequest(urlRequest)
    activityIndicator.startAnimating()
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}
}

3 个答案:

答案 0 :(得分:0)

只要您不设计支持水平方式的pdf文件,PDF文件本身就是一组页面,您无法水平滚动pdf文件。在UIWebView, Chrome, Safari, Preview, FireFox, Windows 8 Reader等等中显示pdf较少。

答案 1 :(得分:0)

UIWebView在显示PDF时允许您自定义的内容非常有限。启用垂直滚动指示器不会改变任何内容。

切换到垂直滚动的唯一方法是从{0}开始一直从头开始 - 请参阅Apple's documentation for a start

有各种open sourcecommercial PDF SDK可用来解决这个问题,因为即使只是复制UIWebView的功能也是一个非常难的问题。单单选择文字真的很难。自2010年以来,我一直在PSPDFKit工作,7年后我们仍在努力。

Apple's ZoomingPDFViewer是一个很好的介绍,如果你愿意花几个月的时间来自己构建它。

答案 2 :(得分:0)

Apple在iOS 11中使用PDFKit解决了该问题。

可以找到一个很好的介绍here

import PDFKit

@IBOutlet var pdfView: PDFView!

if let pdfDocument = PDFDocument(url: url) {
    pdfView.displayMode = .singlePageContinuous
    pdfView.autoScales = true
    pdfView.displayDirection = .horizontal
    pdfView.document = pdfDocument
}