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()!])
}
我尝试使用 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()!])
}