【发布时间】:2019-10-29 06:33:25
【问题描述】:
我有一台旧的 Kindle Dx。由于残疾,我无法使用平板电脑或其他触控设备,我将 pdf 文件传输到 Kindle 阅读。它需要预处理。
在不光栅化的情况下预处理 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 -dColorImageDownsampleThreshold=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=灰色\ -dDownsampleColorImages=true -dDownsampleGrayImages=true -dDownsampleMonoImages=true -dColorImageResolution=75 -dGrayImageResolution=75 -dMonoImageResolution=150 -dColorImageDownsampleThreshold=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 如果您想剪切所有图形。
如果使用这些选项中的任何一个对另一台设备进行预处理,请检查其屏幕大小(以像素为单位)。不要太担心每英寸的像素数。]
[I.S.我的目标是修复 pdf,以便它们 1. 不要让我的 Kindle 崩溃,2. 不要冻结我的 Kindle 或加载每个页面的时间过长,以及 3. 不要占用太多有限的磁盘空间我的 Kindle。最好还 4. 不光栅化文本, 5. 不剪切所有图像,这有时会丢失表格等。 6. 不重排文本,这通常会丢失表格。但我很乐意对大多数图像进行下采样。]
[I.S.请注意,我保留了原件的副本。这不是节省磁盘空间的方法!]
对于扫描的 pdf,Willus 的 k2pdfopt 是一个不错的选择。我已经为
设置了 Mac Automatork2opt -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 -分贝
...我不确定如何处理这些结果。
【问题讨论】:
标签: pdf ghostscript kindle