欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

java使用itextpdf将图片转换成pdf时DPI的问题

程序员文章站 2024-03-19 13:39:52
...

本文转载自

https://blog.csdn.net/shakalin2008/article/details/78804267


在使用itext转换图片为PDF时,不论原文件的DPI为多少,转出的PDF的DPI均为72

使用Image类的setDpi方法也没用

解决方法如下

  1. import com.itextpdf.text.*;
  2. import com.itextpdf.text.pdf.PdfWriter;
  3. import javax.imageio.ImageIO;
  4. import java.awt.image.BufferedImage;
  5. import java.io.File;
  6. import java.io.FileOutputStream;
  7. import java.io.IOException;
  8. public class Img2Pdf1 {
  9. public static void main(String[] args) {
  10. try {
  11. String imagePath = "C:\\test.jpg";
  12. String pdfPath = "C:\\test.pdf";
  13. BufferedImage img = ImageIO.read(new File(imagePath));
  14. FileOutputStream fos = new FileOutputStream(pdfPath);
  15. Document doc = new Document(null, 0, 0, 0, 0);
  16. doc.setPageSize(new Rectangle(img.getWidth(), img.getHeight()));
  17. Image image = Image.getInstance(imagePath);
  18. float scalePercentage = (72 / 300f) * 100.0f;
  19. image.scalePercent(scalePercentage, scalePercentage);
  20. PdfWriter.getInstance(doc, fos);
  21. doc.open();
  22. doc.add(image);
  23. doc.close();
  24. } catch (IOException e) {
  25. e.printStackTrace();
  26. } catch (BadElementException e) {
  27. e.printStackTrace();
  28. } catch (DocumentException e) {
  29. e.printStackTrace();
  30. }
  31. }
  32. }

主要是加了这两句:
  1. float scalePercentage = (72 / 300f) * 100.0f;
  2. image.scalePercent(scalePercentage, scalePercentage);

其他代码请参考:

http://blog.csdn.net/haunghui6579/article/details/8900987
相关标签: ITEXT