我正在用jfreesane从扫描仪获取一个bufferedimage,并用itext7生成一个pdf文件。
它工作得很好,只是生成的文件太大,大约50mb。
扫描图像为600dpi。
代码是:
try(PdfDocument pdf = new PdfDocument(new PdfWriter(digiPdf.toString()))) {
Document document = new Document(pdf);
ImageData imageData = ImageDataFactory.create(bufferedImage, null);
com.itextpdf.layout.element.Image image = new com.itextpdf.layout.element.Image(imageData);
image.setAutoScale(true);
image.setBorder(Border.NO_BORDER);
document.add(image);
document.close();
}
如何减小文件大小?
注:
我以前使用itext 5,这个api生成了一个小得多的文件(大约500kb):
Document document = new Document(PageSize.A4, 0, 0, 0, 0);
try (FileOutputStream outputStream = new FileOutputStream(digiPdf)) {
var writer = PdfWriter.getInstance(document, outputStream);
document.open();
PdfContentByte pdfCB = new PdfContentByte(writer);
var image = com.itextpdf.text.Image.getInstance(com.itextpdf.text.Image.getInstance(pdfCB, bufferedImage, 0));
image.setAbsolutePosition(0, 0);
image.setBorder(0);
image.scaleToFit(PageSize.A4.getWidth(), PageSize.A4.getHeight());
document.add(image);
document.close();
}
暂无答案!
目前还没有任何答案,快来回答吧!