我应该通过哪些参数?我正在使用的Ghostscript版本是8.71。
答案 0 :(得分:23)
https://gitlab.mister-muffin.de/josch/img2pdf
正如PleaseStand所述,GhostScript将解码JPEG数据,导致generation loss,以及性能比img2pdf差十到百倍。
ImageMagick(即convert
)也对图像进行解码和重新编码。
答案 1 :(得分:15)
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 :(得分:12)
我一直在使用相同的基本命令行亨利在他的回答中给出了一段时间的简单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的尺寸,我使用ImageMagick的identify
命令:
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, <pipitas@gmail.com>
# 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}"
答案 3 :(得分:4)
或者在一些Linux发行版上convert pic1.jpg pic2.jpg out.pdf
完成混合结果的工作
答案 4 :(得分:2)
我有Ghostscript版本 9.10 ,所以下面一行的命令 DID不适用于我
/usr/local/share/ghostscript/9.02/lib/viewjpeg.ps
所以我修改了命令并编辑了这条线并且insted使用了这个, IT为我工作
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"
答案 5 :(得分:1)