我正在使用以下设置:
>
pdfbox 2.0.15
目标:呈现包含中文字符的pdf
问题:java.lang.IllegalArgument异常:U 674E在此字体的编码中不可用
我已经试过了:
>
使用不同的字体支持汉字。最新的一款是KTC普通版。ttf
将字体设置为unicode,如下所述:Java:使用PDFBox将国家字符写入PDF,但是不推荐使用loadTTF方法。
使用Arial-Unicode-MS4302。ttf
我的代码看起来像这样(缩短了一点):
try (InputStream pdfIn = inputStream; PDDocument pdfDocument =
PDDocument.load(pdfIn)) {
PDFont formFont;
//Check if Chinese characters are present
if (!Util.containsHanScript(queryString)) {
formFont = PDType0Font.load(pdfDocument,
PdfReportGenerator.class.getResourceAsStream("LiberationSans-Regular.ttf"),
false);
} else {
formFont = PDType0Font.load(pdfDocument,
PdfReportGenerator.class.getResourceAsStream("NotoSansCJKtc-Regular.ttf"),
false);
}
List<PDField> fields = acroForm.getFields();
//Load fields into Map
Map<String, PDField> pdfFields = new HashMap<>();
for (PDField field : fields) {
String key = field.getPartialName();
pdfFields.put(key, field);
}
PDField currentField = pdfFields.get("someFieldID");
PDVariableText pdfield = (PDVariableText) currentField;
PDResources res = acroForm.getDefaultResources();
String fontName = res.add(formFont).getName();
String defaultAppearanceString = "/" + fontName + " 10 Tf 0 g";
pdfield.setDefaultAppearance(defaultAppearanceString);
pdfield.setValue("李柱");
acroForm.flatten(fields, true);
ByteArrayOutputStream pdfOut = new ByteArrayOutputStream();
pdfDocument.save(pdfOut);
}
预期结果:pdf上的汉字。
实际结果:java。lang.IllegalArgumentException:U 674E在此字体的编码中不可用:WinAnSienceODing
所以我的问题是如何最好地支持用pdfbox渲染汉字。感谢您的帮助。
以下代码适用于我,它使用PDFBOX-4629文件:
PDDocument doc = PDDocument.load(new URL("https://issues.apache.org/jira/secure/attachment/12977270/Report_Template_DE.pdf").openStream());
PDAcroForm acroForm = doc.getDocumentCatalog().getAcroForm();
PDVariableText field = (PDVariableText) acroForm.getField("search_query");
List<PDField> fields = acroForm.getFields();
PDFont font = PDType0Font.load(doc, new FileInputStream("c:/windows/fonts/arialuni.ttf"), false);
PDResources res = acroForm.getDefaultResources();
String fontName = res.add(font).getName();
String defaultAppearanceString = "/" + fontName + " 10 Tf 0 g";
field.setDefaultAppearance(defaultAppearanceString);
field.setValue("李柱");
acroForm.flatten(fields, true);
doc.save("saved.pdf");
doc.close();
我是新的PDFBox,我有一个要求发送PDF到打印机时,它是打开的。我们使用PDFBox api生成PDF。我使用下面的代码尝试在打开时设置操作,但没有任何效果。请帮帮忙。我使用过不同的javascript,如window.print();this.print();打印();
我正在使用pdfbox 1.8,我试图用中文填写pdf表格,但我得到的只是奇怪的字符。我得到了一个ttc文件(uming.ttc),并使用字体伪造导出了ttf文件(现在我正在尝试只使用导出的字体之一)。 字体的加载是使用 我正在使用以下代码编写pdf字段(我在stackoverflow中找到了它,但目前我找不到它) 我读到pdfbox2.0支持Unicode我需要使用这个新版本吗? 使用font-
我正在使用Microsoft打印到PDF打印机。我在PDPageable类@第74行中得到一个NPE,说我没有对此文档设置访问权限: 当检查时,该值确实为空。因此,我尝试手动设置一些没有用户名或密码的访问权限,仅使用打印权限: 但使用进行检查时,权限仍然为空。 注意:当我直接从操作系统使用Microsoft Print to PDF打印机打印时,证书将从打印的PDF文件中删除,因此该过程正常工作。
问题内容: 我想使用PDFBox打印 由iText创建的 PDF文件 。我已经使用PDDocument类及其方法print()成功尝试了此操作。您可以在此处找到文档: http //pdfbox.apache.org/apidocs/。 (我正在使用此代码:) 方法print()很好用,但是 有一个问题:当我需要打印多个文件时,该方法要求我为每个文档选择打印机。 有什么办法只能设置一次打印机吗?
这是一个我甚至无法在我们的测试环境中重现的错误——到目前为止,它只发生在生产环境中,需要运行一段时间才能发生(重启一段时间后就可以了)。 在打印PDF文件时,上述异常被抛出,在打印机队列中,我可以看到作业挂在错误状态。让我有点困扰的是,我打印的文件大小约为40 kb,打印队列显示它们约为1.4 MB,但也许这是正常的,我不知道。无论如何,我读了一两件关于这个异常的事情,但是有些事情不太对——应用程
我正在使用PDFBOX,它的留档似乎很少,所以我来这里寻求一些帮助。我正在尝试打印我创建的pdf表单,其中字段由eclipse动态填充。我可以让它导入和打印,但是当我打印时,我设置的字段不会显示(尽管当我将其保存到HDD时会显示)。有人能告诉我打印时设置为可见的设置吗?我看到itext有类似的东西,我希望PDFBox也有。 这是我当前的代码。