Ошибка GhostScript - PullRequest
       8

Ошибка GhostScript

3 голосов
/ 17 сентября 2010

В конкретном PDF при выполнении следующей команды:

gs -dSAFER -dBATCH -dNOPAUSE -dQUIET -dFirstPage=1 -dLastPage=1 -sDEVICE=pdfwrite -sOutputFile=output.pdf input.pdf

Я получаю эту ошибку:

GPL Ghostscript 8.71: Warning: 'loca' length 188 is greater than numGlyphs 93 in the font MGOXZX+Arial-BoldMT.

Есть идеи, что означает эта ошибка и как решить проблему?

1 Ответ

3 голосов
/ 17 сентября 2010

Во-первых, Ghostscript объявил это не «ошибкой», а «предупреждением». Это большая разница.

Во-вторых, вы попросили Ghostscript вывести первую страницу ввода PDF. Это сработало? Видите ли вы видимые различия при сравнении output.pdf и первой страницы input.pdf?

В-третьих, если действительно есть проблема, вы должны указать, какую версию Ghostscript вы используете. самый последний - 8,71 .


Обновление: Конечно, StackOverflowNewbie уже намекал на версию Ghostscript, цитируя предупреждающее сообщение ...

«Предупреждение» означает: может быть проблема с выходным файлом (который сам по себе является действительным PDF-файлом), но лучше его проверить.

«Ошибка» означает: с выходными данными, безусловно, есть проблема, и Ghostscript прервет всю дальнейшую обработку; выходной файл, скорее всего, даже не является действительным PDF.

Существует множество различных способов дальнейшей отладки проблемы. Но невозможно дать какой-либо совет по нанесению гвоздя, если вы не видите файлы, о которых идет речь. StackOverflowNewbie сообщает, что страница вывода отличается от ввода.

Итак, вот кувалда, которую нужно использовать: добавьте -dDEBUG в командную строку:

gs \
  -sOutputFile=output.pdf \
  -dDEBUG \
  -dLastPage=1 \
  -sDEVICE=pdfwrite \
   input.pdf

Предостережение! Это может привести к огромному количеству вывода stderr / stdout в вашей консоли.

Если вы уже знаете или у вас есть определенная подсказка, где точная проблема может быть укоренена (что вы, вероятно, даже можете прямо предположить, глядя на визуальные различия между входным и выходным PDF), вы можете сузить ее, используя (вместо -dDEBUG) одно из следующего по порядку:

 -dPDFDEBUG      # (debug PDF Interpreter)
 -dPDFWRDEBUG    # (debug PDF Writer)
 -dTTFDEBUG      # (debug TTF Fonts)
 -dCCFONTDEBUG   # (debug compiled-in Fonts)
 -dFAPIDEBUG     # (debug Font API)
 -dCFFDEBUG      # (debug CFF Fonts)
 -dCMAPDEBUG     # (debug CMAP)
 -dDOCIEDEBUG    # (debug CIE color)
 -dSETPDDEBUG    # (debug setpagedevice)
 -dSTRESDEBUG    # (debug Static Resources)
 -dVGIFDEBUG     # (debug ViewGIF)
 -dVJPGDEBUG     # (debug ViewJPEG)
 -dINITDEBUG     # (debug Initialization)
 -dEPSDEBUG      # (debug EPS handling)
 -dPDFOPTDEBUG   # (debug PDF Optimizer/Linearizer)

Кроме того, поскольку в предупреждении упоминается шрифт Arial-BoldMT, сначала необходимо проверить состояние встроенного шрифта обоих , страниц ввода и вывода с помощью pdfinfo и pdffonts:

 pdfinfo -f 1 -l 1 -box input.pdf
 pdfinfo -box output.pdf
 pdffonts -f 1 -l 1 input.pdf
 pdffonts output.pdf

Update2:

Вы можете попробовать извлечь шрифт из исходного PDF для дальнейшего изучения. (Если вы не знаете, как это сделать, задайте новые отдельные SO вопросы, такие как «Как извлечь шрифты из PDF для дальнейшего анализа?» и «Как я могу исследовать шрифт для внутренних неисправностей? ")

...