本文转载自
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);
其他代码请参考: