简体中文

文档 · PDF 工具包

转换 PDF 实际上意味着什么:光栅化与重新编码

· 背景

pdf 图像转换 光栅化

矢量 PDF 页面变成像素,图像变成 PDF 页面
原始 ToolAcre 矢量图

“转换”涵盖了非常不同的操作:将页面绘制为像素、将图像包装在页面中或重建可编辑文本。这篇文章解释了每个转换所涉及的内容,以及为什么有些转换是精确的,而另一些则是近似值。

丢失文本的“转换”文件 - 为什么无法再搜索或选择变成图像的页面

转换后的页面可能看起来相同,但仍然失去其最有用的属性。 PDF-to-image 将每个页面渲染为像素,因此无法再选择、搜索单词或将其作为文本层读取。 ZIP 包含页面图片,而不是较小的 PDF 或可编辑的文档内容。

当幻灯片、聊天、目录或预览需要图像时,这种损失是适当的。当可访问性、搜索、复制或后期编辑很重要时,它是有害的。根据所需的表示方式选择转换,而不是根据第一次目视检查的令人放心的相似性。

光栅化 — 以选定的分辨率将页面的矢量指令渲染为位图,以及获得和丢失的内容

光栅化要求 pdf.js 解释矢量绘图指令、字体和图像,然后以选定的比例绘制画布。 ToolAcre 提供 PNG 来实现清晰的文档边缘,并提供 JPEG 来实现较小的照片输出。每个页面都成为一个 ZIP 中单独命名的图像。

渲染器在分配之前检查每个设备的像素预算,并可以将超大页面减少到低于请求的比例。 PNG 和 JPEG 保留该像素网格处的渲染外观,而不是源向量或文本语义。缩放超出所选分辨率最终会显示有限光栅。

换行 — 将图像放置在新页面中,使其成为 PDF,以及为什么这对于图像本身来说是无损的

Images-to-PDF 通过在每个新 PDF 页面上放置一张准备好的图像来向另一个方向移动。将每个图像的页面大小与图片加边距相匹配; A4 和 US Letter 预设包含整个图像并将其居中,无需裁剪。结果是静态图像内容,而不是重建的文本。

JPEG 和 PNG 字节。 WebP、AVIF、GIF、BMP、HEIC 和 HEIF 取决于浏览器解码,并重新编码为 PNG;动画 GIF 仅贡献其第一帧。大图片可能会被缩小以适应设备像素预算,并且每个输入图像的上限为 30 MB。

重构 — 为什么将 PDF 转换为可编辑文档需要猜测段落、列和表格

重建可编辑的文字处理文档需要从页面外观推断阅读顺序、段落、列、表格和样式。 ToolAcre 不提供该操作或 OCR。 PDF-to-image 故意丢弃语义结构,而 images-to-PDF 故意将图片包装在页面中。

缺少可编辑转换是重要的范围,而不是缺少切换。扫描没有文本,除非另一个系统识别它,并且识别仍然不能完美地恢复原始创作模型。当实际需要可编辑结构时,请使用专用的 OCR 或文档转换工作流程。

分辨率、颜色和尺寸 — 决定光栅化页面打印是否干净或看起来柔和的设置

分辨率控制输出像素尺寸和内存使用。屏幕、良好、高和非常高对应于界面中不断增加的比例,而渲染器可能会缩小超出其预算的页面比例。 JPEG 使用接近 92 百分比的固定质量;没有质量滑块。

PNG 适合小文本和线条工作,因为它避免了 JPEG 边缘伪影,尽管它可以更大。当较小的交付很重要时,JPEG 适合摄影页面。混合大小的源页面以一种比例生成混合大小的图像,并且 ZIP 使用存储的条目而不是重新压缩已经压缩的图像数据。

PDF 解析使用工作线程,而画布编码和图像准备需要主线程浏览器 API

本地转换并不意味着每个步骤都在一个工作线程中运行。 pdf.js 通过其自己的捆绑工作程序进行解析,并禁用文档 JavaScript 评估,而画布编码必须保留在主线程上。循环在页面之间产生,因此进度和控件继续绘制。

对于图像到 PDF,浏览器图像准备可以在主线程上解码和绘制不支持的格式,然后 pdf-lib 在工具包工作程序中组装准备好的 PNG 或 JPEG 数据。这些边界准确地解释了实现,并取代了大纲更广泛的主张,即渲染和重新编码仅发生在 Web Worker 中。

该工具包专门提供 PDF-to-PNG/JPEG 和 images-to-PDF

传送的转换是特定的。 PDF to Image 接受一个未加密的 PDF 最多 50 MB 并返回 ZIP 中的 PNG 或 JPEG 页。至 PDF 的图像接受支持的浏览器图像格式,最多为 30 MB,并返回一个 `images.pdf`,每页一张图像。

该工具包不会将 PDF 转换为可编辑的 Office 格式、运行 OCR、将所有页面拼接成一张长图像或通过 PDF-image-PDF 往返保留文本。支持的输入部分和操作控件说明了这些确切的路径,因此无需让功能含糊不清。

要点 — 在开始之前了解您需要哪种类型的转换,然后将 PDF 工具包用于它支持的转换

“转换”可能意味着将结构化页面渲染为像素或将像素包装在新结构化页面内。这些方向可能看起来是可逆的,但事实并非如此:一旦页面文本变成光栅,将该光栅放入另一个 PDF 中不会重新创建可选择的字符或矢量绘图指令。

当所需的工件确实是图片时,使用 PDF-to-image;当所需的容器确实是分页的 PDF 时,使用 images-to-PDF。两者都在本地运行,具有明确的工作线程和主线程职责、硬输入上限和内存保护。在开始之前选择正确的表示可以防止视觉上成功但功能上错误的结果。检查自动缩小或格式转换的结果注释,因为即使预览看起来可以接受,这些报告的更改也可能会影响打印适用性。只要未来的搜索、可访问性或编辑可能重要,就保留结构化的 PDF ,并创建栅格衍生品作为一次性交付资产,而不是源的替代品。用它们的格式和比例命名这些衍生产品,这样就不会有人将屏幕分辨率的图像包误认为是用于打印或存档的文档。