Używanie Ghostscript do konwersji JPEG do PDF
Jakie są parametry, które powinienem przekazać? Wersja Ghostscript, której używam to 8.71.
6 answers
gs \
-sDEVICE=pdfwrite \
-o foo.pdf \
/usr/local/share/ghostscript/8.71/lib/viewjpeg.ps \
-c \(my.jpg\) viewJPEG
Czyta Mój.jpg i produkuje foo.pdf . Będziesz musiał znaleźć, gdzie twoja instalacja zainstalowała program PostScript viewjpeg.ps
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-06-24 17:55:32
Https://gitlab.mister-muffin.de/josch/img2pdf
Jak wspomniał PleaseStand, GhostScript zdekoduje dane JPEG, powodując utratę generacji , a także wydajność "dziesięć do stu" razy gorszą niż img2pdf.
ImageMagick (tj. convert
) również dekoduje i ponownie koduje obrazy.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-25 22:19:10
Używam tej samej podstawowej linii poleceń, którą Henry dał w swojej odpowiedzi od dłuższego czasu w prostym skrypcie Bash, z kilkoma poprawkami.
Mój pełny skrypt konwertuje wiele obrazów JPEG do wielostronicowego pliku PDF, używając zmodyfikowanego polecenia:
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"
Nazywa się tak:
jpegs2pdf.sh output.pdf file1.jpeg [file2.jpeg [file2.jpeg [...]]]
Problem polega na tym, że to polecenie użyje tego samego (domyślnego) rozmiaru strony Ghostscript (Zwykle Letter lub A4 w trybie portretowym), a każdy obraz JPEG zostanie przeskalowany tak, aby pasował do tej strony i / lub pageheight, umieszczone w lewym dolnym rogu.
Mój skrypt sprawia, że każda strona PDF używa tych samych wymiarów, co oryginalny JPEG dla strony. Do automatycznego wykrywania wymiarów JPEG używam polecenia ImageMagick identify
:
identify -format "%[fx:(w)] %[fx:(h)]" some.jpeg
Oto kod całego skryptu:
#!/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 "$@" ; 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}"
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-29 10:33:00
Alternatywnie na niektórych dystrybucjach Linuksa convert pic1.jpg pic2.jpg out.pdf
wykonuje zadanie z mieszanymi wynikami
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-09-23 16:45:53
Mam wersję Ghostscript 9.10, więc polecenie z poniższej linii nie zadziałało dla mnie
/usr/local/share/ghostscript/9.02/lib/viewjpeg.ps
Więc zmodyfikowałem polecenie i edytowałem linię I wstawiłem to, zadziałało dla mnie
viewjpeg.ps
Więc nowe zmodyfikowane POLECENIE jest poniżej:
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"
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-03-07 07:52:15
GhostScript jest interpreterem PostScriptu, więc nie obsługuje bezpośrednio wejścia JPEG, tylko wyjście JPEG. To powiedziawszy, obsługuje dekompresję JPEG (z wyjątkiem progresywnego JPEG).
Istnieje program PostScript i towarzyszący mu skrypt powłoki, którego możesz użyć do skorzystania z tego o nazwie jpeg2eps. Aby uzyskać plik PDF, większość systemów posiada skrypt pstopdf
dostępny do użycia, który uruchamia każdy z plików wejściowych (można użyć wyjścia skryptu jpeg2eps) przez GhostScript.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-11-26 08:15:12