2016-11-01 2 views
0

Ich benutze den jodconverter 3.0-beta4 und konvertiere von HTML nach PDF. Mein HTML enthält ein Formular, aber ich möchte keine editierbaren Felder in meinem PDF haben. Ich dachte, wenn ich meine PDF-Datei nur lesen könnte, dann sind die Felder weg, aber mein Code funktioniert nicht.Wie verhindern Sie die Bearbeitung meiner PDF mit jodconverter?

Ich habe bereits mit verschiedenen Versionen von PDF versucht, aber eine Version unter 2 reproduziert nicht korrekt mein HTML. Es konvertiert den HTML-Code mit einigen unmarkierten Eingaben, aber meine Radioeingaben sind alle markiert.

Hier ist mein Code

DocumentFormat format = new DocumentFormat("PDF/A", "pdf", "application/pdf"); 

Map<String, Object> filterData = new HashMap<String, Object>(); 
filterData.put("SelectPdfVersion", 2); 

Map<String, Object> properties = new HashMap<String, Object>(); 
properties.put("FilterData", filterData); 
properties.put("FilterName", "writer_pdf_Export"); 
properties.put("Changes", 0); 
properties.put("RestrictPermissions", true); 

format.setStoreProperties(DocumentFamily.TEXT, properties); 

OfficeDocumentConverter converter = new OfficeDocumentConverter(officeManager); 

File htmlFile = File.createTempFile("tempHTML" , ".html"); 
org.apache.commons.io.FileUtils.writeStringToFile(htmlFile, html); 
File pdfFile = File.createTempFile("tempPDF", ".pdf"); 
converter.convert(htmlFile, pdfFile, format); 
+1

Man könnte die HTML-Eingaben in Text konvertieren. –

+0

Das stimmt, ich kann nur die Optionen senden, die markiert/gefüllt sind. Ich habe wirklich nicht in dieser Option gedacht. Vielen Dank. – ikkarion

+0

@JoopEggen, kannst du deinen Kommentar als Antwort posten? – ikkarion

Antwort

1

Man könnte die HTML-input s in statischem Text vor der Umwandlung in PDF konvertieren.

Wie Sie bereits ein String mit dem HTML-Inhalt verwenden, html:

Etwas wie:

// ☐ ☑ ☒ ☉ ◉ ○ 
html = html.replaceAll("(?si)<input type=\"radio\"[^>]*value=\"(" 
     + checkedValue + ")\"[^>]*>(.*?)</input>", 
     "◉ $2"); 
html = html.replaceAll("(?si)<input type=\"radio\"[^>]*value=\"(" 
     + "[^\"]+" + ")\"[^>]*>(.*?)</input>", 
     "○ $2"); 

Wahrscheinlich brauchen Sie mehr, und der obige Code stützt sich auf das type-Attribut tun die vorhergehenden Wertattribut und so weiter.

Verwandte Themen