嗯,这就是字体的优点,你只需要描述每个字符一次。转换为轮廓,您每次都需要对其进行描述,所以是的,要大得多。
Ghostscript 的 pdfwrite 设备付出了相当大的努力来尝试使文本可搜索,因为通常人们会在“可搜索”文件变为“不可搜索”时对我们大喊大叫。因此(除其他外)它会在输入文件中保留任何 ToUnicode CMap。为了防止简单的索引,您需要避免这种情况。您尚未链接到 PDF 文件,因此我无法对此进行测试,但是....
您需要编辑三个地方:
/ghostpdl/Resource/Init/gs_pdfwr.ps,第 642 行,更改:
/WantsToUnicode /GetDeviceParam .special_op {
exch pop
}{
//true
}ifelse
至:
//false
在同一个文件的第 982 行,更改:
/WantsToUnicode /GetDeviceParam .special_op {
exch pop
}{
//false
}ifelse
至:
//false
然后在 /ghostpdl/Resource/Init/pdf_font.ps,第 614 行,更改:
/WantsToUnicode /GetDeviceParam .special_op { exch pop }{ //false }ifelse
至:
//错误的
这应该可以防止 inptu 文件中的任何 ToUnicode 信息进入输出文件。根据您使用的操作系统以及 Ghostscript 的构建方式(您还没有说过),您可能需要告诉 Ghostscript 将该目录包含在其搜索路径中,您可以使用 -I/ghostpdl/Resource/在里面。
您还应该设置-dSubsetFonts=true
,这会将所有字体作为子集发出,我认为这是默认设置,但我无法立即回忆起设置它并没有害处。这意味着遇到的第一个字形在索引 1 处编码,第二个在索引 2 处编码,依此类推。所以 Hello World 变为 0x01、0x02、0x03、0x03、0x04、0x05、0x06、0x04、0x07、0x03、0x08。整个文件的顺序将是一致的(显然),但对于文件中的每种字体和每个文件都不同。这应该是我想的充分加扰。当然不可能简单地搜索/复制/粘贴。
如果您提供示例文件,我可以对其进行测试。
哦,我也突然想到,您可以通过使用 ps2write 设备创建 PostScript 文件,然后使用 pdfwrite 设备将其转换回 PDF 来获得相同的效果。ps2write 设备无法嵌入 ToUnicode CMap,因为 PostScript 中没有对此的标准支持。当然,这也意味着内容会退回到 PostScript,这可能会导致其他不可接受的质量/大小变化。