我有一个包含阿拉伯文字和水印的PDF文件。我正在使用PDFBox从Java打印PDF。我的问题是PDF打印质量很高,但所有带阿拉伯字符的行都有垃圾字符。有人可以帮忙吗?
代码:
String pdfFile = "C:/AresEPOS_Home/Receipts/1391326264281.pdf";
PDDocument document = null;
try {
document = PDDocument.load(pdfFile);
//PDFont font = PDTrueTypeFont.loadTTF(document, "C:/Windows/Fonts/Arial.ttf");
PrinterJob printJob = PrinterJob.getPrinterJob();
printJob.setJobName(new File(pdfFile).getName());
PrintService[] printService = PrinterJob.lookupPrintServices();
boolean printerFound = false;
for (int i = 0; !printerFound && i < printService.length; i++) {
if (printService[i].getName().indexOf("EPSON") != -1) {
printJob.setPrintService(printService[i]);
printerFound = true;
}
}
document.silentPrint(printJob);
}
finally {
if (document != null) {
document.close();
}
}
答案 0 :(得分:1)
您可以使用PDFBox 2.0.0-SNAPSHOT正确打印PDF,但不能使用PDFBox 1.8.4。因此,有问题的阿拉伯字体需要一个在PDFBox版本1.8.4之前尚不支持的功能,或者1.8.4中存在一个同时修复过的错误。
使用PDFBox 1.8.4打印OP的文档会产生一些像这样的混乱输出
但是使用当前的PDFBox 2.0.0-SNAPSHOT打印它会产生这样的正确输出
在2.0.0-SNAPSHOT中,PDDocument
方法print
和silentPrint
已被删除,所以原来的
document.silentPrint(printJob);
必须替换为
之类的东西printJob.setPageable(new PDPageable(document, printJob));
printJob.print();