Какими параметрами я должен пройти? Версия Ghostscript, которую я использую, - 8.71.
Использование Ghostscript для преобразования JPEG в PDF
Ответ 1
gs \
-sDEVICE=pdfwrite \
-o foo.pdf \
/usr/local/share/ghostscript/8.71/lib/viewjpeg.ps \
-c \(my.jpg\) viewJPEG
читает my.jpg и производит foo.pdf. Вам нужно будет найти, где ваша установка установила программу PostScript viewjpeg.ps.
Ответ 2
https://gitlab.mister-muffin.de/josch/img2pdf
Как упоминалось в SeeStand, GhostScript будет декодировать данные JPEG, в результате чего потеря генерации, а также производительность "в десятьсот раз" хуже чем img2pdf.
ImageMagick (т.е. convert) также декодирует и перекодирует изображения.
Ответ 3
Я использовал ту же базовую командную строку, которую Генри дал в своем ответе довольно долгое время в простой Bash script с несколькими настройками.
Мой полный script преобразует несколько изображений JPEG в многостраничный PDF, используя эту измененную команду:
gs \
-sDEVICE=pdfwrite \
-o foo.pdf \
/usr/local/share/ghostscript/9.02/lib/viewjpeg.ps \
-c "(1st.jpg) viewJPEG showpage \
(2nd.jpg) viewJPEG showpage \
(3rd.jpg) viewJPEG showpage \
(last.jpg) viewJPEG showpage"
Он вызывается так:
jpegs2pdf.sh output.pdf file1.jpeg [file2.jpeg [file2.jpeg [...]]]
Проблема заключается в том, что эта команда будет использовать тот же (по умолчанию) размер страницы Ghostscript (обычно Letter или A4 в портретном режиме), и каждое изображение JPEG будет масштабироваться, чтобы соответствовать этой ширине страницы и/или странице, нижний левый угол.
Мой script делает для каждой страницы PDF те же параметры страницы, что и исходный JPEG для страницы. Для автоматического обнаружения размеров JPEG я использую команду ImageMagick identify:
identify -format "%[fx:(w)] %[fx:(h)]" some.jpeg
Вот код полного script:
#!/bin/bash
#
#############################################################################
#
# Shellscript to convert a set of JPEG files to a multipage PDF.
#
# Requirements: (1) Ghostscript needs to be installed on the local system.
# (2) ImageMagick needs to be installed on the local system.
#
# Usage: jpegs2pdf.sh output.pdf file1.jpeg [file2.jpeg [file2.jpeg [...]]]
#
# Copyright (c) 2007, <[email protected]>
# Use, distribute and modify without any restrictions.
#
# Versions:
# v1.0.0, Jul 12 2007: initial version
# v1.0.1, Jan 07 2011: set viewJPEG.ps path (self-compiled GS 9.02)
#
#############################################################################
outfile=$1
shift
param=""
for i in "[email protected]" ; do
dimension=$(identify -format "%[fx:(w)] %[fx:(h)]" "${i}")
param="${param} <</PageSize [${dimension}]>> setpagedevice (${i}) viewJPEG showpage"
done
gs \
-sDEVICE=pdfwrite \
-dPDFSETTINGS=/prepress \
-o "$outfile" \
/usr/local/share/ghostscript/9.02/lib/viewjpeg.ps \
-c "${param}"
Ответ 4
альтернативно на некоторых дистрибутивах Linux convert pic1.jpg pic2.jpg out.pdf выполняется ли задание со смешанными результатами
Ответ 5
GhostScript - это интерпретатор PostScript, поэтому он напрямую не поддерживает вход JPEG, а только выход JPEG. Тем не менее, он поддерживает декомпрессию JPEG (за исключением прогрессивного JPEG).
Здесь есть программа PostScript и сопутствующая оболочка script, которую вы можете использовать, чтобы воспользоваться этим jpeg2eps. Чтобы получить PDF файл, большинство систем имеют script pstopdf, доступный для использования, который запускает каждый из входных файлов (вы должны использовать вывод jpeg2eps script) через GhostScript.
Ответ 6
У меня версия Ghostscript 9.10, поэтому команда с приведенной ниже строкой НЕ РАБОТАЕТ ДЛЯ МЕНЯ
/usr/local/share/ghostscript/9.02/lib/viewjpeg.ps
поэтому я модифицировал команду и отредактировал строку, и insted использовал это, IT WORKED FOR ME
viewjpeg.ps
Итак, НОВАЯ МОДИФИЦИРОВАННАЯ КОМАНДА ниже:
gs \
-sDEVICE=pdfwrite \
-o foo.pdf \
viewjpeg.ps \
-c "(1st.jpg) viewJPEG showpage \
(2nd.jpg) viewJPEG showpage \
(3rd.jpg) viewJPEG showpage \
(last.jpg) viewJPEG showpage"