Бесплатная библиотека Java для коммерческого использования для преобразования HTML в PDF

Я пытаюсь найти библиотеку Java, которая может конвертировать из HTML в PDF с использованием стилей печати CSS.

Мне нужно, чтобы эта библиотека была бесплатной для коммерческого использования. В отличие от itext, вам нужно платить или использовать лицензию AGPL, показывающую весь ваш код.

Ответы (6)

У вас есть несколько вариантов:

  • openhtmltopdf — новый код, который все еще разрабатывается, но дает отличные результаты.
  • Apache FOP - может конвертировать XML, а не HTML, но может быть полезен
  • itext старая версия (версия 2)
  • Wkhtmltopdf - не java, может вызывать его из Java через внешний процесс, до сих пор использовал его с большим успехом
iText нельзя использовать в коммерческих целях бесплатно, лицензия ужасна.

Наконец, библиотека была выбрана Flying Saucer, которая использует возможности старой версии с открытым исходным кодом в itext и позволяет нам использовать не все стили печати CSS, но, по крайней мере, важные.

https://github.com/flyingsaucerproject/летающая тарелка

Летающая тарелка соответствует спецификации CSS 2.1. Вы можете получить больше информации об этом по ссылке и проверить спецификацию CSS в Интернете (у меня нет прав размещать более 2 ссылок)

Вы можете использовать Cloudmersive Convert API , который является бесплатным для коммерческого использования до 1 тыс. конверсий в месяц. Вот как это можно назвать на 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();
}

Вы можете использовать htmltopdf-java , который основан на wkhtmltopdf.

Я знаю, что это немного старая тема, но для дальнейшего использования и для будущих кодеров я предлагаю использовать https://pdfmyurl.com , который я использую лично.

В нем есть пример кода для .NET/C#, Java, JavaScript, PHP, Perl, Ruby, Python и VB.net.

Помимо удобной для программиста платформы, у него есть хорошо документированное руководство, которому можно легко следовать.

Это не библиотека Java, но вы можете запустить Chrome в автономном режиме (без графического интерфейса, как в командной строке) и приказать ему создать файл PDF или PNG нужной страницы (URL).