Какими параметрами я должен пройти? Версия 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"