【问题标题】:PDF Editor/ Draw on PDF in SwiftUIPDF 编辑器/在 SwiftUI 中绘制 PDF
【发布时间】:2021-03-05 09:41:14
【问题描述】:

我正在寻找在 SwiftUI 应用中查看和编辑 PDF 文件的解决方案。最重要的是,应该赋予签名 PDF/ 以在其上绘图的功能。有没有办法做到这一点?我是 Swift 开发的新手,所以我正在同时学习 SwiftUI / UIKit。结果,我很难在 SwiftUI 中为 UIKit 代码编写包装器。我的代码可以显示 PDF 但目前无法编辑:

import Foundation
import SwiftUI
import UIKit
import PDFKit


struct PDFKitView: View {
    var url: URL
    var body: some View {
        PDFKitRepresentedView(url)
    }
}

struct PDFKitRepresentedView: UIViewRepresentable {
    let url: URL
    
    init(_ url: URL) {
        self.url = url
        
    }

    func makeUIView(context: UIViewRepresentableContext<PDFKitRepresentedView>) -> PDFKitRepresentedView.UIViewType {
        let pdfView = PDFView()
        
        pdfView.document = PDFDocument(url: self.url)
        pdfView.autoScales = true
        
        return pdfView
    }

    func updateUIView(_ uiView: UIView, context: UIViewRepresentableContext<PDFKitRepresentedView>) {
        // Update the view.
    }
}

【问题讨论】:

    标签: ios swift pdf swiftui uikit


    【解决方案1】:

    我已经找到了解决方案。我使用了 GitHub 上 ClassicalDude 的 PDFFreedraw Repo。这是一个实施良好的开源解决方案。然后我可以为这样的 swift UI 编写一个包装器。

    https://github.com/ClassicalDude/pdfView-Freedraw

    Example Screenshot

    import Foundation
    import SwiftUI
    import UIKit
    import PDFKit
    
    
    struct PDFKitEditorView: View {
        var url: URL
        var body: some View {
            PDFKitEditorRepresentedView(url)
                .ignoresSafeArea(.all)
                .navigationBarHidden(true)
        }
    }
    
    struct PDFKitEditorRepresentedView: UIViewControllerRepresentable {
        
        let url: URL
        
        init(_ url: URL) {
            self.url = url
        }
        
        func makeUIViewController(context: Context) -> UIViewController {
            
            let storyboard = UIStoryboard(name: "MainPDFView", bundle: Bundle.main)
            let controller = storyboard.instantiateViewController(withIdentifier: "PDFViewControllerID") as? PDFViewController
            controller!.url = self.url
            
            return controller!
        }
        
        func updateUIViewController(_ uiViewController: UIViewController, context: Context) {
            
        }
        
       
    }
    

    【讨论】:

      猜你喜欢
      • 2021-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-19
      • 1970-01-01
      • 2011-06-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多