将JPG图像转换为PDF而无需使用ghostscript或itext调整图像大小

时间:2016-04-14 08:03:58

标签: java pdf itext ghostscript imagemagick-convert

我正在尝试将JPG格式的图像与标准PDF文档合并,同时保持图像的大小相同。之前我使用的是ImageMagick的转换,但由于它将所有内容转换为图像,因此会导致质量下降,因此我将切换到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 waythat 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

1 个答案:

答案 0 :(得分:2)

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

MultipleImages示例中,我们选择了一些图片,并将它们转换为PDF:multiple_images.pdf

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

第一张图片:

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

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

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

document.setPageSize(img);

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

img.setAbsolutePosition(0, 0);

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