我正在使用Ghostscript(9.14)来清理"在使用pdfwrite
驱动程序进行分发之前的PDF虽然它在一般情况下运行良好,但我注意到它经常重新编码嵌入字体,这通常会阻止用于搜索的合理文本提取等。
ghostscript处理之前的示例文件在这里:http://download.vistair.com/ghostscript/in.pdf 使用ghostscript处理后的结果如下:http://download.vistair.com/ghostscript/out.pdf
可以使用输入文件进行合理的文本提取,但不能使用输出文件。
查看PDF,在输入文件中我们有:
obj 9 0
Type: /Font
Referencing: 12 0 R, 14 0 R
<<
/BaseFont /GCCBBY+TT187t00
/Encoding 12 0 R
/FirstChar 1
/FontDescriptor 14 0 R
/LastChar 41
/Subtype /TrueType
/Type /Font
/Widths [352 684 633 973 596 427 636 636 636 636 751 632 684 616 695 787 989 421 748 686 575 601 521 633 521 394 274 607 633 623 623 274 352 364 698 623 623 592 592 592 636]
>>
obj 12 0
Type: /Encoding
Referencing:
<<
/BaseEncoding /WinAnsiEncoding
/Differences [1/space/S/u/m/e/r/two/zero/one/four/H/E/A/T/R/O/W/I/N/B/F/a/c/h/s/t/i/o/n/p/b/l/f/period/C/d/g/y/v/k/endash]
/Type /Encoding
>>
在ghostscript处理的文件中,这已成为:
obj 8 0
Type: /Font
Referencing: 9 0 R
<<
/BaseFont /OWPYKO+TT187t00
/FontDescriptor 9 0 R
/Type /Font
/FirstChar 2
/LastChar 6
/Widths [ 684 633 973 596 427]
/Subtype /TrueType
>>
因此字体编码信息已丢失且文本不再可提取。
有没有办法阻止ghostscript重新编码现有的嵌入字体(或者至少保留现有的字体编码)?
答案 0 :(得分:1)
直言不讳,不。它是TrueType字体,它们总是被转换为符号字体(出于复杂的原因,与Ghostscript的工作方式有关)。
过去我们确实发出了编码,因为Acrobat会使用Encoding作为TrueType字体(即使是符号字体,也不应该这样做)。但是,PDF格式非常清楚,符号字体不应该指定编码,并且它达到了这样做的程度,即创建的问题比它解决的更多,所以我们停止了这样做。