如何减少生成的pdf大小?

a14dhokn  于 2021-06-27  发布在  Java
关注(0)|答案(0)|浏览(204)

我正在用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();
}

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题