我想更改一批 PDF 中的一些背景颜色
我发现颜色信息存储在firststream - endstream块
像这样的格式: 1 1 1 sc
在这个例子中代表白色 #FFFFFF
这里是我解码二进制流后的一个例子
qpdf --qdf --object-streams=disable IN.pdf OUT.pdf
流 q Q q /Cs1 cs 0.9686275 0.9725490 0.9764706 sc 0 12777 m 600 12777 l 600 0 l 0 0 l h f 0 12777 m 600 12777 l 600 0 l 0 0 l h f ➡️1 1 1 sc⬅️ 0 12575 m 600 12575 l 600 12308 l 0 12308 l h f 0.1254902 0.2666667 0.3921569 sc 0 872 m 600 872 l 600 462 l 0 462 l h f 0 462 m 600 462 l 600 0 l 0 0 l h f ➡️1 1 1 sc⬅️ 0 12297 m 600 12297 l 600 5122 l 0 5122 l h f 0.7411765 0.8980392 0.9725490 sc 23 7249 m 577 7249 l 577 6007 l 23 6007 l h f 1 0.9215686 0.9333333 sc 23 5848 米 577 5848 l 577 5533 l 23 5533 l h f 0.9686275 0.9725490 0.9764706 sc 23 5510 m 577 5510 l 577 5156 l 23 5156 l h f ➡️1 1 1 sc⬅️ 0 5110 m 600 5110 ... 尾流
如果我在 TextEdit 中打开 PDF 并手动将 1 1 1 sc
替换为 0 1 0 sc
,我的白色背景会在保存 PDF 文件后立即变为绿色。
如何使用文本工具以自动化方式执行此操作?
sed 's/1 1 1 sc/0 1 0 sc/' IN.pdf > OUT.pdf
给我错误:sed: RE error: illegal byte sequence
bbe -e 's/0 1 1 sc/0 1 0 sc/' IN.pdf > OUT.pdf
没有错误,OUT.pdf 已写入但颜色没有改变
echo 'hello 1 1 1 sc world' | bbe -e 's/1 1 1 sc/0 1 0 sc/'
似乎工作正常......
在单页 PDF 文件的上述流(第一个流块)中,我只需要替换第二个和第三个查找。第二个有换行符?