2016-06-28 106 views
-2

我试图使用PDFBox开源Java PDF生成库创建/维护CRUD PDF信函模板。这封信将有以下部分代表我的POJO课程。使用PDFBox(PDF生成)和在MongoDB中维护创建CRUD多节PDF文档

private byte[] fileContent; 
private String heading; 
private String returnAddress; 
private Date issueDate; 
private String recipientName; 
private String recipientAddress; 
private String salutation; 
private String title; 
private String body; 
private String closingText; 
private String signatureLine; 
private String companyLine1; 
private String companyLine2; 

我的应用程序是一个春季启动Web服务,它允许最终用户查看,编辑和创建新的PDF字母。 根据我在线看到的文档和教程,我无法使用键值在PDF org.apache.pdfbox.pdmodel.PDPage中创建单独的部分或内容。所以,我可以使用键检索部分内容。请提供关于如何实现这些字母各部分的分离的任何想法,使用键值对在PDF文档中进行有效的CRUD操作。

我还在考虑创建一个名为Letter的MongoDB集合,其中包含字母的不同部分作为MongoDB文档中的键(字段)。然后,可能会将另一个字段作为字节流保存完整的PDF文档。我认为这可能比保存整个文档更好,然后使用子字符串或正则表达式进行解析或遍历。

任何设计想法或实现想法或参考或PDFBox相似功能的示例代码例如使用键值对创建和阅读PDF内容,将不胜感激。谢谢。

+1

您的问题与iText无关,请删除标签。 –

+0

两者都是iText经验丰富的开发人员能够贡献的。此外,我只将它添加到标签而不是邮件正文或标题中。顺便说一句,为什么它被拒绝投票? – olatom

+0

当然:具有iText经验的开发人员可以解释如何满足您对iText的需求,但是这样的答案会被低估,因为您明确要求提供PdfBox解决方案。期望一个iText开发者给出一个PdfBox答案是很奇怪的。就好像你会在一个车库里买一辆标致,然后去另一个售卖梅赛德斯的车库寻求支持。你会被送到标致车库。请注意,我投票结束您的问题,因为它太宽泛。我认为这个问题出于同样的原因被低估。 –

回答

0

我执行以下步骤来解决我的问题:

  1. 用户可以使用PDF编辑器,如Adobe临
  2. 然后,用户将指定信部分到按键/占位符创建PDF模板在Adobe Pro DC工具中。
  3. 我的服务端点经邮差调用从我的本地机器加载PDF到MongoDB的
  4. 我用另一个端点,以找到新插入的原稿并读取各种字母部分如下:

GridFSDBFile customerLetter = gridFsTemplate.findOne(query);

InputStream pdfInputStream= customerLetter.getInputStream(); 

org.apache.pdfbox.pdmodel.PDDocument pdDocument=PDDocument.load(pdfInputStream); 

    org.apache.pdfbox.pdmodel.interactive.form.PDAcroForm letterPage = pdDocument.getDocumentCatalog().getAcroForm(); 

    System.out.println("1 >>>>>>>> "+ letterPage.getField("customerName").getValue()); 
    System.out.println("2 >>>>>>>> "+ letterPage.getField("customerAddressLine1").getValue()); 

Hope this helps someone. 
+0

我真的不明白这个问题,并且不太明白答案。 (并且请注意,PDFBox的常客没有参与)关于您的答案:我以为您想写信给PDF,现在您正在阅读? (我没有倒下,但是投票结果为“太宽泛”,因为它听起来更像是一个战略/意见问题)。 “IT和软件开发社区并不意味着有敌意”我同意这一点,随时可以在SO或PDFBox邮件列表中提出进一步的PDFBox问题。这里最好的问题是那些最具体的问题。 –

+0

这个故事需要在PDF文件上进行读写操作。两者的逻辑是相似的。事实上,我能够在离线编辑器中创建一个带有键值占位符的PDF,这意味着我以后可以使用keyS作为PDF各个部分的访问者来更新PDF部分。我相信你了解我一点!周末愉快。 – olatom