Неправильные символы акцентированных слов при преобразовании из PDF в PCL с помощью Ghostscript - PullRequest
0 голосов
/ 26 июня 2019

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

Вот как я называю ghostscript:

bin\gswin32c -dBATCH -dNOPAUSE -sDEVICE=pxlmono -sFONTPATH=C:\Windows\Fonts -dDuplex -dFirstPage=1 -dLastPage=2 -sOutputFile=Parte.pcl -fParte.pdf

Это мой оригинальный PDF: enter image description here

Это результат PCL: enter image description here

Полагаю, проблема в шрифтах, потому что там написано, что они не могут найти шрифты Arial и Verdana (хотя оба установлены в \ Windows \ Fonts).

GPL Ghostscript 9.27 (2019-04-04)
Copyright (C) 2018 Artifex Software, Inc.  All rights reserved.
This software is supplied under the GNU AGPLv3 and comes with NO WARRANTY:
see the file COPYING for details.
Processing pages 1 through 2.
Page 1
Can't find CID font "Verdana".
Attempting to substitute CID font /Adobe-Identity for /Verdana, see doc/Use.htm#CIDFontSubstitution.
The substitute CID font "Adobe-Identity" is not provided either. attempting to use fallback CIDFont.See doc/Use.htm#CIDFontSubstitution.
Loading a TT font from %rom%Resource/CIDFSubst/DroidSansFallback.ttf to emulate a CID font Adobe-Identity ... Done.
Can't find CID font "Verdana".
Attempting to substitute CID font /Adobe-Identity for /Verdana, see doc/Use.htm#CIDFontSubstitution.
Can't find CID font "Verdana".
Attempting to substitute CID font /Adobe-Identity for /Verdana, see doc/Use.htm#CIDFontSubstitution.
Can't find CID font "Arial".
Attempting to substitute CID font /Adobe-Identity for /Arial, see doc/Use.htm#CIDFontSubstitution.
Can't find CID font "Arial".
Attempting to substitute CID font /Adobe-Identity for /Arial, see doc/Use.htm#CIDFontSubstitution.
Page 2
Can't find CID font "Arial".
Attempting to substitute CID font /Adobe-Identity for /Arial, see doc/Use.htm#CIDFontSubstitution.
Loading a TT font from %rom%Resource/CIDFSubst/DroidSansFallback.ttf to emulate a CID font Adobe-Identity ... Done.
Can't find CID font "Verdana".
Attempting to substitute CID font /Adobe-Identity for /Verdana, see doc/Use.htm#CIDFontSubstitution.

Есть ли какой-нибудь параметр, чтобы решить мою проблему с этими шрифтами? Спасибо.

PS: Если вы хотите протестировать оригинальный файл PDF, вы можете скачать его здесь: Файл PDF

1 Ответ

1 голос
/ 26 июня 2019

Ваш файл PDF использует следующие CIDFonts; Arial, Arial, Bold, Вердана, Вердана, Bold и Вердана, BoldItalic. Он не включает любой этих шрифтов.

Несмотря на то, что не рекомендуется включать обычные шрифты, в спецификации специально указано, что CIDFonts должны быть встроены. Тем не менее, многие создатели делают это, по-видимому, потому что это сравнительно трудно. Гораздо проще включить ссылку и оставить тяжелую работу потребителю PDF. Так что, если шрифт недоступен для потребителя ....

Если шрифт или CIDFont отсутствуют, Ghostscript должен использовать замену. CIDFonts труднее заменить, чем обычные шрифты, и Ghostscript поставляется с одним реальным заменителем CIDFont, DroidSansFallback, который он использует для всех языков. Существует «bullet» CIDFont, который является крайним запасным вариантом последнего шага, поскольку он не содержит ничего, кроме глифа пули.

Чтобы получить правильный вывод, вы должны либо внедрить CIDFonts в файл PDF, либо предоставить подходящую замену CIDFont для использования Ghostscript. Обратите внимание, что переключатель FONTPATH применяется только к fonts , но не к CIDFonts, поэтому он не будет полезен для этого файла (хотя он может иметь преимущества для файлов, использующих шрифты, очевидно).

Механизм подстановки CIDFont описан в документации Ghostscript Я полагаю, что если вы предоставите различные шрифты Windows TrueType для Ghostscript в качестве заменителей отсутствующих именованных CIDFonts, ваш файл будет отображаться правильно.

Обратите внимание, что, поскольку вы используете Windows, Ghostscript будет использовать файловую систему ROM. Если вы редактируете файл cidfmap, вам нужно будет использовать переключатель -I (Включить), чтобы добавить путь, содержащий файл cidfmap, к пути поиска. Возможно, вам будет проще отредактировать файл в каталоге c: \ Program Files (x86) \ gs \ gs9.27 \ Resource \ Init и добавить этот путь, используя -I"c:/Program Files (x86)/gs/gs9.27/Resource/Init"

...