iText图像resize

我有一个水印,我想把它放入我的PDF格式。 水印是.bmp图像,并且是2290 x 3026.我在尝试调整此图片以适应页面时遇到了很多麻烦,有没有人有任何建议?

Document document = new Document(); PdfWriter.getInstance(document, new FileOutputStream("result.pdf")); document.open(); document.add(new Paragraph("hello")); document.close(); PdfReader reader = new PdfReader("result.pdf"); int number_of_pages = reader.getNumberOfPages(); PdfStamper pdfStamper = new PdfStamper(reader, new FileOutputStream("result_watermark.pdf")); // Get the PdfContentByte type by pdfStamper. Image watermark_image = Image.getInstance("abstract(0307).bmp"); int i = 0; watermark_image.setAbsolutePosition(0, 0); watermark_image.scaleToFit(826, 1100); System.out.println(watermark_image.getScaledWidth()); System.out.println(watermark_image.getScaledHeight()); PdfContentByte add_watermark; while (i < number_of_pages) { i++; add_watermark = pdfStamper.getUnderContent(i); add_watermark.addImage(watermark_image); } pdfStamper.close(); 

这是getScaled()方法的输出。

 826.0 - Width 1091.4742 - Height 

我会和你们分享pdf的图片,但不幸的是我不能。

我应该尝试使用.jpg吗? 我真的不知道iText如何处理不同的图像扩展。

您可以使用另一种方法:“手动”(即通过图像处理软件)调整图像大小,而不是通过iText以编程方式。

由于最终尺寸似乎是硬编码的,因此您可以使用已resize的图像,并在每次为PDF文档添加水印时节省一些处理时间。

我这样做:

 //if you would have a chapter indentation int indentation = 0; //whatever Image image = coolPic; float scaler = ((document.getPageSize().getWidth() - document.leftMargin() - document.rightMargin() - indentation) / image.getWidth()) * 100; image.scalePercent(scaler); 

也许是旧式但它对我有用;)

使用

 watermark_image.scaleAbsolute(826, 1100); 

代替

 watermark_image.scaleToFit(826, 1100); 

以防万一图像高度超过文档高度:

 float documentWidth = document.getPageSize().width() - document.leftMargin() - document.rightMargin(); float documentHeight = document.getPageSize().height() - document.topMargin() - document.bottomMargin(); image.scaleToFit(documentWidth, documentHeight); 

您可以使用

 imageInstance.scaleAbsolute(requiredWidth, requiredHeight); 
 Document document = new Document(); PdfWriter.getInstance(document, new FileOutputStream("F:\\Directory1\\sample1.pdf")); document.open(); Image img = Image.getInstance("F:\\Server\\Xyz\\WebContent\\ImageRestoring\\Rohit.jpg"); img.scaleToFit(200, 200); document.add(new Paragraph("Sample 1: This is simple image demo.")); document.add(img); document.close(); System.out.println("Done"); 

//上面的程序运行完美,缩放图像,希望你也能找到完美的,我们可以扩展任何图像格式。