PDFBox TextBox 显示不打印
PDFBox TextBox shows does no print
我正在向预先存在的 pdf (W9) 添加一个文本字段,下面的代码完美地放置了文本,我可以在 acrobat 中查看保存的文件,但是当我打印它时,它不打印文本字段。我错过了什么?
doc = PDDocument.load(in);
docCatalog = doc.getDocumentCatalog();
prAcroForm=docCatalog.getAcroForm();
page = (PDPage) docCatalog.getPages().getKids().get(0);
acroForm().setXFA(null);
PDFont font = PDType1Font.HELVETICA;
PDResources res = acroForm().getDefaultResources();
String fontName = res.addFont(font);
String defaultAppearance = "/"+fontName+" 7 Tf 0 g";
COSDictionary acroFormDict = acroForm().getDictionary();
acroFormDict.setBoolean(COSName.getPDFName("NeedAppearances"), false);
COSDictionary cosDict1 = new COSDictionary();
COSArray rect = new COSArray();
rect.add(new COSFloat(410f)); // lower x boundary
rect.add(new COSFloat(234f)); // lower y boundary
rect.add(new COSFloat(510f)); // upper x boundary
rect.add(new COSFloat(284f)); // upper y boundary
cosDict1.setItem(COSName.RECT, rect);
cosDict1.setItem(COSName.FT, COSName.getPDFName("Tx")); // Field Type
cosDict1.setItem(COSName.TYPE, COSName.ANNOT);
cosDict1.setItem(COSName.SUBTYPE, COSName.getPDFName("Widget"));
cosDict1.setItem(COSName.T, new COSString("DATEFIELD"));
cosDict1.setItem(COSName.DA, new COSString(defaultAppearance));
PDTextbox textbox = new
PDTextbox(doc.getDocumentCatalog().getAcroForm(), cosDict1);
textbox.setValue("This is It");
try {
page.getAnnotations().add(textbox.getWidget());
acroForm().getFields().add(textbox);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
将此添加到您的代码中:
cosDict1.setInt(COSName.F, 4);
这会设置注释小部件的打印标志。
或致电
textbox.getWidget().setPrinted(true);
这是 W-9 表单现有字段的注释小部件项目的屏幕截图:
我正在向预先存在的 pdf (W9) 添加一个文本字段,下面的代码完美地放置了文本,我可以在 acrobat 中查看保存的文件,但是当我打印它时,它不打印文本字段。我错过了什么?
doc = PDDocument.load(in);
docCatalog = doc.getDocumentCatalog();
prAcroForm=docCatalog.getAcroForm();
page = (PDPage) docCatalog.getPages().getKids().get(0);
acroForm().setXFA(null);
PDFont font = PDType1Font.HELVETICA;
PDResources res = acroForm().getDefaultResources();
String fontName = res.addFont(font);
String defaultAppearance = "/"+fontName+" 7 Tf 0 g";
COSDictionary acroFormDict = acroForm().getDictionary();
acroFormDict.setBoolean(COSName.getPDFName("NeedAppearances"), false);
COSDictionary cosDict1 = new COSDictionary();
COSArray rect = new COSArray();
rect.add(new COSFloat(410f)); // lower x boundary
rect.add(new COSFloat(234f)); // lower y boundary
rect.add(new COSFloat(510f)); // upper x boundary
rect.add(new COSFloat(284f)); // upper y boundary
cosDict1.setItem(COSName.RECT, rect);
cosDict1.setItem(COSName.FT, COSName.getPDFName("Tx")); // Field Type
cosDict1.setItem(COSName.TYPE, COSName.ANNOT);
cosDict1.setItem(COSName.SUBTYPE, COSName.getPDFName("Widget"));
cosDict1.setItem(COSName.T, new COSString("DATEFIELD"));
cosDict1.setItem(COSName.DA, new COSString(defaultAppearance));
PDTextbox textbox = new
PDTextbox(doc.getDocumentCatalog().getAcroForm(), cosDict1);
textbox.setValue("This is It");
try {
page.getAnnotations().add(textbox.getWidget());
acroForm().getFields().add(textbox);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
将此添加到您的代码中:
cosDict1.setInt(COSName.F, 4);
这会设置注释小部件的打印标志。
或致电
textbox.getWidget().setPrinted(true);
这是 W-9 表单现有字段的注释小部件项目的屏幕截图: