Gratis para uso comercial Biblioteca Java para convertir HTML a PDF

Estoy tratando de encontrar una biblioteca de Java que pueda convertir de HTML a PDF usando los estilos de impresión CSS.

Necesito que esta biblioteca sea gratuita para uso comercial. No como itext que necesita pagar o usar la licencia AGPL que muestra todo su código.

Respuestas (6)

Tienes pocas opciones:

  • openhtmltopdf : nuevo código, todavía en proceso, pero tiene excelentes resultados
  • Apache FOP : puede convertir XML, no HTML, pero podría ser útil
  • itext la versión anterior (versión 2)
  • Wkhtmltopdf : no Java, puede llamarlo desde Java a través de un proceso externo, lo usé con gran éxito hasta ahora
iText no es realmente gratuito para uso comercial, la licencia es terrible

Finalmente, la biblioteca elegida fue Flying Saucer que usa las capacidades de una versión antigua de código abierto en itext y nos permite usar no todos los estilos de impresión CSS pero al menos los importantes.

https://github.com/flyingsaucerproject/flyingsaucer

El platillo volador acepta la especificación CSS 2.1. Puede obtener más información al respecto en el enlace y verificar la especificación CSS en Internet (no tengo privilegios para poner más de 2 enlaces)

Puede utilizar Cloudmersive Convert API , que es gratuita para uso comercial hasta 1K conversiones/mes. Así es como puedes llamarlo en Java:

// 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();
}

Puede usar htmltopdf-java que se basa en wkhtmltopdf.

Sé que este es un tema un poco antiguo, pero para futuras referencias y futuros codificadores, sugiero usar https://pdfmyurl.com , que yo personalmente uso.

Tiene un ejemplo de código para .NET/C#, Java, JavaScript, PHP, Perl, Ruby, Python y VB.net.

Además de la plataforma amigable para los programadores, tiene un tutorial bien documentado que se puede seguir fácilmente.

No es una biblioteca de Java, pero puede ejecutar Chrome en modo sin interfaz gráfica (sin GUI, como la línea de comandos) y ordenar que cree un archivo PDF o PNG de la página (URL) que desee.