2014-09-01 1 views
2

Я использую Ghostscript (9.14) для «очистки» PDF-файлов перед распространением с помощью драйвера pdfwrite. Хотя он работает очень хорошо в целом, я заметил, что он часто перекодирует встроенные шрифты которая часто имеет эффект предотвращения толкового извлечения текста для поиска и т.д.Введенный шрифт Ghostscript

пример файла перед тем 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 существующих встроенных шрифтов (или, по крайней мере, сохранить существующее кодирование шрифтов)?

ответ

1

Чтобы быть тупым, нет. Его шрифт TrueType, и они всегда преобразуются в символический шрифт (по сложным причинам, чтобы делать то, как работает Ghostscript).

В прошлом мы испускали кодировку, потому что Acrobat будет использовать кодировку для шрифта TrueType (даже для символического шрифта, которого он не должен делать). Тем не менее, в PDF-файлах совершенно ясно, что символические шрифты не должны указывать кодировку, и она достигла точки, когда это создавало больше проблем, чем было решено, поэтому мы перестали это делать.

+1

Большое спасибо за ваш окончательный ответ. Я беру это из вашего ответа, что нет планов изменить это поведение в ближайшем будущем? –

+0

Изменение вложения шрифта TrueType, чтобы он работал разумно, относится к моему долгосрочному списку ToDo, но я должен быть честным и сказать, что он, конечно, скоро не будет, и может быть никогда. Даже после перезаписи кода, поэтому я имею в виду, что не могу гарантировать, что мы сможем написать кодировку, которая будет работать, нам сначала придется писать шрифт как несимволический. – KenS

+0

Кстати, если в исходном файле PDF есть CMU ToUnicode для шрифта, то я считаю, что результат все равно будет правильным. Если у него нет CMU ToUnicode, то вы уже находитесь в сфере эвристики, Acrobat делает удар по вашему шрифту на основе других вещей, что может быть правильным, но, конечно же, не гарантируется. – KenS