在 Debian Sid 上,我有一个蓝色背景和黄色字体的 PDF。我在超级用户上搜索了很多,但没有找到任何对我有用的东西。
我试图将 PDF 转换为灰度格式:
gs -o grayscale.pdf -sDEVICE=pdfwrite -sColorConversionStrategy=Gray -sProcessColorModel=DeviceGray -dCompatibilityLevel=1.4 colored.pdf
Run Code Online (Sandbox Code Playgroud)
问题是我获得了一个带有白色字体和深灰色背景的 PDF,所以我无法打印它。
之后我尝试过:
convert -density 96x96 gs2.pdf -density 96x96 -negate -compress zip inv.pdf
Run Code Online (Sandbox Code Playgroud)
我得到了一个带有黑色字体(这没关系)和灰色背景(这不太好)的 PDF。
我该怎么做才能获得白色背景和黑色字体的 PDF?
(所以如果你犯了错误,你可以有第二次机会)
可以通过几个步骤轻松更改 pdf 文件中的矢量pdf 背景(意味着不是光栅图像)(另请参阅我的 stackoverflow 答案,现在我将对其进行扩展和改进
使用能够显示内部 pdf 结构的编辑器打开您的 pdf 文件,例如
记事本++
并验证您是否可以看到类似的代码片段
1.000 1.000 0.000 rg(表示黄色)
0.000 0.000 1.000 rg(如果您的蓝色是具有 RGB 三元组 0、0、255的纯蓝色,则表示蓝色 ,否则请阅读答案的其余部分以将正确的三元组识别为 pdf 代码)
等等...
(代码片段可以更改,例如,在由 openoffice 内部 pdf 导出功能生成的 pdf 中,相同的代码片段采用以下形式:
0 0 0 rg (it means *black*)
1 1 1 rg (it means *white*)
Run Code Online (Sandbox Code Playgroud)
等等...
如果你能看到这些代码片段,那么你就可以开始改变值,否则,你需要解压文本流
您可以执行此任务
pdftk
http://www.pdflabs.com/docs/install-pdftk/
pdftk file.pdf output uncompressed.pdf uncompress
Run Code Online (Sandbox Code Playgroud)
并在完成更改后重新压缩
pdftk uncompressed.pdf output recompressed.pdf compress
Run Code Online (Sandbox Code Playgroud)
现在,如果您看到这些代码片段,您可以更改值
您需要做的第一件事是找到文本和背景的 RGB 颜色值与相同颜色的内部 pdf 表示之间的正确等价关系
你可以使用像这样的免费颜色选择器
识别文本和背景颜色的 rgb 值
一旦你有了这些值,你需要转换成特殊的内部 pdf 表示
要做到这一点,我介意这个比例:
1:255=x:您选择的颜色
例如:假设你有这个 RGB 三元组作为背景:30,144,255
要知道 pdf 中的对应值以便在代码片段中插入以更改 pdf 背景颜色,您可以:(您可以使用http://www.wolframalpha.com/进行精确计算)
1:255=x:30 = 30/255 = 0.117 (approximated to first three decimals)
1:255=x:144 = 144/255 = 0.564 (approximated to first three decimals)
1:255=x:255 = 255/255 = 1
Run Code Online (Sandbox Code Playgroud)
因此,对应于RGB 30,144,255 的pdf 中的整个三元组将是:
0.117 0.564 1.000
我们使用notepad ++在pdf文件中查找0.117 0.564 1.000(环绕 并匹配一个只需要检查的单词),我们找到了背景的内部pdf表示,我们可以从天蓝色更改为白色
1.000 1.000 1.000
或者
1 1 1
但是,由于您写了关于蓝色背景的文章,更准确地说,我创建了一个带有蓝色背景的示例 pdf (纯蓝色0,0,255 RGB - 如果您的蓝色有不同的色调,请根据需要修改我的提示)和黄色文本
因为我们知道 0.000 0.000 1.000 rg 表示蓝色,所以我们寻找这个,我们可以从 0.000 0.000 1.000 rg 更改为 1.000 1.000 1.000 rg(白色)但是...
同时,您还将文本从黄色更改为黑色
寻找 1.000 1.000 0.000(黄色文本)并更改为黑色0.000 0.000 0.000
我们现在有一个带有黑色文本和白色背景的矢量 pdf
请记住
- 如果您使用 pdftk 解压缩,请再次压缩您修改过的 pdf
- 修理
pdftk file.pdf output fixed.pdf
Run Code Online (Sandbox Code Playgroud)
还有另一种方法,从 postscript 开始,执行相同的任务,但由于您已经有了pdf 文件,转换为 postscript 以执行类似的任务将是多余的步骤
请提供反馈,并随时询问更多
归档时间: |
|
查看次数: |
10492 次 |
最近记录: |