【发布时间】:2016-08-24 20:29:31
【问题描述】:
我使用 PDFBox (1.8.12) 从 java 打印 pdf 文档:
PDDocument pdf = PDDocument.load(new File(args[0]));
PrinterJob job = PrinterJob.getPrinterJob();
PrintRequestAttributeSet attr_set = new HashPrintRequestAttributeSet();
attr_set.add(MediaSizeName.ISO_A4); // <<< supposedly prints in A4 format
attr_set.add(Sides.ONE_SIDED);
PDPageable p = new PDPageable(pdf);
job.setPageable(p);
PrintService ps = null;
for (PrintService i : PrintServiceLookup.lookupPrintServices(null,null)) {
if (i.getName().equals(args[1])) {
ps = i;
}
}
if (ps == null) {
try {
throw new SystemException(ErrorCode.NO_PRINTER_FOUND);
} catch (SystemException e) {
e.printStackTrace();
}
}
else
{
job.setPrintService(ps);
job.print(attr_set);
}
问题是,打印的文档有一个被裁切的边距,我不知道为什么。我进行了测试,将pdf循环回pdf虚拟打印机,似乎是一样的,我认为这意味着PDFbox不会以错误的方式处理pdf。
经过进一步研究,打印纸上的文字似乎被放大了,它比原来的开始更高,而最终更低(当我直接从混凝土打印机打印时)。
我打印的纸张是A4格式,所以我尝试像上面一样将格式设置为A4,但问题仍然存在。
【问题讨论】: