SwiftUI 使用 PDFKit 将 PDF 保存到远程文件

SwiftUI save PDF to files from remote using PDFKit

我尝试使用 ActivityViewController 从 link 保存 PDF 文件,方法是单击 保存文件 使用 PDFKit。但我发现我的文件由于某种原因出现的问题 filename.txt

下面提供了 documentsView,它显示了文档的列表。 通过单击 SAVE,启动 saveAction,其中包含 documentName 和 URL

private var documentsView: some View{
        Group{
            Section(header: CustomHeaderView(title: sectionTitle)) {
                ForEach(viewModel.documents, id: \.self){ document in
                    VStack(spacing: 7){
                        DocumentRow(title: document.title ?? "", action: { saveAction(for: document) })
                    }
                }
                .sheet(isPresented: $isSavePresented){
                    ActivityViewController(activityItems: ["MyFileName" , pdfDocument])
                }
            }
        }
    }

private func saveAction(for document: PolicyDocument){
    guard let url = document.uRL else { return }
    guard let urlObject = URL(string: url) else { return }
    if let doc =  PDFDocument(url: urlObject){
        pdfDocument = doc
        isSavePresented.toggle()
    }
}

struct ActivityViewController: UIViewControllerRepresentable {
var activityItems: [Any]
var applicationActivities: [UIActivity]? = nil

func makeUIViewController(context: UIViewControllerRepresentableContext<ActivityViewController>) -> UIActivityViewController {
    let controller = UIActivityViewController(activityItems: activityItems, applicationActivities: applicationActivities)
    return controller
}

func updateUIViewController(_ uiViewController: UIActivityViewController, context: UIViewControllerRepresentableContext<ActivityViewController>) {}

}

已解决

通过添加 .dataRepresentation()! 到 pdfDocument

通过将 .dataRepresentation() 添加到文件本身来解决。与守卫一起做了,只是在下面发布示例...

示例:

.sheet(isPresented: $isSavePresented){
      ActivityViewController(activityItems: ["MyFileName" , pdfDocument.dataRepresentation()!])
}