使用 Swift 5 - PDFKit 在 iOS 中编辑和保存现有的 pdf 文档

Posted

技术标签:

【中文标题】使用 Swift 5 - PDFKit 在 iOS 中编辑和保存现有的 pdf 文档【英文标题】:Edit and save existing pdf documents in iOS using Swift 5 - PDFKit 【发布时间】:2020-05-16 19:56:21 【问题描述】:

我一直在尝试编辑现有的 pdf 文件并将其保存到设备。我尝试将编辑后的文件保存到与未编辑文件相同的位置。但无法保存文件。相反,我得到了像

这样的错误 尝试使用键保存字典:。字典键必须是字符串类型。 无法为键创建字典值:/DR。值无效。 无法保存注释键的值:/DR。类型无效。 尝试使用键保存字典:。字典键必须是字符串类型。

这是我的代码:

pdfView.document?.write(to: pdfView.document!.documentURL!)

如何使用PDFKit保存pdf文件中的修改?

【问题讨论】:

你好 Kaushik,你找到解决方案了吗,在我的情况下,我可以将数据保存在新文件中,但仍然在调试区域中收到错误消息 不,我没有。但我想我发现了一些东西。而不是覆盖文件,尝试删除旧文件并将新文件保存在该位置。同时我们的要求发生了变化,现在我只是使用“共享表”(UIActivityViewController)保存 pdf 文件(从服务器下载)。所以,基本上我还不知道如何解决这个问题。 【参考方案1】:

我想通了,我的 PDF 表单也有类似的问题。该表格最初是用word创建的,然后转换为PDF格式。 当我从头开始使用 Adob​​e Acrobat DC 创建 PDF 表单时,它在 PDF 视图保存中正确注释 PDF 而没有上述问题

【讨论】:

【参考方案2】:

这是保存 PDF 的代码:

pdfView.document?.write(toFile: "Path To Save the File.")

如果仍然无法保存更改,请重新检查保存 pdf 的路径。

我认为,在同一个文件夹中,你不能创建两个同名的文件。

在这种情况下,这是因为旧文件正在被新文件替换。

【讨论】:

【参考方案3】:

试试这个,也许能解决你的问题

if let data = pdfDocument?.dataRepresentation()

    
    let paths = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)
    let documentsDirectory = paths[0] // Get documents folder
    let folderPathUrl = URL(fileURLWithPath: documentsDirectory).appendingPathComponent("samplePdf.pdf")
    if FileManager.default.fileExists(atPath: folderPathUrl.path)
        try? FileManager.default.removeItem(at: folderPathUrl)

    
    try? data.write(to: folderPathUrl)


【讨论】:

以上是关于使用 Swift 5 - PDFKit 在 iOS 中编辑和保存现有的 pdf 文档的主要内容,如果未能解决你的问题,请参考以下文章

使用 PDFKit Swift (ios)/Capacitor 加载 PDF 而不下载文件

PDFKit - PDFThumbnailView 跳过页面而不是显示连续页面 - swift

如何在pdfkit swift中添加圆形注释?

Swift PDF 渲染任何 UIView 或 UIViewController PDFKit

在 iOS 上使用 PDFKit.PDFView 打开 PDF

如何在 PDFView (swift PDFKit) 中注释圆角填充图像