在不使用 ghostscript 或 itext 调整图像大小的情况下将 JPG 图像转换为 PDF

Converting JPG image to PDF without resizing image with ghostscript or itext

我正在尝试将 JPG 格式的图像与标准 PDF 文档合并,同时保持图像大小相同。早些时候我使用的是 ImageMagick 的 convert,但它会导致质量大幅下降,因为它将所有内容都转换为图像,所以我切换到 ghostscript(或最终是 itextpdf)。

我发现 this code 将缩放图像插入 A4 页面:

gs \
 -sDEVICE=pdfwrite \
 -o foo.pdf \
  /usr/local/share/ghostscript/8.71/lib/viewjpeg.ps \
 -c \(my.jpg\) viewJPEG

this way or that way 中 itextpdf 的 PdfWriter 可能是替代方案,但它还会将图像添加到页面中。

在检查 ImageMagick 的行为后,我发现它使用的命令是我认为最接近我的解决方案的,但是当我尝试修改或使用它时它似乎不起作用。我该如何修改?

gs -q -dQUIET -dSAFER -dBATCH -dNOPAUSE -dNOPROMPT -dMaxBitmap=500000000 -dAlignToPixels=0 -dGridFitTT=2 -sDEVICE=pngalpha -dTextAlphaBits=4 -dGraphicsAlphaBits=4 -r72x72  -sOutputFile=out_gs.pdf fox_big.jpg

您的问题的答案可以在官方 iText 网站上找到:How to add multiple images into a single PDF?

MultipleImages example, we take a selection of images, and we convert them to a PDF: multiple_images.pdf

页面大小设置为与图像大小相匹配:

第一张图片:

Image img = Image.getInstance(IMAGES[0]);
Document document = new Document(img);

如您所见,我们将 img 传递给 Document 构造函数。这是可行的,因为 Image 扩展了 Rectangle class.

对于后续图片,我们更改页面大小:

document.setPageSize(img);

注意我们还需要设置绝对位置:

img.setAbsolutePosition(0, 0);

如果您想查找有关 iText 的信息和示例,请转到 official web site。我花了好几个月的时间来编写所有这些内容并将其发布到网站上。当我看到人们没有利用所有这些工作时,我感到很沮丧。 (感觉浪费了时间。)