Как получать уведомления о ходе выполнения GhostPDL при преобразовании XPS в PDF?

На данный момент я использую Process для вызова GhostPDL для преобразования файлов XPS в файлы PDF.

Проблема в том, что иногда эти преобразования занимают некоторое время. В настоящее время я использую уведомление, чтобы позволить пользователю подождать. Но я хотел бы иметь какой-то индикатор выполнения. Я читал, что для этого можно использовать StandardError, но я даже не знаю, как заставить GhostPDL выводить статус прогресса из командной строки. Я попытался найти руководство, чтобы узнать, есть ли аргумент для включения, но мне не повезло.

Есть ли способ включить вывод статуса или хотя бы альтернативные способы конвертации XPS в PDF? Я открыт для любых идей.


person Jonathan Ablanida    schedule 18.06.2011    source источник
comment
Являются ли ваши файлы XPS многостраничными или одностраничными? Можете ли вы дать ссылку на образец файла XPS?   -  person Kurt Pfeifle    schedule 18.06.2011
comment
Файл xps представляет собой страницу отчета с эскизами изображений. Чем больше изображений добавлено, тем больше страниц будет создано. В настоящее время у меня нет с собой файлов XPS, но я постараюсь получить их онлайн, как только смогу. Среднее время конверсии составляет около 5+ секунд, и экран в некотором роде «блокируется», поэтому он не очень удобен для пользователя, и я хотел бы знать пользователя, что происходит.   -  person Jonathan Ablanida    schedule 19.06.2011


Ответы (1)


На моем ноутбуке Lenovo T500 под управлением Ubuntu Natty с 2 ГБ ОЗУ и использованием GhostPDL 9.02 потребовалось 2,3 секунды для преобразования предоставленного Microsoft 38-страничного XPS (ExchangeServer2007_ AdminComp_chapter_02.xps) в идеальный PDF-документ:

 time gxps \
   -dDEBUG \
   -o ExchangeServer2007_AdminComp_chapter_02.xps.gxps.pdf \
   -sDEVICE=pdfwrite \
    ExchangeServer2007_AdminComp_chapter_02.xps

 real   0m2.213s
 user   0m1.852s
 sys    0m0.200s

Однако я думаю, что gxps (команда GhostPDL, которая может конвертировать XPS в PDF, в настоящее время не предоставляет никаких стандартных средств, чтобы сделать ее более болтливой на стандартном выходе - даже -dDEBUG не работает)...


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

Конечно, вы всегда можете распечатать XPS на «PDF-принтере». Есть разные способы сделать это в командной строке, что может дать вам некоторую информацию о прогрессе.

Если вы заранее знаете, сколько страниц вам нужно преобразовать, то (дерьмовым) обходным путем с GhostPDL может быть преобразование файла по частям с использованием конструкции типа -dFirstPage=1 -dLastPage=10 и информирование пользователя о том, что в настоящее время страницы 1-10 отсутствуют. NNN обрабатываются.

Обновление 2. Вот способ получения отзыва о стандартном выводе по мере обработки каждой страницы:

 time gxps \
   '-Z|' \
   -o ExchangeServer2007_AdminComp_chapter_02.xps.gxps.pdf \
   -sDEVICE=pdfwrite \
    ExchangeServer2007_AdminComp_chapter_02.xps

Обратите внимание на одинарные кавычки ' вокруг -Z|. Второй символ – это знак труба, а не заглавная i... Результат:

 start part /FixedDocumentSequence.fdseq
 fixdoc /Documents/1/FixedDocument.fdoc
 page /Documents/1/Pages/1.fpage w=0 h=0
 page /Documents/1/Pages/2.fpage w=0 h=0
 page /Documents/1/Pages/3.fpage w=0 h=0
 [....]
 page /Documents/1/Pages/37.fpage w=0 h=0
 page /Documents/1/Pages/38.fpage w=0 h=0

Спасибо разработчику Ghostscript Тору Андерсону, который дал мне решающую подсказку в IRC-канале #ghostscript на Freenode.

person Kurt Pfeifle    schedule 18.06.2011
comment
я все еще открыт для любых других альтернатив. какие-либо предложения? - person Jonathan Ablanida; 19.06.2011
comment
Знаете ли вы какие-либо бесплатные PDF-принтеры? - person Jonathan Ablanida; 21.06.2011
comment
@Jonathan Ablanida: Пожалуйста, посмотрите на мое второе обновление выше. Надеюсь это поможет. - person Kurt Pfeifle; 22.06.2011
comment
Большое тебе спасибо! Это как раз то, что я искал! Кроме того, извините за поздний ответ, вся неделя была занята. - person Jonathan Ablanida; 25.06.2011