Обработка (переназначение) отсутствующих / проблемных (CID / CJK) шрифтов в PDF с ghostscript?

Короче говоря, я имею дело с проблемным PDF, который:

Cannot be fully rendered in a document viewer like evince, because of missing font information; However - ghostscript can fully render the same PDF.

Таким образом - независимо от того, чтоghostscript использует для заполнения пробелов (maybe fallback glyphs, or a different method to accessing fonts) - Я хотел бы иметь возможность использоватьghostscript создать ("дистиллировать") выходной PDF, где в значительной степениnothing будет изменен, за исключением информации о шрифте, поэтомуevince может отображать один и тот же документ так же, какghostscript Можно.

мойquestion таким образом - возможно ли это вообще сделать; и если да, то какой будет командная строка для достижения чего-то подобного?

Большое спасибо заранее за любые ответы,
Ура!

Details:

Я на самом деле на более старой Ubuntu 10.04, и я мог бы столкнуться - не ошибка - но проблема установки сevince (отсутствиеpoppler-data пакет), как отмечено вОшибка # 386008 & # x201C; Некоторые шрифты не отображаются из-за & # x201C; Неизвестный тег шрифта ... & # x201D; : Ошибки: & # x201C; poppler & # x201D; пакет: Ubuntu.

Однако это именно то, что я хотел бы обработать, поэтому я буду использоватьfontspec.pdf прикрепленный к этому посту ("PDF вызывает ошибку.& quot ;, & # xF732; & # xF730; & # xF730; & # xF738; / & # xF730; & # xF738; / & # xF730; & # xF739; v & # xF731;. & # xF731; & # xF738;) продемонстрировать проблему.

evince

Во-первых, я открываю эту страницу 3 в формате PDF вevince; а такжеevince жалуется:

$ evince --page-label=3 fontspec.pdf

Error: Missing language pack for 'Adobe-Japan1' mapping
Error: Unknown font tag 'F5.1'
Error (7597): No font in show
Error: Unknown font tag 'F5.1'
Error (7630): No font in show
Error: Unknown font tag 'F5.1'
Error (7660): No font in show
Error: Unknown font tag 'F5.1'
...

Рендеринг выглядит так:

evince-pdf-missfont-render.png

... и очевидно, что некоторые формы шрифта отсутствуют.

Adobe acroread

Просто заметка о том, как ведет себя Adobe Acrobat Reader для Linux; следующая командная строка:

$ ./Adobe/Reader9/bin/acroread /a "page=3" fontspec.pdf

... не генерирует никакого вывода на терминал вообще (for more on /a switch, see Справочная страница) - и у программы абсолютно нет проблем с отображением шрифтов.

Also, while I'd like to avoid the roundtrip to postscript - however, note that acroread itself can be used to convert a PDF to postscript:

$ ./Adobe/Reader9/bin/acroread -v
9.5.1

$ ./Adobe/Reader9/bin/acroread -toPostScript \ 
-rotateAndCenter -choosePaperByPDFPageSize \
-start 3 -end 3 \
-level3 -transQuality 5 \
-optimizeForSpeed -saveVM \
fontspec.pdf ./ 

Опять же, приведенная выше командная строка не будет генерировать вывод на терминал;-optimizeForSpeed -saveVM есть, потому что, очевидно, они имеют дело со шрифтами; последний аргумент./ это выходной каталог (выходной файл автоматически вызываетсяfontspec.ps).

Сейчас,evince can отобразить ранее отсутствующие шрифты вfontspec.ps выходной - но опять жалуется

$ evince fontspec.ps 
GPL Ghostscript 9.02: Error: Font Renderer Plugin ( FreeType ) return code = -1
GPL Ghostscript 9.02: Error: Font Renderer Plugin ( FreeType ) return code = -1
...

... а кроме того, всеtext в постскриптуме, кажется, сплющен к кривым - так что теперь нельзя выбрать текст в файле .ps вevince (обратите внимание, что файл .ps не может быть открыт вacroread). Тем не менее, можно снова преобразовать этот .ps обратно в .pdf:

$ pstopdf fontspec.ps   # note, `pstopdf` has no output filename option;
                        # it will automatically choose 'fontspec.pdf',
                        # and overwrite previous 'fontspec.pdf' in 
                        # the same directory 

... а теперь текст на выходеpstopdf можно выбрать вevinceвсе шрифты есть, иevince больше не жалуется. Однако, как я уже отмечал, я бы хотел вообще избежать обратной передачи к файлам postscript.

display (from imagemagick)

Мы также можем наблюдать страницу в том же документе сimagemagicksdisplay (note that панорамирование изображения из командной строки с использованием «отображения» по-видимому, все еще недоступен, поэтому я использовал-crop ниже, чтобы настроить область просмотра):

$ display -density 150 -crop 740x450+280+200 fontspec.pdf[2]
   **** Warning: considering '0000000000 00000 n' as a free entry.
...
   **** This file had errors that were repaired or ignored.
   **** The file was produced by: 
   **** >>>> Mac OS X 10.5.4 Quartz PDFContext <<<<
   **** Please notify the author of the software that produced this
   **** file that it does not conform to Adobe's published PDF
   **** specification.

... который порождает некоторыеghostscripошибки ish - и результаты с чем-то вроде этого:

imagemagick-display-pdf.png

... где очевидно, что отсутствующие шрифты, которыеevince не может отображаться, теперь отображаются здесь, сimagemagicksdisplay, должным образом.

ghostscript

Наконец, мы можемиспользовать ghostscript в качестве средства просмотра x11 Сам - наблюдать за той же страницей, тем же документом:

$ gs -sDevice=x11 -g740x450 -r150x150 -dFirstPage=3 \
-c '<</PageOffset [-120 520]>> setpagedevice' \
-f fontspec.pdf

GPL Ghostscript 9.02 (2011-03-30)
Copyright (C) 2010 Artifex Software, Inc.  All rights reserved.
This software comes with NO WARRANTY: see the file PUBLIC for details.
   **** Warning: considering '0000000000 00000 n' as a free entry.
   **** Warning: considering '0000000000 00000 n' as a free entry.
   **** Warning: considering '0000000000 00000 n' as a free entry.
   **** Warning: considering '0000000000 00000 n' as a free entry.
   **** Warning: considering '0000000000 00000 n' as a free entry.
   **** Warning: considering '0000000000 00000 n' as a free entry.
   **** Warning: considering '0000000000 00000 n' as a free entry.
Processing pages 3 through 74.
Page 3
>>showpage, press <return> to continue<<
^C

... и результаты с таким выводом:

ghostscript-pdf-view.png

& # XA0;

В заключение:ghostscript (а такжеapparently по расширению,imagemagick) может найти отсутствующий шрифт (или хотя бы заменить его) и отобразить страницу с этим - даже еслиevince не удается при этом для того же документа.

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

$ gs -dBATCH -dNOPAUSE -dSAFER  \
-dEmbedAllFonts -dSubsetFonts=true -dMaxSubsetPct=99 \
-dAutoFilterMonoImages=false \
-dAutoFilterGrayImages=false \
-dAutoFilterColorImages=false \
-dDownsampleColorImages=false \
-dDownsampleGrayImages=false \
-dDownsampleMonoImages=false \
-sDEVICE=pdfwrite \
-dFirstPage=3 -dLastPage=3 \
-sOutputFile=mypg3out.pdf -f fontspec.pdf

GPL Ghostscript 9.02 (2011-03-30)
Copyright (C) 2010 Artifex Software, Inc.  All rights reserved.
This software comes with NO WARRANTY: see the file PUBLIC for details.
   **** Warning: considering '0000000000 00000 n' as a free entry.
   **** Warning: considering '0000000000 00000 n' as a free entry.
   **** Warning: considering '0000000000 00000 n' as a free entry.
   **** Warning: considering '0000000000 00000 n' as a free entry.
   **** Warning: considering '0000000000 00000 n' as a free entry.
   **** Warning: considering '0000000000 00000 n' as a free entry.
   **** Warning: considering '0000000000 00000 n' as a free entry.
Processing pages 3 through 3.
Page 3

   **** This file had errors that were repaired or ignored.
   **** The file was produced by:
   **** >>>> Mac OS X 10.5.4 Quartz PDFContext <<<<
   **** Please notify the author of the software that produced this
   **** file that it does not conform to Adobe's published PDF
   **** specification.

... но это не работает - выходной файлmypg3out.pdf страдает от тех же проблем вevince как отмечалось ранее.

Note: While I'd like to avoid the postscript roundtrip, a good example of gs command line with from pdf to ps with font embedding is here: (# 277826) pdf - Как заставить GhostScript PS2PDF остановить поднабор шрифтов; но та же командная строка переключается с .pdf на .pdf, чтобы, кажется, не иметь никакого влияния на проблему, описанную выше.

Ответы на вопрос(1)

Ваш ответ на вопрос