问题标签 [ios-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 投票
1 回答
113 浏览

swift - Swift PDFKit - PDFAnnotation 按钮不显示文本

我正在尝试在 PDF 中快速构建目录。尽管显示了边界和背景颜色,但我的按钮没有显示任何文本。

最终我想点击一个链接到我的 Pdf 文档中的一个页面

0 投票
0 回答
119 浏览

swift - 快速替换 PDF 中的图像。如何获取页面中的图像位置?

我需要替换 aPDFDocument或中的图像CGPDFDocument

我找到了一种使用旧的 Core Graphics API(即不是 PDFKit)提取图像的方法。在这里

现在我想通过替换现有图像来制作 PDF 的副本。如何获取源 PDF 中现有图像的宽度/高度和坐标?

PDF太复杂了。

谢谢!

0 投票
0 回答
22 浏览

ios-pdfkit - 在 iOS PDFKit 中应用编辑注释

使用 Apple PDFKit,我可以使用以下代码编辑 PDF 页面的某个区域:

这会在 PDF 页面上创建一个黑色的编辑方块,看起来很棒,但该方块可以在其他 PDF 编辑器中编辑,并且很容易删除。我想正确删除已编辑的内容。

PDF 1.7 规范第 12.5.6.23 章将修订指定为两步过程:

a) 内容识别。用户应用指定应删除的内容片段或区域的编校注释。在执行下一步之前,用户可以查看、移动和重新定义这些注释。

b) 内容删除。用户指示查看器应用应用编校注释,之后删除编校注释指定的区域中的内容。在已删除内容的位置,会出现一些标记,表明该区域已被编辑。此外,编辑注释将从 PDF 文档中删除。

如我所见,我已经完成了第一步,但是我可以在 PDFKit 中“应用编辑”吗?

0 投票
1 回答
167 浏览

ios - Swift PDFKit:与 PDFView.currentDestination 和 PDFView.go 不一致的行为(到目的地:PDFDestination)

注意:这个问题暂时还没有解决;标记的答案提供了一个很好的解决方法 - 它在应用程序仍处于打开状态时工作。仍然欢迎回答!

背景

我目前正在开发一个包含 full-screen 的应用程序,PDFView我希望程序在视图被关闭之前记住文档中的位置,以便用户可以在他们离开的地方找到。

执行

该应用程序的简化版本可以理解为使用PDFKit.PDFView. 故事板由一个连接到 PDFView 类的 UIView 组成DocumentView(符合UIViewController)。视图通过以下过程初始化:

viewDidLoad

viewWillDisappear

问题与测试

我意识到代码没有按预期工作;视图不会返回到之前的位置。

通过调试,我意识到这可能是由于 and 的行为不一致造成DocumentView.go(to destination: PDFDestination)DocumentView.currentDestination

为确保在存储位置时不会因错误而引入错误,以下代码用于验证问题,并带有多页文档:

viewDidLoad

预期和观察到的行为

预期:文档的位置不应该改变 - 代码每 1 秒到达其当前目的地,这应该没有任何影响。因为“currentDestination”应该是“文档的当前目的地,每个文档”)

Observed:在执行时,页面会自发地向下滚动一个固定的偏移量。

在 iPadOS 14.5 模拟器和 iPadOS 15 iPad Air(第 4 代)上观察到了相同的结果。

可能出了什么问题?

如果有人可以提供帮助,那就太好了。

干杯,林肯

这个问题最初是在一周前发布在苹果开发者论坛上的;一个多星期没有收到任何回复,所以我想我可以在 StackOverflow <3 上试试运气

0 投票
1 回答
76 浏览

ios - 如何使用 PDFKit IOS 在 Swift 中检测 PDF 页面的方向

我正在尝试获取 PDF 文档的方向属性。目的是,我想在取决于 PDF 文档方向的位置添加一个按钮小部件。

例如:

如果文档处于横向模式,这是我想添加的功能:

我从Apple 的文档网站获得了示例项目。我查看了以前的类似问题,但似乎这是在 Objective C 中。

我将不胜感激在这件事上的帮助。

0 投票
0 回答
100 浏览

swift - 尽管在 PDFView 中正确显示,但自定义 PDFPage 绘图不会保存到文件

我正在尝试将自定义绘图添加到 MacOS 中的 PDF 文档。(部署目标是 Big Sur 11.3)。我复制了 Apple 的 Custom Graphics iOS 示例代码 ( https://developer.apple.com/documentation/pdfkit/custom_graphics ),在此处根据 ebner 的 MacOS 代码对其稍作修改:如何在 PDF 文件上保存水印并导出到桌面 macOS莫哈韦。我在下面粘贴了我的代码。

问题:我的代码在每个页面上生成一个带有预期自定义绘图的 PDFView。然后它成功地将 pdf 保存到我计算机的文档文件夹中。我添加的任何 PDFAnnotations 都会被保存。draw(with:to:)关于PDFPage 子类中的重写方法,原始页面(使用绘制的)被super.draw(with:to:)保存,但此方法中的任何其他绘制都不会被保存。

我使用 Mac Catalyst 尝试了 Apple 的示例代码。它按预期工作,但我不想将 Mac Catalyst 用于我的应用程序。

如果有帮助,以下两行在设置委托之后但在保存文档之前放置(请参阅下面的代码注释位置),在示例代码和我的版本中产生不同的结果。示例代码的 PDFView 显示自定义绘图,而我的代码没有。

我在这里做错了什么有什么解释吗?感谢您的任何帮助!

其他注意事项:

  • 一旦 PDFDocumentwrite(to:)被调用,PDFPage 子类draw(with:to:)就会在每个 PDF 页面被调用一次。正如预期的那样,super.draw(with:to:)在此方法中删除会保存一个空白文档,除了任何 PDFAnnotations。
  • 我已经成功保存了使用 CGContext 和 PDFPage's 创建的 PDF 文档draw(with:to:),类似于 rob mayoff 在此处的回答:Draw on a PDF using Swift on macOS。但是,我正在尝试测试自定义页面绘图是否可以产生更小的最终文件大小(完整的细节可能与此处无关)。

完整代码:

0 投票
1 回答
84 浏览

ios - 修改 PDF iOS 时会覆盖图像

我有一个允许用户在 PDF 上绘图的应用程序。用户的绘图被保存为图像,然后添加到现有的 PDF 中。我遇到的问题是用户已经绘制了 2 张图像。出于某种原因,保存第三张图像会导致第二张图像被第一张覆盖。下面是一个例子。

PDF 示例:

在此处输入图像描述

上面的PDF应该是First、Second、Third;但是,第二张图像被第一张覆盖了。

下面是我将图像嵌入 PDF 的代码。注意我也用 PDFKit 尝试过这个并且遇到了同样的结果:

注意:我似乎只在 iOS 15 上遇到这个问题。在 iOS 14 上运行相同的代码就像一个魅力。

我应该认为这是 iOS 15 上的错误,还是我遗漏了什么?

提前致谢!

0 投票
0 回答
74 浏览

swift - 注释而不是在 PDFView 中选择文本

我正在编写一个允许创建注释的 PDF 查看器。我已经想出了如何创建跨越当前选定文本的(标记)注释:

但我想允许用户通过选择它来选择一个工具和标记文本。到目前为止,我已经想到了两种方法:

  • 我想知道我是否可以子类PDFView化并以某种方式捕获选择文本时触发的事件/手势。
  • 我也想用UIPanGestureRecognizer它来识别“选择”,但我需要禁用默认选择,或者以某种方式重新设置它的样式。

我对 UIKit 不太熟悉,所以我希望有人能指出我正确的方向:D

0 投票
0 回答
51 浏览

ios - 缩放时设备上的 iOS PDFKit 内存峰值

我在具有捏合手势识别器的容器视图中有一个 PDFView。当我放大真实设备时,内存逐渐达到 2-3 GB 并崩溃。在 100 页样本 pdf 上,模拟器内存​​甚至不会超过 20mb。似乎是什么问题?

CustomPDFView 是一个简单的“无缩放”类

0 投票
0 回答
20 浏览

ios - iOS PDFKit 框架 - 如何检测加载的 PDF 表单中的签名字段

我可以使用 PDFKit 加载 PDF 表单。它检测表单中的所有文本字段/复选框、单选按钮。但它没有检测到签名字段。我应该如何处理这种情况?