GhostScript создает дополнительную страницу при возникновении ошибок шрифта - PullRequest
0 голосов
/ 09 апреля 2019

У меня есть процесс, которому нужно записать несколько файлов postscript и pdf в один файл postscript, сгенерированный и который будет по-прежнему изменяться с помощью кода VB взаимодействия слов. Каждый вызов ghostscript приводит к дополнительной пустой странице. Я использую GhostScript 9.27.

Поскольку здесь есть несколько технологий и факторов, я сузил их: проблему можно продемонстрировать путем преобразования файла postscript в postscript, а затем в pdf через командную строку. Проблема не возникает при переходе непосредственно из postscript в pdf. Вот пример и пример ошибок.

C:\>"C:\Program Files (x86)\gs\gs9.27\bin\gswin32c.exe" -dNOPAUSE -dBATCH -sDEVICE=ps2write -sOutputFile=C:\testfont.ps C:\smallexample.ps
C:\>"C:\Program Files (x86)\gs\gs9.27\bin\gswin32c.exe" -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=C:\testfont.pdf C:\testfont.ps

Can't find (or can't open) font file %rom%Resource/Font/TimesNewRomanPSMT.
Can't find (or can't open) font file TimesNewRomanPSMT.
Can't find (or can't open) font file %rom%Resource/Font/TimesNewRomanPSMT.
Can't find (or can't open) font file TimesNewRomanPSMT.
Querying operating system for font files...
Didn't find this font on the system!
Substituting font Times-Roman for TimesNewRomanPSMT.

Я начинаю с предположения, что ошибки шрифта являются причиной дополнительной страницы (если только исключить это, я знаю, что это не точно). Так как в моем тесте ps-> pdf эта проблема не возникает, а в моем ps-> ps-> pdf я думаю, что ghostscript не записывает данные шрифта, которые были в исходном файле postscript, в тот, который он создает. Я ищу способ сохранить / восстановить это в результирующем файле postscript. Или, если это невозможно, мне понадобится способ рассказать ghostscript, как использовать эти шрифты. Мне не удалось включить их, как описано в документации GS здесь: https://www.ghostscript.com/doc/current/Use.htm#CIDFontSubstitution.

Любая помощь приветствуется.

Ответы [ 2 ]

0 голосов
/ 10 апреля 2019

Спасибо за ответ. В качестве ответа я также публикую сообщения из-за ограничений на длину комментария:

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

У меня есть процесс, который использует библиотеки VB MSWord Interop для печати нескольких документов в один файл PS с использованием виртуального принтера, настроенного с помощью ghostscript и redmon. Я добавляю функциональность, чтобы смешивать в PDF-файлы тоже. Это работает, но приводит к дополнительной странице. Чтобы сузить суть проблемы, я попытался с помощью командной строки выполнить более простые тестовые случаи, чтобы выявить проблему. Я получаю дополнительную страницу только тогда, когда ghostscript конвертирует ps в ps (независимо от того, есть ли pdf). Преобразование PS в PDF Я не получаю дополнительную страницу. Интересно, что я могу обойти эту проблему, преобразовав ps в pdf, а затем оба pdfs обратно в ps. Это медленнее и не должно быть необходимым, поэтому я хотел бы определить и решить проблему с дополнительной страницей. Я не могу поделиться этим конкретным файлом. Я посмотрю, смогу ли я создать пример, которым я могу поделиться, который также показывает проблему. В то же время я могу подтвердить, что исходный файл ps состоит из шести страниц, а параметры дуплексной передачи следующие. В полученном файле PS с дополнительной страницей есть дуплексное определение. Могут ли быть некоторые другие распространенные виновники, которых я мог бы проверить в исходном пс? Спасибо.

featurebegin{
%%BeginFeature: *DuplexUnit NotInstalled

%%EndFeature
}featurecleanup

featurebegin{
%%BeginFeature: *Duplex None

    <</Duplex false /Tumble false>> setpagedevice
%%EndFeature
}featurecleanup
0 голосов
/ 10 апреля 2019

Я сделал это ответом, хотя я знаю, что он не отвечает на вопрос, потому что он не подходит как комментарий.

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

Вы не совсем ясно поняли, что делаете. Вы описываете два процесса, один переход от PostScript к PDF, другой переход от PostScript к PostScript (ПОЧЕМУ?), А затем к PDF.

Вы не описали, почему вы обрабатываете PostScript в файле PostScript.

В частности, вы не предоставили пример файла для просмотра. Без этого невозможно определить, является ли ваш опыт действительно правильным.

Например; Вполне возможно, что вы установили / Duplex true и имеете нечетное количество страниц в вашем файле. Это приведет к тому, что будет выделена дополнительная пустая страница (вполне правильно), потому что для двусторонней печати требуется четное количество страниц.

Документация, на которую вы ссылаетесь, предназначена для подстановки CIDFont, она не имеет ничего общего с подстановкой шрифтов, CIDFonts и Fonts - это разные вещи в PDF и (в частности) PostScript. Но я искренне сомневаюсь, что это твоя проблема.

Я бы посоветовал вам разместить (по крайней мере) «smalllexample.ps» где-нибудь в открытом доступе и опубликовать здесь URL, чтобы мы могли, по крайней мере, выполнить те же действия, что и вы. Таким образом, мы можем, вероятно, сказать вам, что происходит. Объяснение того, почему вы делаете это, также было бы полезно, я обычно настоятельно рекомендую вам не делать таких дополнительных шагов; каждый шаг сопряжен с риском ухудшения выходных данных.

...