iOS swift开发--- 加载PDF文件并显示内容

iOS开发采用pdfkit ,可以很方便的读取pdf的内容。以下是简易的显示pdf内容的代码

Swift 复制代码
import UIKit
import PDFKit
 
 
class ViewController: UIViewController, UIDocumentPickerDelegate {
 
    var pdfView: PDFView!  //创建一个控件显示内容
    
    let selectPDFButton = UIButton(type: .system)  //点击按钮选择打开pdf文件
 
   
    override func viewDidLoad() {
        super.viewDidLoad()
        view.backgroundColor = .white

        selectPDFButton.setTitle("Select PDF", for: .normal)
        selectPDFButton.addTarget(self, action: #selector(selectPDF), for: .touchUpInside)
        selectPDFButton.translatesAutoresizingMaskIntoConstraints = false

        view.addSubview(selectPDFButton)
        pdfView = PDFView()
        pdfView.backgroundColor = .red
        pdfView.translatesAutoresizingMaskIntoConstraints = false
        view.addSubview(pdfView)

 
        selectPDFButton.topAnchor.constraint(equalTo: view.topAnchor, constant: 120).isActive = true
        selectPDFButton.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 20).isActive = true
        selectPDFButton.widthAnchor.constraint(equalToConstant: 100).isActive = true
        selectPDFButton.heightAnchor.constraint(equalToConstant: 50).isActive = true

        // 设置 pdfView 的约束
           pdfView.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 20).isActive = true
           pdfView.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: -20).isActive = true
           pdfView.topAnchor.constraint(equalTo: selectPDFButton.bottomAnchor, constant: 120).isActive = true
           pdfView.bottomAnchor.constraint(equalTo: view.bottomAnchor, constant: -20).isActive = true

 

        
    }
    

    @objc func selectPDF() {
   
        let documentPicker = UIDocumentPickerViewController(forOpeningContentTypes: [.pdf])
        documentPicker.delegate = self
        present(documentPicker, animated: true, completion: nil)
    }
    
 
    
    func documentPicker(_ controller: UIDocumentPickerViewController, didPickDocumentsAt urls: [URL]) {
        guard let url = urls.first else { return }
        selectedPDFURL = url
        
        // 请求安全范围内的资源访问,这个startAccessingSecurityScopedResource很关键,否则可能打不开文件
        guard url.startAccessingSecurityScopedResource() else {
            print("Failed to start accessing security-scoped resource.")
            showErrorMessage("Failed to access the selected file.")
            return
        }
        
        defer {
            url.stopAccessingSecurityScopedResource()
        }
        

        // 尝试加载 PDF 文档
            guard let pdfDocument = PDFDocument(url: url) else {
                // 如果无法加载 PDF 文档,打印错误信息
                print("Failed to load PDF document at URL: \(url)")
                showErrorMessage("Failed to load PDF document.")
                return
            }
        print("load PDF document  success ")
        pdfView.document = pdfDocument
        pdfView.autoScales = true
        pdfView.layoutSubviews()
     
        print("load PDF document  success ")
        // 可以在这里显示一些提示,告知用户文件已选择
        let alertController = UIAlertController(title: "Info", message: "PDF file selected successfully.", preferredStyle: .alert)
        alertController.addAction(UIAlertAction(title: "OK", style: .default, handler: nil))
        present(alertController, animated: true, completion: nil)
        
    // 显示 PDF 文件
   
    }
    
    private func showErrorMessage(_ message: String) {
            let alertController = UIAlertController(title: "Error", message: message, preferredStyle: .alert)
            alertController.addAction(UIAlertAction(title: "OK", style: .default, handler: nil))
            present(alertController, animated: true, completion: nil)
        }
        
        private func showSuccessMessage(_ message: String) {
            let alertController = UIAlertController(title: "Success", message: message, preferredStyle: .alert)
            alertController.addAction(UIAlertAction(title: "OK", style: .default, handler: nil))
            present(alertController, animated: true, completion: nil)
        }

    
}
相关推荐
Java面试题总结8 小时前
基于 Java 的 PDF 文本水印实现方案(iText7 示例)
java·python·pdf
傻啦嘿哟10 小时前
Python操作PDF页面详解:删除指定页的完整方案
开发语言·python·pdf
徐同保13 小时前
通过ip访问nginx的服务时,被第一个server重定向了,通过设置default_server解决这个问题
ios·iphone
2501_9159184118 小时前
在 iOS 环境下查看 App 详细信息与文件目录
android·ios·小程序·https·uni-app·iphone·webview
m5655bj19 小时前
使用 C# 修改 PDF 页面尺寸
java·pdf·c#
2501_9160074719 小时前
没有 Mac 用户如何上架 App Store,IPA生成、证书与描述文件管理、跨平台上传
android·macos·ios·小程序·uni-app·iphone·webview
geovindu19 小时前
python: 简单提取PDF文档内文字
开发语言·python·pdf
m0_6948455719 小时前
HandBrake 是什么?视频转码工具使用与服务器部署教程
服务器·前端·pdf·开源·github·音视频
夏幻灵1 天前
HTTPS全面解析:原理、加密机制与证书体
ios·iphone
TheNextByte11 天前
如何在iPhone上恢复已删除的笔记的综合指南
笔记·ios·iphone