当前位置: 首页 > 知识库问答 >
问题:

使用pdfbox在现有表单上书写-pdf

都阳
2023-03-14

我对Java比较陌生,我想用PDFbox取代现有的基于iText的Javascript。(Java 2.0)我有一个pdf-Formsheet(但这个表没有Acroform条目),我想用信息(姓名、出生日期等)填充它。pdf是一个矩形的特殊大小(像一张联系人卡片)。

  File file = new File("ToBeFilled.pdf"); 

  PDDocument document = PDDocument.load(file); 

  System.out.println("PDF loaded"); 

 //Retrieving the page
  PDPage page = (PDPage)document.getPages().get( 0 );

  PDFont font = PDType1Font.HELVETICA_BOLD;
  PDPageContentStream content = new PDPageContentStream(document, page, PDPageContentStream.AppendMode.APPEND, true);

  content.beginText();      
  //Setting the font to the Content stream  
  content.setFont(font, 30);  

  //Setting the position for the line (float x, float y), (0,0) = lower left corner
  content.newLineAtOffset(100, 400);
  String text = "This is the sample document and we are adding content to it.";
  String text1 = "This is an example of adding text to a page in the pdf document. we can add as many lines";
  String text2 = "as we want like this using the ShowText()  method of the ContentStream class";
  //Adding text in the form of string 
  content.showText(text); 
  //Adding text in the form of string
  content.newLine();
  content.showText(text1);
  content.newLine();
  content.showText(text2);

  //Ending the content stream
  content.endText();
  System.out.println("Text added"); 

  content.close();
  //Saving the document 
  document.save("newPrint.pdf");

  //Closing the document  
  document.close(); 

文本不显示。我错过了什么?我想,只要有正确的文字位置,我就可以简单地在PDF上写字了?

共有1个答案

景温书
2023-03-14

源头在工作。可能您的content.newlineatoffset(100,400);对于您的小卡来说太大了--超出了界限。

顺便说一下,您必须setleading(float)才能有意义地使用newline()

 类似资料:
  • 问题:我有一个需要填写的现有PDF表单(*.PDF)。如何使用节点JS动态填充它?

  • 我们需要为我们的客户填写一个表格,并获得一个PDF,他们可以打印,签名 但我很难确定页码。由于表单由多个模板组合而成,我必须用PDFBox修复页码。到目前为止,我们在每页上都使用了一个样式化的输入字段。但由于它们都有相同的名字,我不能单独填写。 我可以以某种方式拆分或克隆字段并为它们提供单独的名称,以便我可以单独填充它们吗?当然,样式应该保持不变。

  • 我正在使用pdfbox 2.0.5使用以下代码填写PDF文档的表单字段: 我得到这个错误:U+0434('AFII10069')在此字体Times-Roman(泛型:TimesNewRomanPSMT)编码:StandardEncoding with Difference中不可用 我必须在文本字段中指定哪种字体来处理西里尔(或亚洲)字符? 谢谢,罗波

  • 我是新的PDF框,需要填写的信息在PDF表单,其中有节和字段名: 填写信息的名称和框 地址和填写信息的框 城市框来填充信息。 目前没有错误上面的代码正在工作填写一些垃圾字段。 需要用方框信息填满姓名,方框信息填满姓名,方框信息填满地址,方框信息填满地址,方框信息填满地址

  • 我用PDFBox填写一个PDF表单,我在保存它之前把它变平。窗体具有文本和窗体字段的自定义字体。当我在未安装此自定义字体的设备上打开输出文档(具有平坦字段)时,普通文本的字体仍然正确,但平坦字段的字体显示为回退(?)字体。在安装了这种自定义字体的设备上,一切看起来都和预期的一样。 有没有办法在展平窗体后,强制对所有文本使用相同的自定义字体? 使用PDFBOX填写PDF表单时使用的代码(简化):

  • 我的目标是打开一个PDF文档,填写一些表单字段,然后将其呈现为图像。我正在使用带有Java的PDFBox来实现它。我开始使用版本2.0.2(最新版本),并填写表单字段。当我保存它,然后用PDF阅读器打开它时,表单字段有值。但当我将其呈现为图像时,表单字段有黑色边框,内部没有文本。然后我在1.8.12上尝试了同样的方法,它起作用了。不过,我真的很想使用2.x中的新特性。 PDF只有顶形,没有XFA(