2016-06-28 97 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