2010-11-26 5 views
18

Каковы параметры, которые я должен пройти? Версия Ghostscript, которую я использую, - 8.71.Использование Ghostscript для преобразования JPEG в PDF

+1

Как упоминалось в других разделах этой страницы, использование Ghostscript для этого без необходимости декодирует и перекодирует данные JPEG. Вместо этого см. Img2pdf, на этой странице. – 2013-05-14 21:09:52

ответ

12
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.

+1

используйте `locate`, чтобы найти местоположение` viewjpeg.ps` – 2014-05-28 07:13:23

1

GhostScript - это интерпретатор PostScript, поэтому он напрямую не поддерживает вход JPEG, а только выход JPEG. Тем не менее, он поддерживает декомпрессию JPEG (за исключением прогрессивного JPEG).

Существует программа PostScript и сопутствующий сценарий оболочки, который вы можете использовать, чтобы воспользоваться этим: jpeg2eps. Чтобы получить PDF-файл, в большинстве систем имеется сценарий pstopdf, доступный для использования, который запускает каждый из входных файлов (вы должны использовать вывод сценария jpeg2eps) через GhostScript.

10

Я использую ту же базовую командную строку, которую Генри дал в своем ответе довольно долгое время в простом сценарии Bash с несколькими настройками.

Мой полный скрипт преобразует несколько изображений 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 будет масштабироваться, чтобы соответствовать этой ширине страницы и/или странице, находясь в левом нижнем углу.

В моем сценарии каждая страница PDF использует те же размеры страницы, что и исходный JPEG для страницы. Для автоматического обнаружения размеров в формате JPEG, я использую identify команду ImageMagick в:

identify -format "%[fx:(w)] %[fx:(h)]" some.jpeg 

Вот код полного сценария:

#!/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}" 
+0

hay Я использовал скрипт ur без `ident -format` и pdf, но .jpg изображения выровнены на botton, как я могу привести их в начало страницы pdf , и `ident -format"% [fx: (w)]% [fx: (h)] "some.jpeg ` возвращает null, поэтому я его не использую. – run 2012-02-22 08:56:31

+0

@run: на какой ОС вы запускаете `идентификатор`? Что говорит вам «идентификация -version»? Вы знаете, что вы также можете использовать `define some.jpeg` вручную, который вернет строку, обозначающую размеры WxH JPEG в пикселях, которые затем можно использовать для вставки в командную строку вручную .... – 2012-02-22 17:40:42

+0

unix. и i achiecev это с помощью `dimension = $ (define -format"% w% h "" $ {x} ")`, но есть ли способ, кроме использования `width и height`, устанавливать изображение поверх страницы вместо дно. я был бы рад, если бы получил какие-либо ссылки, чтобы получить хорошую документацию по этому поводу. – run 2012-02-23 06:03:09

4

в качестве альтернативы на некоторых Линукс дистрибутивы convert pic1.jpg pic2.jpg out.pdf делает работу со смешанными результатами

20

https://gitlab.mister-muffin.de/josch/img2pdf

Как упомянуто PleaseStand, GhostScript будет декодировать данные JPEG , в результате чего generation loss, а также производительность «в десятьсот» раз хуже, чем img2pdf.

ImageMagick (то есть convert) также декодирует и перекодирует изображения.

1

У меня есть версия Ghostscript 9.10, поэтому команда с ниже линии НЕ РАБОТАЛ ДЛЯ МЕНЯ

/usr/local/share/ghostscript/9.02/lib/viewjpeg.ps

поэтому я modifid команду и редактировать строку и InstEd использовал это, IT РАБОТАЛ ДЛЯ МЕНЯ

viewjpeg.ps 

Так NEW ОБНОВЛЕНО КОМАНДУ ниже:

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" 
Смежные вопросы