【问题标题】:How to present a single page pdf document in PDFView so that the document is centred and fully presented?如何在 PDFView 中呈现单页 pdf 文档,使文档居中并完整呈现?
【发布时间】:2019-02-25 17:28:06
【问题描述】:

我有一个应用程序,它拍摄文档的照片,然后在新 UIViewController 中的 PDFView 中呈现为 pdf。我遇到的问题是,当呈现 pdf 文档时,它有些放大,默认情况下 PDFView 不显示文档的完整轮廓。我该如何做到这一点?

class ShowPDFViewController: UIViewController{

@IBOutlet weak var pdfPreview: PDFView!
var pdfDocument: PDFDocument!


    override func viewDidLoad() {
        super.viewDidLoad()

        // PRESENT PDF DOCUMENT JUST CREATED
        pdfPreview.document = pdfDocument
        pdfPreview.autoScales = true

    }
}

这是 pdf 文档当前默认呈现的方式 - 通常是缩放的:

这就是我希望文档默认呈现的方式 - 文档的完整大纲参见:

【问题讨论】:

    标签: ios swift pdfview ios-pdfkit


    【解决方案1】:

    修复pdfView.displayMode = .singlePageContinuous

        override func viewWillAppear(_ animated: Bool) {
            super.viewWillAppear(animated)
            DispatchQueue.main.async {
                self.pdfView.subviews.forEach {
                    guard let scrollView = ($0 as? UIScrollView) else { return }
                    scrollView.setContentOffset(.zero, animated: false)
                }
            }
    
        }
    

    【讨论】:

      【解决方案2】:

      我有个主意。 您可以创建一个 ScrollView ,将 PDFView 添加到其中。把它们放到控制器上。 您可以根据需要更改 ScrollView.contentOffset

      【讨论】:

        【解决方案3】:

        我通过以下方式从代码创建视图并且它可以工作(左侧和右侧与超级视图左右对齐,并且高度被缩放以适应)

        var pdfView = PDFView(frame: view.frame)
        pdfView.document = PDFDocument(url: Bundle.main.url(forResource: "doc"
            , withExtension: "pdf")!)
        
        pdfView.displayMode = .singlePage
        pdfView.autoScales = true
        
        view.addSubview(pdfView)
        

        【讨论】:

        • 完美。正是“displayMode”singlePage 做到了这一点。谢谢
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-11-19
        • 2011-06-12
        • 1970-01-01
        • 1970-01-01
        • 2018-12-01
        • 2015-08-24
        相关资源
        最近更新 更多