Как я могу конвертировать HTML в PDF, используя Perl?
Мне нужно конвертировать некоторые отчеты HTML в PDF, используя Perl. Каковы лучшие модули CPAN для работы?
5 ответов
PDF:: WebKit
Я мог конвертировать из HTML в PDF с помощью Perl с помощью PDF::WebKit, который, в свою очередь, использует https://wkhtmltopdf.org/. Изapt show wkhtmltopdf
:
Утилиты командной строки для преобразования HTML в PDF или изображение с помощью WebKit wkhtmltopdf - это программа командной строки, которая позволяет создавать PDF-файл или изображение из URL-адреса, локального файла HTML или стандартного ввода. Он создает PDF-файл или изображение, подобное обработанному с помощью движка WebKit.
Для работы этой программы требуется сервер X11.
Поэтому такое решение кажется неприемлемым на сервере. Может быть, WeasyPrint (построенный на Python) или athenapdf? Или Пандок?
Последняя версия является безголовой (не требует X-сервера).
Установка:
sudo cpanm install PDF::WebKit
sudo apt install xfonts-75dpi
sudo apt install wkhtmltopdf
Используйте.deb с официального сайта, чтобы получить последнюю версию.
html2pdf.pl
#!/usr/bin/perl
use PDF::WebKit;
my $kit = PDF::WebKit->new('/tmp/index.html');
my $file = $kit->to_file('/tmp/my.pdf');
Пример, index.html:
<!DOCTYPE html>
<html lang="en">
<head>
<title>My Title</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css">
</head>
<body>
<p class="text-primary">.text-primary</p>
<p class="text-secondary">.text-secondary</p>
<p class="text-success">.text-success</p>
<p class="text-danger">.text-danger</p>
<p class="text-warning">.text-warning</p>
</body>
</html>
HTML:: HTMLDoc использует базовую библиотеку htmldoc C, которая создана именно для этого. И это тоже довольно быстро.
Это не отвечает на ваш вопрос в смысле использования Perl, но, насколько я знаю, это лучший из доступных конвертеров HTML в PDF.
Я использовал PDF:: API2 для создания отчетов в формате PDF с большим успехом.
Это зависит от того, что именно вам нужно сделать, но я, вероятно, посмотрю на Template:: Extract и PDF:: Template.