Я использовал этот пример для написания программы для печати 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);
}
}