Ghostscript - не могу найти (или не могу открыть) файл шрифта - PullRequest
0 голосов
/ 21 мая 2019

Я пытаюсь создать изображение из PDF в php (imagemagic). На изображении текст отсутствует.

Чтобы устранить эту проблему, я пошел в CLI и использовал следующую команду:

gs -sDevice=png16m -sOutputFile="test.png" test.pdf

Теперь я получаю:

GPL Ghostscript 9.26 (2018-11-20)
Copyright (C) 2018 Artifex Software, Inc.  All rights reserved.
This software comes with NO WARRANTY: see the file PUBLIC for details.
Processing pages 1 through 1.
Page 1
Can't find (or can't open) font file /usr/share/ghostscript/9.26/Resource/Font/ArialMT.
Can't find (or can't open) font file ArialMT.
Can't find (or can't open) font file /usr/share/ghostscript/9.26/Resource/Font/ArialMT.
Can't find (or can't open) font file ArialMT.
Querying operating system for font files...
Can't find (or can't open) font file /usr/share/ghostscript/9.26/Resource/Font/ArialMT.
Can't find (or can't open) font file ArialMT.
Loading ArialMT font from /usr/share/fonts/truetype/msttcorefonts/Arial.ttf... 4395876 2792289 6087360 4693359 4 done.
Can't find (or can't open) font file /usr/share/ghostscript/9.26/Resource/Font/Arial-BoldMT.
Can't find (or can't open) font file Arial-BoldMT.
Loading Arial-BoldMT font from /usr/share/fonts/truetype/msttcorefonts/arialbd.ttf... 4395876 2792684 6897144 5444610 4 done.
Can't find CID font "Arial".
Attempting to substitute CID font /Adobe-Identity for /Arial, 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 /usr/share/ghostscript/9.26/Resource/CIDFSubst/DroidSansFallback.ttf to emulate a CID font Adobe-Identity ... Done.
Can't find CMap Identity-UTF16-H building a CIDDecoding resource. 
Warning: falling back to Identity ordering
Loading a TT font from /usr/share/ghostscript/9.26/Resource/CIDFSubst/DroidSansFallback.ttf to emulate a CID font CIDFallBack ... Done.
Can't find CMap Identity-UTF16-H building a CIDDecoding resource. 
   **** Error: can't process embedded font stream,
        attempting to load the font using its name.
               Output may be incorrect.
Can't find CID font "Arial".
Attempting to substitute CID font /Adobe-Identity for /Arial, 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 /usr/share/ghostscript/9.26/Resource/CIDFSubst/DroidSansFallback.ttf to emulate a CID font Adobe-Identity ... Done.
Can't find CMap Identity-UTF16-H building a CIDDecoding resource. 
Warning: falling back to Identity ordering
Loading a TT font from /usr/share/ghostscript/9.26/Resource/CIDFSubst/DroidSansFallback.ttf to emulate a CID font CIDFallBack ... Done.
Can't find CMap Identity-UTF16-H building a CIDDecoding resource. 
   **** Error reading a content stream. The page may be incomplete.
               Output may be incorrect.
   **** Error: File did not complete the page properly and may be damaged.
               Output may be incorrect.
%%BoundingBox: 85 470 562 757
%%HiResBoundingBox: 85.491068 470.681986 561.761983 756.827977

Я нашел много тем и много пробовал, но не могу решить проблему. Я думаю, что проблема в шрифте CID, но я не уверен.

Может кто-нибудь дать мне несколько советов, как мне решить эту проблему?

Сервер: Debian GNU / Linux 9 (растяжка) Ghostscript: GPL Ghostscript 9.26 (2018-11-20)

1 Ответ

0 голосов
/ 21 мая 2019

У вас, кажется, есть несколько проблем.Трудно сказать наверняка, потому что вы не предоставили PDF-файл для проверки.

Во-первых, ваш PDF-файл пытается использовать CIDFont с именем Arial, который он не встраивает в PDF-файл.Он также не содержит регулярные шрифты ArialMT и Arial-BoldMT, но у вас, по-видимому, имеются заменительные шрифты, доступные либо из fontmap.GS, либо через fontconfig (если это предусмотрено в вашей сборке) для них.

Не удается встроить шрифтыЭто плохая практика, отказ от встраивания CIDFonts специально осуждается в спецификации PDF.

Ghostscript пытается использовать свои запасные подходы, чтобы определить замену CIDFont для отсутствующего Arial CIDFont.Во-первых, он пытается использовать запасной шрифт Adobe-Identity (имя происходит от CIDSystemInfo), но CIDFont также недоступен.Поэтому он возвращается к следующей попытке, которая заключается в использовании DroidSansFallback.

Однако это не удается, поскольку для создания удовлетворительной замены Ghostscript необходим CMap, чтобы создать ресурс CIDDecoding.Похоже, в вашей установке отсутствует соответствующий CMap.

Похоже, ваш дистрибутив упакован с Ghostscript, поэтому он не использует файловую систему ROM.Вместо этого, похоже, все файлы установлены на диске в /usr/share/ghostscript/9.26

. Вы должны найти каталог /usr/share/ghostscript/9.26/Resource/CMap и посмотреть, есть лиэто файл с именем Identity-UTF16-H.

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

Если его нет, я бы посоветовал вам его поднять.с сопровождающим пакета Debian.Поскольку Ghostscript лицензируется в соответствии с AGPL, исходный код (включая все файлы поддержки), конечно же, доступен в репозитории Ghostscript Git и на веб-сайте Ghostscript.Оттуда вы можете просмотреть отсутствующие файлы.

Обратите внимание, что текущая версия - 9.27, и я бы порекомендовал обновить.

...