使用Ghostscript将JPG转换为PDF

时间:2010-11-26 07:24:02

标签: ghostscript

我应该通过哪些参数?我正在使用的Ghostscript版本是8.71。

6 个答案:

答案 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)

GhostScript是PostScript解释器,因此它不直接支持JPEG输入,只支持JPEG输出。也就是说,它支持JPEG解压缩(渐进式JPEG除外)。

有一个PostScript程序和附带的shell脚本,您可以使用它来利用这个名为jpeg2eps的程序。要获取PDF,大多数系统都有可供使用的脚本pstopdf,它通过GhostScript运行每个输入文件(您将使用jpeg2eps脚本的输出)。