如何解决有没有一种方法可以将所有图像转换为给定页面大小的栅格?
目标:
我正在尝试为Kindle Dx预处理pdf。多年来,我一直在尝试不同的解决方案,但取得了不同的成功。 k2pdfopt可以很好地处理图像和扫描的pdf,但是其他文本效果很差。 Quartz和Ghostscript相反。
设备要求很多:
没有jpeg2000 / jpx / jp2图像,没有层,没有密码等等。
页面大小为880x1080像素,没有子像素。
颜色深度是4位,灰度。
我已经尝试了许多基于Ghostscript的Bash脚本,但是它们在处理图像时非常不一致。它们对某些图像过于激进,而对另一些图像则不够激进。如果图像包含几个小图块或几个小物体,则Ghostscript拒绝压缩它们,并且未压缩的图像会冻结或损坏我的Kindle。
一些可行的想法:
我正在尝试使用Bash脚本将原始pdf文件拆分为一个包含所有文本的pdf,以及一个包含所有图像的pdf。到目前为止,一切都很好:
对于“ $ @”中的f
做
suffix =“-text.pdf”
基本= basename "$f" .pdf
outputfile = $ base $后缀
/ usr / local / bin / gs -sDEVICE = pdfwrite -dFILTERIMAGE -dFILTERVECTOR -dCompatibilityLevel = 1.4 -sstdout =%sstderr -dNOPAUSE -dQUIET -dBATCH -sOutputFile =“ $ outputfile”“ $ f”
suffix =“-images.pdf”
基本= basename "$f" .pdf
outputfile = $ base $后缀
/ usr / local / bin / gs -sDEVICE = pdfwrite -dFILTERTEXT -dCompatibilityLevel = 1.4 -sstdout =%sstderr -dNOPAUSE -dQUIET -dBATCH -sOutputFile =“ $ outputfile”“ $ f”
完成
我可以用[-mode copy -dev dx]处理k2pdfopt中的图像文件,然后将这两个文件重新拼接在一起,交替显示图像和文本页面,得到光栅化的图像和未光栅化的文本。
但是为了节省一个步骤,我试图光栅化Ghostscript本身中的图像文件。到目前为止,我可以转换为灰度,但不能转换更多:
对于“ $ @”中的f
做
suffix =“-text.pdf”
基本= basename "$f" .pdf
outputfile = $ base $后缀
/ usr / local / bin / gs -sDEVICE = pdfwrite -dFILTERIMAGE -dFILTERVECTOR -dCompatibilityLevel = 1.4 -sstdout =%sstderr -dNOPAUSE -dQUIET -dBATCH -sOutputFile =“ $ outputfile”“ $ f”
suffix =“-gsimages.pdf”
基本= basename "$f" .pdf
outputfile = $ base $后缀
/ usr / local / bin / gs -sDEVICE = pdfimage8 -dFILTERTEXT -dCompatibilityLevel = 1.4
-g800x1080 -r150 -dPDFFitPage -dBITSPERPIXEL = 4 -dAlignToPixels = 1
-sstdout =%sstderr -dNOPAUSE -dQUIET -dBATCH -sOutputFile =“ $ outputfile”“ $ f”
完成
无论出于什么原因,-dBITSPERPIXEL = 4和-dAlignToPixels = 1似乎什么都没做。它们可能特定于其他设备,但是我不确定pdfimage8的适当设置。这里的图像文件是平滑的或模糊的,而不是像素化的,它们的大小是使用k2的对应文件的4倍。
P.S。如果没有Gamma和Contrast调整,则gs无论如何都不会重新创建k2的效果。寻找其他简化程序的方法可能更好。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。