【发布时间】:2017-02-19 04:14:57
【问题描述】:
我编写了代码来使用传入的打印机名称和 PDF 网址打印 PDF。这行得通,除非我将一个带有中文字符的 PDF 传递给它,否则这些字符只是框。 Unicode 字体嵌入了 PDF,所以理想情况下,我想以某种方式利用它。这是执行打印的代码:
PDDocument document = PDDocument.load(new URL(fileUrl));
PrinterJob job = PrinterJob.getPrinterJob();
job.setPrintService(printer);
PageFormat pageFormat = job.defaultPage();
Paper paper = pageFormat.getPaper();
Book pBook = new Book();
List allPages = document.getDocumentCatalog().getAllPages();
for (Object pdPage : allPages)
{
PDPage page = (PDPage) pdPage;
double width = page.findMediaBox().getWidth();
double height = page.findMediaBox().getHeight();
double margin = 0.0d;
paper.setSize(width, height);
paper.setImageableArea(margin, margin, width - (margin * 2), height - (margin * 2));
pageFormat.setOrientation(PageFormat.PORTRAIT);
pageFormat.setPaper(paper);
PageFormat validatePage = job.validatePage(pageFormat);
pBook.append(document.getPrintable(allPages.indexOf(pdPage)), validatePage);
job.setPageable(pBook);
}
job.setJobName(jobName);
job.print();
如您所见,我使用的是 PDFBox(版本 1.8.7)。我对此进行了一些搜索,但找不到任何有用的东西。但是,我确实发现了这个 JIRA 问题:https://issues.apache.org/jira/browse/PDFBOX-490
似乎在今年(2016 年)发布的 2.0 版中做了一些事情。有一次,我尝试更新到最新版本,但更改太多,我选择不更新。
更新是我唯一的选择吗? 1.8.7 有什么我可以做的吗?
谢谢!
【问题讨论】:
-
“似乎在 2.0 版本中做了一些事情” - 事实上,使用 2.0 之前的版本你不会成功。
标签: java printing fonts pdfbox