Вы должны подумать над тем, что вы хотите поместить в PDF: хотите ли вы точную копию веб-страницы, которую просматривает пользователь (слишком сложно, чтобы быть почти невозможным, если на вашей стороне не установлен браузер пользователя и не используется его вывод на печать) или вам нужна та же информация в примерно похожем макете?
Важным вопросом является то, как вы генерируете HTML: однажды я сделал нечто подобное, чтобы сгенерировать квитанции в формате PDF для участников эксперимента (сейчас я просто выводил HTML со стилями печати ).
HTML генерируется с использованием HTML :: Template , хотя Template.pm будет в порядке.
После этого просто написать другой шаблон, который генерирует L A T E X документ, который может быть обработан с использованием pdflatex . Если вы сохраняете данные во время запроса снимка, вы можете добавить снимок в очередь, которая генерирует документы асинхронно, чтобы запросы не связывали веб-сервер.
Обновление: Глядя на rrdcgi , я теперь понимаю, что он уже использует шаблон. Это идеально: вместо того, чтобы вставлять HTML в шаблон, поместите L A T E X код в шаблон и запустите rrdcgi
с --filter
возможность создать исходный файл L A T E X, который вы можете запустить через pdflatex
. Я полагаю, что проблема, которую нужно решить, состоит в том, чтобы иметь возможность использовать те же данные, которые использовались для создания страницы, которую просматривает пользователь.
Если невозможно повторно запустить rrdcgi
с точно такими же данными, рассмотрите возможность добавления некоторого JavaScript, который передает исходный HTML-код страницы, которую просматривает пользователь (или некоторое представление JSON), в сценарий CGI, который анализирует HTML и вывод L A T E X. В этом вам поможет написание чистого HTML в оригинальном шаблоне и разумное использование атрибутов class
и id
.
У меня нет времени, чтобы проверить какие-либо из этих идей прямо сейчас, но я еще раз посмотрю через пару дней.