在使用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);
其他代码请参考: