问题标签 [apple-pdfkit]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
84 浏览

swift - 使用 Swift PDFKit 的 PDF 大小膨胀

我使用 Apple 的基本 PDF 框架在 Swift for MacOS 中编写了一个小型 PDF 合并应用程序。基本策略是获取 PDF 文件列表,然后遍历第 2 到第 n 个文件的页面,将它们中的每一个附加到第一个文件的末尾。核心功能是以下代码:

这大部分工作正常,我自己也经常使用它(每隔一段时间,我就会遇到一个神秘的崩溃,我还没有费心去弄清楚如何修复,但我今天不问这个问题)。

但有时它似乎过度膨胀生成的合并文件的文件大小。例如,今天早上我用它来合并我下载的电子书的章节。各个章节的总大小约为 165mb。然而,在使用我的应用程序合并它之后,我最终得到了一个超过 500mb 的文件(!!!)。

当我尝试了众多 PDF 合并网站之一时,我最终得到了一个更合理的低于 200mb 的文件。

那么,有人可以帮我弄清楚我做错了什么吗?

更新

经过更多的工作,我开始认为这里的问题是苹果内部的。特别是,我使用与以前相同的 PDF 合并服务制作了不同的合并 PDF(如果有人好奇,它是 smallpdf.com)。结果不到 40MB。然后我在当前版本的 Preview(内置于 MacOS 10.15.6)中编辑了该 pdf,删除了几页并重新保存。重新保存的文件,我只删除了数据,大约有 80MB。

因此,无论出于何种原因,无论是在我的代码中还是在 Apple 自己的代码中,Apple 处理编写 PDF 的文件似乎都比原本可能的文件大小增加了一倍。

0 投票
1 回答
137 浏览

cocoa - PDFDocument 可能存在的编码问题

我在 Mac 应用程序(Xcode 11.7、10.15 部署目标)中使用 PDFKit 来查看 pdf。用户可以突出显示选择并复制文本或创建引号。

对于某些 pdf,我无法获得正确的突出显示字符串内容。

获取以下 pdf:https ://www.irs.gov/pub/irs-pdf/iw8bene.pdf 。例如,如果它在预览中打开,则可以将内容复制并粘贴到 TextEdit 中。

如果我用 PDFView 打开这个 pdf,只能复制和粘贴一些文本(例如主标题),但正文只粘贴复制的空格!我没有自定义代码来处理我的 PDFView 上的副本。

如果我在突出显示文档时评估当前的 PDFSelection,我会在字符串中得到空格和无意义的字符:

示例结果:

不管有什么问题,标准的复制代码也违反了它,所以也许我缺少 PDFView 或 PDFDocument 上的一些设置问题?我只需在 Interface Builder 中创建一个 PDFView,然后打开一个带有 URL 的 PDFDocument 并将其设置在视图上。

0 投票
1 回答
345 浏览

swift - 如何在 PDFView 中移动 PDFPage 上的 PDFAnnotation?

我正在使用 PDFKit 并且类似于 Apple Preview App,在添加 PDF 注释时,我希望用户能够在页面上移动它们。我在 Github 上创建了一个示例项目

我尝试子类化 PDFView 并覆盖func mouseDown(with event: NSEvent)and func mouseDragged(with event: NSEvent)。我可以分享该代码,但我有一种直觉,我正朝着错误的方向前进。(我想我无法让该代码工作的事实证实了这种感觉......)

编辑:我已将以下代码添加到我的 PDFView。它可以工作,但不能优雅地工作。它不像预览应用程序的工作方式那样流畅。只是想在这里学习,所以也许有人有更好的方法?

0 投票
0 回答
127 浏览

swift - 如何在 PDFPage 中调整大小或移动 PDFAnnotation?

我正在使用 PDFKit (Swift) 开发一个 PDF 应用程序。我已经成功实现了使用 PDFAnnotation 子类型 Ink 将绘图添加到 PDF 文件中的功能。现在,下一步是使 PDFAnnotation 可在 PDF 页面内调整大小和移动。如何将触摸或手势功能添加到 PDFAnnotation 中,以便可以根据用户要求调整 PDFAnnotation 的大小或移动。看图片

0 投票
0 回答
261 浏览

ios - 使用 PDFKit Swift 在 pdf 中的上一页上添加图像后插入空白页

使用 PDFKit 在 pdf 中插入空白页时遇到问题。当 pdf 上有图像从图库导入或从相机捕获时。然后我们在那个pdf上添加一个空白页面,当时页面非常小。它不是 A4 尺寸。在这里我会发布代码。我还将发布我实际遇到的问题的屏幕截图,请参考它并提供可能的解决方案。在屏幕截图中,我添加了 2 个空白页在此处输入图像描述

0 投票
0 回答
131 浏览

ios - 如何使用 PDFKit (Swift) 旋转 PDFAnnotation?

我正在使用 swift 开发 PDF Kit。我想旋转 PDFAnnotation。有没有办法旋转 PDFAnnotation?我正在尝试使用以下代码,但未能成功获得所需的结果。

请查看附图以了解我的要求

0 投票
0 回答
87 浏览

swift - 从属性字符串创建 pdf 失败

我正在尝试构建一个通用类来在 macOSiOS 中创建 pdf 文件(这就是为什么不能使用 usingUIGraphicsPDFRenderer原因)。为了跨平台兼容,我必须坚持使用 Apple 的PDFKit.

当前创建 pdf 失败并出现我不明白的错误:

这在 macOS 和 iOS 上运行时会出现(后者仅CG_PDF_VERBOSE在运行方案中设置了环境变量时才奇怪......)

我正在尝试使用PDFDocument(data:). 现在,我知道根据这个 init 的文档“数据必须是封装在 NSData 对象中的 PDF 数据;否则此方法返回 NULL。” - 但据我所知,这就是我正在尝试的(我希望有人会证明我错了……)。

这是代码:

0 投票
0 回答
67 浏览

ios - Swift PDFKit:复选框外观

我正在尝试以编程方式编辑 PDF。我有许多复选框。使用预览,如果用户单击这些按钮之一,整个按钮将被填充为黑色,如下所示:

正确填写的复选框

但是,当我以编程方式设置按钮状态时,我的 PDF 查看器(PSPDFKit 的 PDF 查看器)会显示复选标记(您可以忽略蓝色背景):

不正确:复选标记

我设置注释状态的代码很简单:

还有什么我需要在某个地方设置的吗?

0 投票
1 回答
44 浏览

cocoa - 如何防止 PDFKit/NSImage 中的渲染伪影?

我正在尝试在 macOS 上创建一个工具来光栅化存储在 PDF 文件中的矢量图像,但生成的图像在某些形状的边缘周围包含伪影。另一方面,Preview.app 总是完美地呈现 PDF,如下例所示:

示例结果

我试过了:

  • draw(with:to:)使用 PDFKit 加载 PDF 文档,并使用两者呈现页面thumbnail(of:for:)
  • 将 PDF 文档加载到一个NSImage(创建一个NSPDFImageRep)中,并使用cgImage(forProposedRect:context:hints:)

在这两种情况下,我都会得到这些类似混叠的伪影,如上图左侧所示。PDF 文件不在我的控制范围内,因此无法更改以修复它可能存在的任何问题。出于性能原因,我目前正试图从 Cairo(正确渲染)迁移到 Apple 的 PDF 渲染(PDFKit 渲染它的速度要快得多,尽管有这些工件)。

有什么我错过的可以修复输出的吗?

0 投票
0 回答
86 浏览

swift - 使用 PDFKit 将 .docx 转换为 .pdf 返回 nil。SwiftUI、PDFKIT

我正在尝试在 Swift (macOS) 中将 .docx 转换为 .pdf。要转换我使用 PDFKit 的文档。不知何故 PDFDocumentnil会一直返回。有人可以帮我一个简单的解决方案吗?

谢谢!