使用 SED / BBE 编辑 PDF 中的二进制数据(更改 PDF 中的颜色)

问题描述 投票:0回答:0

我想更改一批 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 文件后立即变为绿色。

如何使用文本工具以自动化方式执行此操作?

  1. sed 's/1 1 1 sc/0 1 0 sc/' IN.pdf > OUT.pdf
    给我错误:sed: RE error: illegal byte sequence

  2. 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 文件的上述流(第一个流块)中,我只需要替换第二个和第三个查找。第二个有换行符?

pdf sed colors binary bbe
© www.soinside.com 2019 - 2024. All rights reserved.