Преобразование TIFF в PDF с помощью Ghostscript

Не могли бы вы рассказать мне, как я могу конвертировать TIFF в PDF с помощью Ghostscript или Postscript?

Я попытался использовать эту команду:

gswin32c.exe -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -sOutputFile=o.pdf test.tif

Но это не работает.

Выдает ошибку:

GPL Ghostscript 9.06 (2012-08-08)
Copyright (C) 2012 Artifex Software, Inc.  All rights reserved.
This software comes with NO WARRANTY: see the file PUBLIC for details.
Error: /undefined in II*
Operand stack:

Execution stack:
   %interp_exit   .runexec2   --nostringval--   --nostringval--   --nostringval--   2   %stopped_push   --nostringval--   --nostringval--   --nostringval--   false   1   %stopped_push   1910   1   3   %oparray_pop   1909   1   3   %oparray_pop   1893   1   3   %oparray_pop   1787   1   3   %oparray_pop   --nostringval--   %errorexec_pop   .runexec2   --nostringval--   --nostringval--   --nostringval--   2   %stopped_push   --nostringval--
Dictionary stack:
   --dict:1169/1684(ro)(G)--   --dict:0/20(G)--   --dict:77/200(L)--
Current allocation mode is local
Current file position is 4
GPL Ghostscript 9.06: Unrecoverable error, exit code 1


person user2065631    schedule 04.03.2013    source источник
comment
Хотя приятно видеть, что для этого можно использовать gs, либо tiff2pdf ( remotesensing.org/libtiff ), либо tifftopnm, pnmtops (netpbm.sourceforge.net/), вероятно, являются предпочтительными, более надежными и быстрыми решениями.   -  person agentp    schedule 07.03.2013


Ответы (6)


Ghostscript читает PDF и PostScript в качестве входных данных, он не читает форматы изображений и, в частности, не читает TIFF. Однако PostScript — это язык программирования, поэтому вполне возможно написать программу PostScript для чтения файла TIFF (программы viewgif.ps и viewjpeg.ps, поставляемые с Ghostscript, делают это для форматов GIF и JPEG).

У меня есть программа, которая делает это до определенного момента, и она несколько раз публиковалась на comp.lang.postscript. Он довольно большой, чтобы поделиться здесь (33 КБ), но я могу отправить вам копию по электронной почте, если вы заинтересованы.

person KenS    schedule 05.03.2013
comment
Нашел ссылку (groups.google.com/d/msg/ comp.lang.postscript/xLMTVNzGNXQ/), используя забавную строку поиска ken read tiff. Очень хорошая работа! +1 - person luser droog; 06.03.2013
comment
В этой версии кода есть некоторые ошибки, если кому-то интересно, я буду рад сделать текущую версию доступной. Но учтите, что у реализации есть известные ограничения (см. FIXME), и я не могу предоставить никаких гарантий или обещаний о поддержке программы. Также, вероятно, лучше использовать какое-нибудь приличное приложение для работы с изображениями, это было (как я сказал в comp.lang.postscript) просто интеллектуальным упражнением. - person KenS; 06.03.2013
comment
Понял. Но всегда приятно увидеть профессионально выглядящий код, чтобы сравнить свои собственные глиняные скульптуры. :) - person luser droog; 07.03.2013
comment
@KenS HI, как я понимаю, сначала нам нужно преобразовать tif в pdf с помощью любого постскриптума, а затем, используя этот pdf в качестве входных данных, нам нужно сжать pdf в ghostscript. Это правильно? - person User09111993; 03.04.2020
comment
Извините, но я не знаю, о чем вы здесь спрашиваете. Этот вопрос касается чтения файла TIFF с использованием Ghostscript, что вы можете сделать, написав программу PostScript (не «любой PostScript», а программу PostScript, специально написанную для этой работы). Ghostscript не «сжимает» файлы PDF. - person KenS; 03.04.2020

Программный пакет libtiff (доступный на всех основных платформах ОС) поставляется с инструментом командной строки под названием tiff2pdf.

$ tiff2pdf -h
  LIBTIFF, Version 4.0.3
  Copyright (c) 1988-1996 Sam Leffler
  Copyright (c) 1991-1996 Silicon Graphics, Inc.
  
  usage:  tiff2pdf [options] input.tiff
  options:
   -o: output to file name
   -j: compress with JPEG
   -z: compress with Zip/Deflate
   -q: compression quality
   -n: no compressed data passthrough
   -d: do not compress (decompress)
   -i: invert colors
   -u: set distance unit, 'i' for inch, 'm' for centimeter
   -x: set x resolution default in dots per unit
   -y: set y resolution default in dots per unit
   -w: width in units
   -l: length in units
   -r: 'd' for resolution default, 'o' for resolution override
   -p: paper size, eg "letter", "legal", "A4"
   -F: make the tiff fill the PDF page
   -f: set PDF "Fit Window" user preference
   -e: date, overrides image or current date/time default, YYYYMMDDHHMMSS
   -c: sets document creator, overrides image software default
   -a: sets document author, overrides image artist default
   -t: sets document title, overrides image document name default
   -s: sets document subject, overrides image image description default 
   -k: sets document keywords
   -b: set PDF "Interpolate" user preference
   -h: usage

Таким образом, простой командой для получения PDF-файла будет:

$ tiff2pdf -o output.pdf -p A4 -F test.tif
person Kurt Pfeifle    schedule 24.05.2015
comment
tiff2pdf (0.40.0) весьма ограничен — он не обрабатывает некоторые экзотические файлы TIFF, в частности файлы TIFF, содержащие образцы в кодировке JPEG. Он незаметно портит изображение и отображает действительный PDF-файл. Ранние версии хуже. - person jbarlow; 09.02.2016
comment
@jbarlow: Моя версия libtiff/tiff2pdf — 4.0.6 (но вы правы, указывая на ее ограничения — ограничения есть в ЛЮБОМ программном обеспечении, которое вы используете; вы должны выяснить сами, касается ли это свой собственный практический вариант использования, попробовав + протестировав его...) - person Kurt Pfeifle; 09.02.2016
comment
Для Debian/Ubuntu и т. д. пакет libtiff-tools - person scoobydoo; 09.05.2017

Используйте утилиту gdal_translate. Он предназначен для геопространственных растровых изображений, но ему все равно, если это просто обычное изображение.

gdal_translate -of pdf \path\to\someimage.tif test.pdf

Дополнительная информация о драйвере geo-pdf и его параметрах: http://www.gdal.org/frmt_pdf.html

По умолчанию применяется сжатие DEFLATE, что хорошо, потому что оно без потерь, но не создает очень маленькие файлы. Обычно использование параметров PREDICTOR и TILED может увеличить сжатие (но не всегда, проверьте свои данные).

gdal_translate -of pdf ^
--config COMPRESS=DEFLATE --config PREDICTOR=2 --config TILED=YES ^
in.tif deflate.pdf

Для самых маленьких файлов используйте JPEG. Для комбинированного наименьшего размера и с наименьшими потерями используйте JPEG2000, но проверьте в клиентской программе чтения PDF-файлов, потому что поддержка не универсальна (последняя версия Adobe Reader в порядке).

gdal_translate -of pdf -co compress=jpeg -co jpeg_quality=85 ^
inimage.tif outdoc.pdf

gdal_translate -of pdf -co compress=jpeg2000 ...

-co для краткости, он взаимозаменяем с --config. Верхний регистр в первом примере является условным, в командной строке это не имеет значения. ^ - это символ Windows для подавления перевода строки, пропустить, если все в одной строке.

Получение готовых двоичных файлов: http://trac.osgeo.org/gdal/wiki/DownloadingGdalBinaries

Выяснить, какой дистрибутив использовать, будет непросто, если вы ничего не знаете о географических информационных системах. Если все, что вам нужно, это разместить программу где-нибудь и запустить ее, скачайте "скомпилированные двоичные файлы в одном zip-архиве" из GIS Internals, 32-разрядная стабильная версия, январь 2015 г. здесь, распаковать и начать с SDKShell.bat.

person matt wilkie    schedule 14.04.2015
comment
Работает, но GDAL имеет тенденцию удалять сжатие. - person jbarlow; 09.02.2016
comment
Сжатие @jbarlow должно быть явно направлено, изначально опущено для ясности. добавлю еще один пример - person matt wilkie; 09.02.2016

Я конвертирую файл Tiff в файл Pdf с помощью Imagick

код :

$document = new Imagick(test.tiff); 

$document->setImageFormat("pdf");

$document->writeImages("test.pdf", true);
person HP371    schedule 20.05.2015

Лучшим инструментом, который я использовал до сих пор, был Irfanview. Это позволило нам сделать очень неясную версию файлов TIFF, а также позволило нам выполнять смешанные преобразования TIFF в PDF, где некоторые страницы были в оттенках серого, некоторые были цветными, а некоторые были закодированы по факсу CCITT4.

Я создал программу .NET, которая конвертировала миллионы документов с помощью Irfanview с помощью этой командной строки:

C:\Program Files (x86)\IrfanView\i_view32.exe TIFFFile.tiff /convert=OutputPDFFile.pdf /silent /cmdexit

Программа .NET, по сути, просто передала полные пути к входным файлам TIFF и выходным файлам PDF.

Настройка

Скачайте Irfanview 32bit. Не все плагины доступны для 64-битной версии, поэтому я использовал 32-битную.

Затем загрузите пакет плагинов для Irfanview и установите его.

Затем откройте Irfanview, и вам нужно определить настройки либо для плагина IMPdf (устаревший плагин только для 32-разрядных версий), либо для более нового плагина PDF, перейдя в «Файл»> «Пакетное преобразование/переименование».

Настройки в окне «Пакетное преобразование/переименование» остаются в силе для каждого последующего запуска программы, поскольку они сохраняются в INI-файле Irfanview.

Нажмите «Формат вывода», затем выберите «PDF».

Затем нажмите кнопку ВАРИАНТЫ. Это позволит вам контролировать параметры того, что произойдет с входным файлом TIFF при его преобразовании в PDF.

Затем попробуйте irfanview сделать это вручную для нескольких файлов TIFF, чтобы обеспечить желаемый результат.

Затем вы можете автоматизировать это с помощью программы...

person Matt    schedule 27.12.2018

Я конвертирую файл PDF в файл Tiff с помощью Ghostscript с помощью Java в Ubuntu.
фрагменты кода :

String convertCommand = "gs -dNOPAUSE -q -sDEVICE=tiff24nc -sCompression=lzw -dBATCH -sOutputFile=" + outputFile + " " + sourceFile;
Время выполнения rt = Runtime.getRuntime();
Процесс pr = rt .exec(convertCommand);
pr.waitFor();

Если вам нужно сжатие, просто замените команду на
String convertCommand = "gs -dNOPAUSE -q -sDEVICE=tifflzw -dBATCH -sOutputFile=" + outputFile + " " + исходный файл;

Пожалуйста, установите Ghostscript перед его использованием,
1. sudo apt-get install ghostscript libtiff-tools

person PKhode    schedule 12.06.2013
comment
ОП хочет конвертировать TIFF->PDF. Ваш ответ напрасный: речь идет о конвертации PDF->TIFF. - person Kurt Pfeifle; 24.05.2015