Преобразование Ghostscript в PDF не позволяет копировать и вставлять лигатуры - PullRequest
0 голосов
/ 07 января 2020

У меня есть PDF (созданный с использованием латекса с \usepackage[a-2b]{pdfx}), в котором я могу правильно копировать и вставлять лигатуры, то есть «fi» вставляется в мой текстовый редактор как «fi». PDF-файл довольно большой, поэтому я пытаюсь уменьшить его размер с помощью следующей команды ghostscript:

gs -dPDFA-2 -dBATCH -dNOPAUSE -sPDFACompatibilityPolicy=1 -sDEVICE=pdfwrite 
   -dPDFSETTINGS=/printer -sProcessColorModel=DeviceRGB 
   -sColorConversionStrategy=UseDeviceIndependentColor 
   -dColorImageDownsampleType=/Bicubic -dAutoRotatePages=/None 
   -dCompatibilityLevel=1.5 -dEmbedAllFonts=true -dFastWebView=true 
   -sOutputFile=main_new.pdf main.pdf

Хотя в результате получается хороший маленький PDF-файл, теперь, когда я копирую слово с помощью «fi», я вместо этого (часто) получают «ő».

Поскольку правильные символы каким-то образом кодируются в исходном файле PDF, есть ли какой-нибудь параметр, который я могу дать ghostscript, чтобы он просто сохранял эту информацию в преобразованном файле PDF?

Я использую ghostscript 9.27 на macOS 10.14.

1 Ответ

0 голосов
/ 07 января 2020

Не видя вашего исходного файла, чтобы я мог видеть способ кодирования текста, невозможно быть окончательным. Конечно, не возможно, чтобы устройство pdfwrite «сохранило информацию», для объяснения см. здесь .

Если ваш исходный файл PDF имеет ToUnicode CMap тогда pdfwrite dev cie должен использовать это для генерации нового ToUnicode CMap в файле outptu, поддерживающего вырезание и вставку / поиск. Если этого не произойдет, то процесс преобразования уничтожит кодировку. Вы могли бы улучшить результаты, установив для SubsetFonts значение false, но это всего лишь предположение, не видя примера.

Я предполагаю, что в вашем исходном файле нет ToUnicode CMap, что означает, что он работает только по счастливой случайности.

...