type
status
date
slug
summary
tags
category
icon
password

PdfToy(PT) | PDF/PDG 处理软件

PdfToy(PT)是一款功能强大的 PDF 处理软件,拥有独特的功能如将 PDF 转换回 PDG、使用正则表达式进行内容替换等。此外,它还具备无损导出图像、批量检查 PDF 文件损坏、统一页面宽度和解密口令保护的 PDF 等特色功能。这些功能使得 PT 成为处理 PDF 文件的理想选择。
💡
PDG(Portable Document Group) 一种用于描述电子文档的文件格式,主要用于存储扫描的纸质文档,如书籍、杂志等。
PT 里的功能大致可以分为以下三类:

一、独一无二的功能

这类功能由于思路独特、技术小众,所以目前除了 PT 外,我(本文中所有“我”为老马)还没有见过其他软件具备,包括:

1.将 Pdg2Pic 转换的 PDF,再转回 PDG

如果原 PDG 是单层的 PNG、JPG,实际上许多软件的“图像导出”功能也可以导出。但如果是单层的纯黑白图像,其他软件由于不掌握 PDG 版的纯黑白图像编码技术,所以只能导出为 TIFF、PNG 等(将纯黑白图像存储为 JPG 的,不是愚蠢就是恶劣),需要通过 PdgRenamer 处理一遍才能转换成 SSREADER 能够直接打开的标准 00H 版 PDG。而 PT 由于掌握了该项编码技术,可以直接导出 00H 版 PDG 文件,无需在 PdgRenamer 里处理。感谢 coolman 无私提供的技术!
D 版 PT 太古老了,当时我还没有掌握 PDG 版的纯黑白图像编码技术,所以将纯黑白图像转换为 DjVu 文件,再加上一个 PDG 头,懂行的人会觉得很奇怪。
如果原图是文字处理为纯黑白、插图分片处理成灰度、彩色图像的复合型 PDG(在 PdgPic 里显示为 T3 类型),那么目前其他任何软件都无法导出完整的 PDG,只能用 PdfToy。

2.使用正则表达式对 PDF 文件内容进行替换

喜欢这个功能的人非常喜欢,甚至有人认为这个功能无所不能;讨厌这个功能的人也非常讨厌,甚至认为这个功能是个陷阱。为了使用这个功能,我(本文中所有“我”为老马)不知道翻阅了多少遍《PDF Reference》。
当年与国外某 PDF 软件开发商讨论这个功能时,他直接说我开发这个功能是在打开潘多拉的盒子,所以我相信过去、现在和将来,都不会有哪家严肃的软件公司会开发出竞品。
当年我在 readfree 论坛写了 20 多篇 PT 教程,其中大部分都与这个功能有关,包括使用这个功能去除水印、将图像变为透明、修复损坏的 PDF 等,论坛复活后,所有教程都还在。
💡
正则表达式 正则表达式是一种用于描述和匹配字符串模式的语言,广泛应用于文本处理、搜索和替换等任务。

二、靠特色吃饭的功能

这类功能其他软件也有,但并非 PT 独有,但 PT 能够做到“一招鲜”的程度,包括:

1.无损导出 PDF 中的图像

能导出 PDF 中图像的软件很多,但如果导出前要求你自己选择需要统一导出成什么格式,而不是软件根据图像特征自动选择最合适的图像格式,那我劝你尽快删除这样的软件,因为它们无法实现无损导出。
对于 JPG 等有损压缩图像,如果是常规的图像,实际上不少软件(包括开源软件)也能无损导出。但如果加入一些特殊处理,如 ICC 色彩校正、CMYK 反色、alpha 通道透明图像等,那就到了考验技术的时候了。有些东西试过才知道。
💡
无损导出 指在导出过程中不改变原始文件的内容和质量,确保导出后的文件与原文件在内容和质量上保持一致。

2.批量检查 PDF 文件是否损坏

这个功能大家都需要,但能做好的软件并不多。PT 中采用两种方法进行检查:
  • 仅检查文件结构。好处是速度快,缺点是只检查 PDF 文件结构是否完整,忽略了 PDF 内部数据可能存在的问题,因此可能存在漏检。
  • 使用 UnicornViewer(UV)中的 PDF 引擎,在内存中对 PDF 逐页进行解码、模拟显示(术语是“渲染 render”),从而检查 PDF 内部数据是否有误。换句话说,用这个功能检查不报错的,至少用 UV 查看时不会出问题。
💡
UnicornViewer(UV) UnicornViewer(UV)是一个 PDF 阅读和处理引擎,用于在内存中对 PDF 文件进行解码、渲染和显示。

3.批量统一 PDF 页面宽度

在 Acrobat 里查看 PDF 时,页面宽度不一致确实令人烦恼。我(本文中所有“我”为老马)也见过其他能够统一 PDF 页面宽度的软件,但它们采用的是“重新制作”的技术路线,即创建一个新的 PDF,将新 PDF 的页面大小设置为统一尺寸,然后将原 PDF 解码后,重新灌入新 PDF。简单来说,就是虚拟打印技术,只是没有打印驱动。
这种技术的缺陷与虚拟打印技术相似:速度慢,转换过程中可能出现损失,遇到软件无法解码的 PDF 文件内容也会出现问题。
💡
虚拟打印 一种将文件转换为另一种格式(如 PDF)的过程,通常通过模拟打印驱动程序来实现。这种方法可能会导致文件质量损失和速度较慢。
PT 可以直接操作 PDF 文件内容流(正则表达式替换的副产品),因此采用了独特的技术路线:直接更改页面描述部分的页面尺寸参数,然后在页面内容流最前面插入一个比例变换矩阵,实现页面缩放。
所以:
1. 不会对原页面内容进行其他修改,不会出现损失,完全是无损。 2. 不对页面内容流之外的内容进行解码,因此 PDF 的其他部分采用何种编码、压缩也无所谓。

4.批量解密使用口令保护的 PDF

这类软件也很多,但 PT 在解密时,还可以顺便进行 web 优化、页面布局等处理。

三、一般性功能

包括PDF转图像、PDF页面裁剪等。

QA对

Q:PdfToy(PT)中独一无二的功能有哪些?

A:PT 中独一无二的功能包括将 Pdg2Pic 转换的 PDF 再转回 PDG,以及使用正则表达式对 PDF 文件内容进行替换。这些功能在其他软件中很难找到,因为它们需要独特的思路和技术。

Q:使用正则表达式对 PDF 文件内容进行替换的优点是什么?

A:使用正则表达式对 PDF 文件内容进行替换的优点在于可以实现高度灵活和强大的文本处理功能,如去除水印、将图像变为透明、修复损坏的 PDF 等。但同时,这个功能可能会被一些用户认为是陷阱,因为它需要深入了解 PDF 技术和正则表达式的使用。

Q:无损导出 PDF 中的图像是如何实现的?

A:无损导出 PDF 中的图像是通过直接操作 PDF 文件内容流,而不是采用虚拟打印技术。这样可以确保图像质量不受损失,同时避免了转换过程中可能出现的问题。

Q:批量检查 PDF 文件是否损坏的方法有哪些?

A:批量检查 PDF 文件是否损坏的方法有两种:
1. 仅检查文件结构,这种方法速度快,但可能存在漏检;
2. 使用 UnicornViewer(UV)中的 PDF 引擎,在内存中对 PDF 逐页进行解码、模拟显示,从而检查 PDF 内部数据是否有误。

Q:批量统一 PDF 页面宽度的方法是什么?

A:批量统一 PDF 页面宽度的方法是直接操作 PDF 文件内容流,更改页面描述部分的页面尺寸参数,并在页面内容流最前面插入一个比例变换矩阵,实现页面缩放。这种方法无损且高效。

Q:批量解密使用口令保护的 PDF 的功能如何实现?

A:批量解密使用口令保护的 PDF 功能是通过直接操作 PDF 文件内容流进行解密,同时还可以顺便进行 web 优化、页面布局等处理。

参考资料:

Search4All | 开源的 AI 搜索平台Pytest 测试你的代码 | 非常流行的 Python 测试框架
Loading...