ios – 使用Apple的PDFKit框架更改PDF格式的文本

ios – 使用Apple的PDFKit框架更改PDF格式的文本,第1张

概述我知道在Apple的PDFKit中我可以获得’string’,它返回一个表示页面上文本的NSString对象. https://developer.apple.com/documentation/pdfkit/pdfpage?language=objc 有没有办法更改PDF中的文本?如果没有,您如何建议我去了解如何编辑PDF中的文本?谢谢! 要了解您的真实问题,您需要了解有关PDF如何工作的更多信 我知道在Apple的pdfKit中我可以获得’string’,它返回一个表示页面上文本的Nsstring对象.
https://developer.apple.com/documentation/pdfkit/pdfpage?language=objc

有没有办法更改pdf中的文本?如果没有,您如何建议我去了解如何编辑pdf中的文本?谢谢!

解决方法 要了解您的真实问题,您需要了解有关pdf如何工作的更多信息.
首先,pdf更像是(绘图,渲染)指令的容器而不是内容容器.

有两种pdf版本.标记和未标记.标记pdf本质上是一种普通的pdf文档,它是一种树状数据结构,可以告诉您文档的哪些部分构成了哪些逻辑元素.

与包含逻辑结构的HTML相比,标签标记段落,列表中的项目符号,表格中的行等.

如果你有一个未标记的文档,你基本上只剩下裸露的渲染说明

go to position 50,50
set Font to Arial
set Font color to 0,color-space to grayshades
draw the glyph for ‘H’
go to position 60,50
draw the glyph for ‘e’

像这样的指令被收集到对象中.对象可以收集到流中.流可以被压缩.指令和对象不需要以任何逻辑顺序出现.

拥有对象意味着您可以重用某些东西.就像在公司信笺的每一页上绘制图像一样.或者像’使用对象456中的字体’这样的指令.

为了能够使用这些对象,每个对象都有一个数字.对象的映射,它们的数量以及文件中的字节偏移量都存储在文档的后面.这称为XREF表.

xref
152 42
0000000016 00000 n
0000001240 00000 n
0000002133 00000 n
0000002296 00000 n
0000002344 00000 n
0000002380 00000 n
0000002551 00000 n

现在,回到你的问题.
假设您通过单词’cats’更改单词’dog’.

你会遇到几个问题:

>文档中的每个字节偏移突然错误,因为’cats’包含4个字节,’dog’包含3个字节.
>找不到任何对象,所有指令都出错了
>如果在任何时候您的替换导致文本偏离对齐太远,则需要再次执行布局.

为什么布局会出现这样的问题?

请记住我之前所说的仅包含渲染说明的pdf.从原始指令重构诸如段落边界或表格,列表等之类的东西是非常困难的.

特别是如果你想为其他脚本做这个,而不仅仅是拉丁文字(想象希伯来语或阿拉伯语).或者,如果您的页面布局是非标准的(如科学文章,它出现在列而不是占据整个页面的行中.)

结构识别实际上是正在进行的研究的主题.

总结

以上是内存溢出为你收集整理的ios – 使用Apple的PDFKit框架更改PDF格式的文本全部内容,希望文章能够帮你解决ios – 使用Apple的PDFKit框架更改PDF格式的文本所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1020264.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存