2015-09-20 113 views
1

我將文本字段添加到預先存在的pdf(W9)下面的代碼完美地放置文本,我可以在acrobat中查看保存的文件,但是當我打印它時,它不打印文本字段。我錯過了什麼?PDFBox TextBox顯示不打印

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(); 
    } 

回答

1

添加到您的代碼:

cosDict1.setInt(COSName.F, 4); 

此設置批註控件的打印標記。

或致電

textbox.getWidget().setPrinted(true); 

這裏的W-9表格的現有領域的註釋部件的項目的截圖: enter image description here

about these flags in the PDF specification

+0

感謝它的工作。你能告訴我這是什麼PDF調試器? –

+0

標準PDFDebugger可以從下載網站http://pdfbox.apache.org/download.cgi#recent下載爲PDFBox應用程序的一部分,請參閱http://pdfbox.apache.org/1.8/commandline.html# pdfDebugger如何打電話。您看到的版本是未發佈的2.0版本,請在此處獲取:https://repository.apache.org/content/groups/snapshots/org/apache/pdfbox/pdfbox-app/2.0.0-SNAPSHOT/改進項目獲得資助由谷歌作爲谷歌夏季編碼2015年的一部分。 –