2016-06-28 27 views
-2

Ich versuche, CRUD eine PDF-Briefvorlage mit einem PDFBox Open Source Java PDF Generation Library zu erstellen/zu pflegen. Der Brief hätte den folgenden Abschnitt in meiner POJO-Klasse repräsentiert.Erstellen CRUD ein mehrteiliges PDF-Dokument mit PDFBox (PDF-Generierung) und Wartung in MongoDB

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; 

Meine Anwendung ist eine Feder-Boot-Web-Service, die der Endbenutzer Brief zu sehen, bearbeiten und erstellen neue pdf ermöglicht. Basierend auf der Dokumentation und den Tutorials, die ich online gesehen habe, kann ich keine separaten Abschnitte oder Inhalte in der PDF-Datei org.apache.pdfbox.pdmodel.PDPage mithilfe von Schlüsselwerten erstellen. So kann ich den Inhalt in Abschnitten mit den Schlüsseln abrufen. Bitte, irgendwelche Ideen, wie diese Trennung der Abschnitte der Buchstaben zu erreichen, mit Schlüssel-Wert-Paar für eine effektive CRUD-Operation auf dem PDF Doc.

Ich überlege auch, eine MongoDB-Sammlung mit dem Namen Letter zu erstellen, mit einem Dokument, das die verschiedenen Abschnitte des Briefs als Schlüssel (Felder) im MongoDB-Dokument enthält. Dann kann ein anderes Feld das vollständige PDF-Dokument als Byte-Stream enthalten. Ich dachte, dies könnte ein besseres Design als das Speichern des gesamten Dokuments und dann Parsing oder Traversing mit Teilzeichenfolge oder Regex usw.

Alle Design-Gedanken oder Umsetzung Gedanken oder Referenzen oder PDFBox Beispielcode für ähnliche Funktion, z. Erstellen und Lesen von PDF-Inhalten mit Schlüssel-Wert-Paar, wird geschätzt. Vielen Dank.

+1

Ihre Frage bezieht sich nicht auf iText, bitte entfernen Sie das Etikett. –

+0

Beide, ein Entwickler mit iText-Erfahrung wäre in der Lage, dazu beizutragen. Außerdem habe ich es nur im Tag NICHT dem Nachrichtentext oder Titel hinzugefügt. Übrigens, warum wurde es abgelehnt? – olatom

+0

Natürlich könnte ein Entwickler mit iText-Erfahrung erklären, wie man Ihre Anforderung mit iText erfüllt, aber eine solche Antwort würde nach unten gehen, weil Sie explizit nach einer PdfBox-Lösung fragen. Zu erwarten, dass ein iText-Entwickler eine PdfBox-Antwort geben würde, ist seltsam. Es ist, als würdest du einen Peugeot in einer Garage kaufen und dann in eine andere Garage gehen, wo sie Mercedes verkaufen, der um Unterstützung bittet. Sie würden in die Peugeot-Garage geschickt werden. Beachten Sie, dass ich dafür gestimmt habe, Ihre Frage zu schließen, weil sie zu weit gefasst ist. Ich denke, dass die Frage aus dem gleichen Grund abgelehnt wird. –

Antwort

0

ich ausgeführt, um die folgenden Schritte, mein Problem zu lösen: mit einem PDF-Editor wie Adobe Pro

  • Dann

    können
    1. Benutzer pdf-Vorlage erstellen, würde der Benutzer die Abschnitte des Schreibens an Tasten/Platzhalter zuweisen im Adobe Pro DC-Werkzeug.
    2. war mein Dienstendpunkt über Postman aufgerufen, um das PDF zu MongoDB aus meinem lokalen Rechner
    3. ich einen anderen Endpunkt verwendet, um laden Sie die neu eingefügten Dokument und lesen Sie die verschiedenen Buchstaben Abschnitte zu finden, wie folgt:

    GridFSDBFile customerLetter = gridFsTemplate.findOne (Abfrage);

    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

    Ich habe die Frage nicht wirklich verstanden und verstehe die Antwort nicht wirklich. (Und beachten Sie, dass keiner der Stammgäste von PDFBox teilgenommen hat) Über Ihre Antwort: Ich dachte, Sie wollten in ein PDF schreiben und lesen Sie jetzt? (Ich habe nicht runtergestimmt, aber als "zu breit" gewählt, weil es mehr nach einer Strategie-/Meinungsfrage klang). Re "IT- und Softwareentwicklungs-Community ist nicht dazu gedacht, feindselig zu sein" Ich stimme dem zu, zögern Sie nicht, weitere PDFBox-Fragen zu SO oder in der PDFBox-Mailingliste zu stellen. Die besten Fragen sind hier diejenigen, die am spezifischsten sind. –

    +0

    Die Geschichte erforderte einen Lese-Schreib-Vorgang für die PDF-Datei. Die Logik ist für beide ähnlich. Die Tatsache, dass ich in der Lage war, ein PDF in einem Offline-Editor mit Schlüssel/Wert-Platzhaltern zu erstellen, bedeutete, dass ich die PDF-Abschnitte später mit den Schlüsseln als Zugriffsmöglichkeit auf die verschiedenen PDF-Abschnitte aktualisieren konnte. Ich bin sicher, du hast mich ein bisschen verstanden! Ein schönes Wochenende wünsche ich ihnen. – olatom