Kostenlos für kommerzielle Nutzung Java-Bibliothek zum Konvertieren von HTML in PDF

Ich versuche, eine Java-Bibliothek zu finden, die mithilfe der CSS-Druckstile von HTML in PDF konvertieren kann.

Ich möchte, dass diese Bibliothek für die kommerzielle Nutzung kostenlos ist. Nicht wie itext, dass Sie die AGPL-Lizenz bezahlen oder verwenden müssen, die Ihren gesamten Code anzeigt.

Antworten (6)

Sie haben einige Möglichkeiten:

  • openhtmltopdf - neuer Code, noch am Entstehen, hat aber einige großartige Ergebnisse
  • Apache FOP - kann XML konvertieren, nicht HTML, könnte aber nützlich sein
  • ittext die ältere Version (Version 2)
  • Wkhtmltopdf - nicht Java, kann es von Java über einen externen Prozess aufrufen, bisher mit großem Erfolg verwendet
iText ist nicht wirklich frei für die kommerzielle Nutzung, die Lizenz ist schrecklich

Schließlich fiel die Wahl auf die Bibliothek Flying Saucer, die die Kapazitäten einer alten Open-Source-Version in itext nutzt und es uns ermöglicht, nicht alle CSS-Druckstile zu verwenden, aber zumindest die wichtigen.

https://github.com/flyingsaucerproject/flyingsaucer

Flying Saucer akzeptiert die CSS 2.1-Spezifikation. Sie können weitere Informationen darüber im Link erhalten und die CSS-Spezifikation im Internet überprüfen (ich habe nicht die Berechtigung, mehr als 2 Links zu setzen).

Sie können die Cloudmersive Convert API verwenden, die für die kommerzielle Nutzung bis zu 1.000 Conversions/Monat kostenlos ist. So können Sie es in Java aufrufen:

// Import classes:
//import com.cloudmersive.client.invoker.ApiClient;
//import com.cloudmersive.client.invoker.ApiException;
//import com.cloudmersive.client.invoker.Configuration;
//import com.cloudmersive.client.invoker.auth.*;
//import com.cloudmersive.client.ConvertDocumentApi;

ApiClient defaultClient = Configuration.getDefaultApiClient();

// Configure API key authorization: Apikey
ApiKeyAuth Apikey = (ApiKeyAuth) defaultClient.getAuthentication("Apikey");
Apikey.setApiKey("YOUR API KEY");
// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
//Apikey.setApiKeyPrefix("Token");

ConvertDocumentApi apiInstance = new ConvertDocumentApi();
File inputFile = new File("/path/to/inputfile"); // File | Input file to perform the operation on.
Boolean includeBackgroundGraphics = true; // Boolean | Optional: Set to true to include background graphics in the PDF, or false to not include.  Default is true.
Integer scaleFactor = 56; // Integer | Optional: Set to 100 to scale at 100%, set to 50% to scale down to 50% scale, set to 200% to scale up to 200% scale, etc.  Default is 100%. Maximum is 1000%.
try {
    byte[] result = apiInstance.convertDocumentHtmlToPdf(inputFile, includeBackgroundGraphics, scaleFactor);
    System.out.println(result);
} catch (ApiException e) {
    System.err.println("Exception when calling ConvertDocumentApi#convertDocumentHtmlToPdf");
    e.printStackTrace();
}

Sie können htmltopdf-java verwenden , das auf wkhtmltopdf basiert.

Ich weiß, dass dies ein etwas altes Thema ist, aber für zukünftige Referenzen und zukünftige Programmierer schlage ich vor, https://pdfmyurl.com zu verwenden , das ich persönlich verwende.

Es enthält ein Codebeispiel für .NET / C#, Java, JavaScript, PHP, Perl, Ruby, Python und VB.net.

Abgesehen von der programmiererfreundlichen Plattform verfügt es über ein gut dokumentiertes Tutorial, das leicht befolgt werden kann.

Keine Java-Bibliothek, aber Sie können Chrome im Headless-Modus ausführen (keine GUI, genau wie die Befehlszeile) und anweisen, eine PDF- oder PNG-Datei der gewünschten Seite (URL) zu erstellen.