PDDocument document = PDDocument.load(file);
PDDocumentCatalog dc = document.getDocumentCatalog();
PDAcroForm acroForm = dc.getAcroForm();
PDField naziv = acroForm.getField("naziv");
naziv.setValue("Наслов"); // this part right here
naziv.setValue("Naslov"); // it works like this
下面的代码在acroform默认资源字典中添加适当的字体,并替换默认外观中的名称。PDFBox在调用setValue()时使用新字体重新创建字段的外观流。
public static void main(String[] args) throws IOException
{
PDDocument doc = PDDocument.load(new File("ZPe.pdf"));
PDAcroForm acroForm = doc.getDocumentCatalog().getAcroForm();
PDResources dr = acroForm.getDefaultResources();
// Important: the font is Type0 (allows more than 256 glyphs) and NOT SUBSETTED
PDFont font = PDType0Font.load(doc, new FileInputStream("c:/windows/fonts/arial.ttf"), false);
COSName fontName = dr.add(font);
Iterator<PDField> it = acroForm.getFieldIterator();
while (it.hasNext())
{
PDField field = it.next();
if (field instanceof PDTextField)
{
PDTextField textField = (PDTextField) field;
String da = textField.getDefaultAppearance();
// replace font name in default appearance string
Pattern pattern = Pattern.compile("\\/(\\w+)\\s.*");
Matcher matcher = pattern.matcher(da);
if (!matcher.find() || matcher.groupCount() < 2)
{
// oh-oh
}
String oldFontName = matcher.group(1);
da = da.replaceFirst(oldFontName, fontName.getName());
textField.setDefaultAppearance(da);
}
}
acroForm.getField("name1").setValue("Наслов");
doc.save("result.pdf");
doc.close();
}
更新4.4.2019:为了节省一些空间,在调用SetValue之前删除外观可能会很有用:
acroForm.getField("name1").getWidgets().get(0).setAppearance(null);
若要检查AcroForm默认资源中是否存在未使用的字体,请参见以下答案。
问题内容: 我需要使用来向字段添加西里尔字母值的帮助。这是我到目前为止的内容: 当我的输入是拉丁字母时,它可以完美地工作。但是我也需要处理西里尔字母的输入。我该怎么做? ps这是我得到的异常:原因:java.lang.IllegalArgumentException:U + 043D(’afii10079’)在该字体Helvetica编码中不可用:WinAnsiEncoding 问题答案: 下面的
我一直在使用PDFSharp来填充带有AcroForm字段的PDF。我可以使用以下代码设置表单字段的值: 我遇到的问题是,当我试图更改将进入字段的文本的字体时。我能够访问字段的font属性,它允许我像这样设置它: 然而,当我打开保存的PDF时,它默认字体返回到不同的字体。我也试过使用其他字体,比如“Arial”或“Helvetica”,以及不同的大小,但似乎没有一种字体能坚持。 如果我用Foxit
Adobe Reader无法正确显示我的PDF。对于其他PDF阅读器来说,这是一个语法问题,因为我听说Adobe Reader对PDF语法要求更严格。字体似乎是它们应该的两倍大,但水平间距是正确的,这使得字体相互重叠。 这是我的C#代码(字体创建代码在本文末尾)。
如何使其在输出俄语时,输出俄语字母,而不是�� ����� �������� �����! 它不仅在控制台中工作,而且在终端中一切正常 我试过这个 > 窗口 还有这个 窗户- 还有这个 在eclipse主目录中打开eclipse.ini,或者在STS(Spring Tool Suite)的情况下打开STS. ini,将下面的行放在文件末尾-Dfile.encoding=UTF-8 但还是做不到。请
问题内容: 我正在尝试使用php的函数json_encode将西里尔UTF-8数组编码为JSON字符串。示例代码如下所示: 它工作正常,但脚本的结果表示为: 每个西里尔字母组成6个字符。有没有一种方法可以获取键/值对的原始字符,而不是编码的字符? 问题答案: 您不能在此处使用JSON_UNESCAPED_UNICODE常量吗?
我正在使用pdfbox 2.0.5使用以下代码填写PDF文档的表单字段: 我得到这个错误:U+0434('AFII10069')在此字体Times-Roman(泛型:TimesNewRomanPSMT)编码:StandardEncoding with Difference中不可用 我必须在文本字段中指定哪种字体来处理西里尔(或亚洲)字符? 谢谢,罗波