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方法也没用
解决方法如下
- import com.itextpdf.text.*;
- import com.itextpdf.text.pdf.PdfWriter;
- import javax.imageio.ImageIO;
- import java.awt.image.BufferedImage;
- import java.io.File;
- import java.io.FileOutputStream;
- import java.io.IOException;
- public class Img2Pdf1 {
- public static void main(String[] args) {
- try {
- String imagePath = "C:\\test.jpg";
- String pdfPath = "C:\\test.pdf";
- BufferedImage img = ImageIO.read(new File(imagePath));
- FileOutputStream fos = new FileOutputStream(pdfPath);
- Document doc = new Document(null, 0, 0, 0, 0);
- doc.setPageSize(new Rectangle(img.getWidth(), img.getHeight()));
- Image image = Image.getInstance(imagePath);
- float scalePercentage = (72 / 300f) * 100.0f;
- image.scalePercent(scalePercentage, scalePercentage);
- PdfWriter.getInstance(doc, fos);
- doc.open();
- doc.add(image);
- doc.close();
- } catch (IOException e) {
- e.printStackTrace();
- } catch (BadElementException e) {
- e.printStackTrace();
- } catch (DocumentException e) {
- e.printStackTrace();
- }
- }
- }
主要是加了这两句:
- float scalePercentage = (72 / 300f) * 100.0f;
- image.scalePercent(scalePercentage, scalePercentage);
其他代码请参考:
http://blog.csdn.net/haunghui6579/article/details/8900987上一篇: WEB中的权限管理(二)
下一篇: Nginx 访问权限管理