我有一个旧的 Kindle Dx。由于残疾,我不能使用平板电脑或其他触摸设备,我将 pdf 文件传输到 Kindle 阅读。它需要预处理。
在不光栅化 PDF 的情况下预处理 pdf 有什么好的选择?
[当光栅化是可以接受的:
k2pdfopt - 用于地图或小文本的模式复制。这会光栅化,增强对比度,并使所有内容都与 1.4 兼容。
k2pdfopt -mode copy -dev dx 用于其他作品。这将光栅化为 800x1080,根据需要进行下采样,增强对比度,同时使所有内容变为灰度,并使所有内容与 1.4 兼容。
当光栅化文本不可接受时:
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -sstdout=%sstderr -dNOPAUSE -dQUIET -dBATCH -sOutputFile=output.pdf input.pdf 如果要保留图形。这使所有的更改都与 1.4 兼容。
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 \ -g800x1080 -r150 -dPDFFitPage \ -dFastWebView -sColorConversionStrategy=RGB \ -dDownsampleColorImages=true -dDownsampleGrayImages=true -dDownsampleMonoImages=true -dColorImageResolution=150 -dGrayImageResolution=150 -dMonoImageResolution=300 -dColorDownsampleThreshold=300 =1.0 -dGrayImageDownsampleThreshold=1.0 -dMonoImageDownsampleThreshold=1.0 \ -sstdout=%sstderr -dNOPAUSE -dQUIET -dBATCH -sOutputFile=output.pdf input.pdf 如果你想要适度的下采样。这会重新光栅化现有的光栅图像以适应 800x1080 并使所有内容与 1.4 兼容。
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 \ -g800x1080 -r150 -dPDFFitPage \ -dFastWebView -sColorConversionStrategy=Gray \ -dDownsampleColorImages=true -dDownsampleGrayImages=true -dDownsampleMonoImages=true -dColorImageResolution=75 -dGrayImageResolution=75 -dMonoImageResolutionHoldImages=150 -dColor =1.0 -dGrayImageDownsampleThreshold=1.0 -dMonoImageDownsampleThreshold=1.0 \ -sstdout=%sstderr -dNOPAUSE -dQUIET -dBATCH -sOutputFile=output.pdf input.pdf 如果您想要更积极的下采样。这将重新光栅化光栅图像以适应 400x540,使它们成为灰度,并使所有内容与 1.4 兼容。图像质量低,但通常仍可识别。
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dFILTERIMAGE -dFILTERVECTOR -sstdout=%sstderr -dNOPAUSE -dQUIET -dBATCH -sOutputFile=output.pdf input.pdf 如果要剪切所有图形。
如果使用这些选项中的任何一个对另一个设备进行预处理,请检查其屏幕大小(以像素为单位)。不要太担心每英寸的像素数。]
[是我的目标是修复 pdf,因此它们 1. 不要让我的 Kindle 崩溃,2. 不要冻结我的 Kindle 或加载每个页面的时间过长,以及 3. 不要占用太多有限的磁盘我的 Kindle 上的空间。最好还 4. 不光栅化文本, 5. 不剪切所有图像,有时会丢失表格等。 6. 不重排文本,这通常会丢失表格。但我很乐意对大多数图像进行下采样。]
[请注意,我保留了原件的副本。这不是节省磁盘空间的方法!]
对于扫描的 pdf,Willus 的 k2pdfopt 是一个不错的选择。我已经为 Mac Automator 设置了
k2opt -mode 复制 -dev dx
或者偶尔只是 -mode 复制。
对于 pdf-born-pdfs,我宁愿不栅格化所有内容。
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -sstdout=%stderr -dNOPAUSE -dQUIET -dBATCH
通常可以转换文件,因此 Kindle Dx 可以打开它们,但 Kindle 仍然会变慢、卡住或出现某些页面崩溃。
一种选择是将 Ghostscript 和 Mutool 组合如下:
- gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -sstdout=%stderr -dNOPAUSE -dQUIET -dBATCH 预处理 pdf 以删除密码,
- mutool clean -g -g -d -s -l 清理垃圾,然后
- gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -sstdout=%stderr -dNOPAUSE -dQUIET -dBATCH 再次获得更小更快的pdf。
注意:我认为 Mutool 的第 3 个 -g 相当于 Ghostscript 的 -dDetectDuplicateImages。由于它会减慢渲染速度,因此相反可能会更好。我不确定如何将其设置为 false。-dDetectDuplicateImages 假?-uDetectDuplicateImages?
注意:我使用 gtime 来计时 pdf 渲染。
单个应用程序中的单步工具会有所帮助。减少图像也会有所帮助。Ghostscript 的文档很难理解。
- 对于清理,作为运行 mutool 的替代方法:
-dFastWebView 可能会有所帮助。
-dNOGC 表示 Ghostscript 默认进行垃圾收集。
- 对于图像缩小:
-dPDFSETTINGS=/screen 在 9.50 中似乎比 9.23 更好。/ebook 可能会更好,因为它嵌入了所有字体。
-dFILTERIMAGE -dFILTERVECTOR 在 9.50 中也比 9.23 工作得更好,但比我想要的更激烈。
许多设置似乎依赖于输入分辨率和/或输入页面大小。
-r 似乎依赖于输入页面大小,而不是输出页面大小。Kindle Dx 的尺寸为 800 x 1180 像素。
-dDownScaleFactor 相对于输入分辨率减小。
-g800x1080 似乎是裁剪页面,而不是缩小它们。
我认为 -sDEVICE=pdfimage8 会栅格化所有内容,例如 k2pdfopt。
在某些情况下
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dFastWebView -uDetectDuplicateImages -dPDFSETTINGS=/ebook -sstdout=%sstderr -dNOPAUSE -dQUIET -dBATCH 生成的文件比 -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -sstdout=%sstderr 更大更慢- dNOPAUSE -dQUIET -dBATCH
......我不确定如何处理这些结果。