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

本文转载自

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

猜你喜欢

转载自blog.csdn.net/lizhengyu891231/article/details/81052594