Настройка разрешения для печати PDF-файлов с помощью JAVA и apache.pdfbox

Я использовал этот пример для написания программы для печати PDF. Но я узнал, что стандартная печать java для изображений установлена ​​​​на 72 DPI. Поэтому я поискал дальше и добавил атрибуты для изменения разрешения. Но не работает, все равно 72 DPI. Самое смешное, что черный текст прекрасно подходит. Но если цвет текста не черный, он выглядит так же плохо, как изображения (логотипы) или штрих-коды. Все решения, которые я нашел, предназначены для печати изображений, а не для PDF-файлов. Поэтому я хотел бы спросить, как я могу изменить следующий код, чтобы он все еще работал. Спасибо.

import java.awt.print.PrinterException;
import java.awt.print.PrinterJob;
import java.io.File;
import java.io.IOException;
import javax.print.attribute.HashPrintRequestAttributeSet;
import javax.print.attribute.PrintRequestAttributeSet;
import javax.print.attribute.standard.PrinterResolution;
import javax.print.attribute.standard.MediaSizeName;
import javax.print.attribute.standard.MediaPrintableArea;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.printing.PDFPageable;

public class App {




    public static void main(String[] args) throws PrinterException, IOException {
        if (args.length != 1)
        {
            System.err.println("usage: java " + App.class.getName() + " <input>");
            System.exit(1);
        }

        String filename = args[0];
        try (PDDocument document = PDDocument.load(new File(filename)))
        {
            print(document);
        }
    }


    private static void print(PDDocument document) throws PrinterException
    {
        PrinterJob job = PrinterJob.getPrinterJob();

        job.setPageable(new PDFPageable(document));
        PrintRequestAttributeSet attr = new HashPrintRequestAttributeSet();
        attr.add(MediaSizeName.ISO_A4);
        attr.add(new PrinterResolution(300, 300, PrinterResolution.DPI));
        attr.add(new MediaPrintableArea(2, 2, 210 - 4, 297 - 4, MediaPrintableArea.MM));
        job.print(attr);
    }
}

person Namal    schedule 13.08.2020    source источник
comment
Не могли бы вы поделиться PDF? Я печатал с Java без установки разрешения. Может быть, ваши изображения имеют низкое разрешение? Попробуйте также использовать версии 2.0.19 и 2.0.20. В 2.0.20 есть ошибка, из-за которой некоторые изображения могут быть размытыми, что будет исправлено в 2.0.21: repository.apache.org/content/groups/snapshots/org/apache/   -  person Tilman Hausherr    schedule 13.08.2020
comment
Дело было на самом деле! я поменял на 19 и все заработало отлично! Спасибо.   -  person Namal    schedule 13.08.2020