Как получить номера страниц в формате PDF, сгенерированные HTML с помощью wkhtmltopdfHtml

Программисты Html
Ответить
Anonymous
 Как получить номера страниц в формате PDF, сгенерированные HTML с помощью wkhtmltopdf

Сообщение Anonymous »

Вот наш ответ:
В настоящее время мы используем wkhtmltopdf для создания PDF-файла на основе заданного HTML-шаблона.

Некоторая справочная информация:

Мы используем Sulu CMF для создания нашей серверной части, основанной на Symfony2.
KnpSnappy Bundle используется в качестве оболочки Symfony для wkhtmltopdf.

Как мы создаем PDF-файлы:

Поскольку многие PDF-файлы имеют один и тот же верхний и нижний колонтитул, мы создали BasePDFBundle, который предлагает PDFManager для создания PDF-файла на лету по заданному шаблону TWIG. По умолчанию включается общий верхний и нижний колонтитулы (обычно с именем и логотипом клиента).

Проблема нижнего колонтитула / номера страниц в нижнем колонтитуле (или заголовке):

Очень полезно добавлять номера страниц в PDF-файлы, например. для заказов, однако большая часть нашего контента добавляется динамически (например, список продуктов). Поскольку стиль PDF-файла может меняться, а сам контент добавляется динамически, должен был быть быстрый и простой способ добавить текущую и всю страницу в сгенерированный PDF-файл. Вот что мы сделали:

Код: Выделить всё











FooBar Company Name[/b]

/




(function() {
// get all url parameters and transform it to a list
// pdf generator adds a param for current and the total page sum
// add the value to the html elements
var urlParams = document.location.search.substring(1).split('&');
var urlParamsList = {};
var pagingElements = ['topage', 'page'];

for (var i in urlParams) {
var param = urlParams[i].split('=', 2);
urlParamsList[param[0]] = unescape(param[1]);
}

for (var i in pagingElements) {
var elem = document.getElementsByClassName(pagingElements[i]);
for (var j = 0; j < elem.length; ++j) {
elem[j].textContent = urlParamsList[pagingElements[i]];
}
}
})();




Да, имена переменных page и toppage могли бы быть лучше, однако они такие же, как и оболочка KnpSnappy, которую использует при объединении шаблонов веток с окончательным шаблоном PDF. Это самый простой способ получить текущий и общий номер страницы, поскольку вы можете позволить оболочке выполнить все вычисления.

В конце концов вам просто нужно заменить текст html-тегов и все!

Различия между вашим локальным компьютером и сервером:

Поскольку wkhtmltopdf открывает виртуальный браузер для «рендеринга» шаблонов веток, это может привести к ошибкам при создании PDF-файла на вашем сервере. Мы обнаружили, что использовать теги событий, такие как , не рекомендуется. Вместо этого вам следует активировать код JavaScript, как мы это сделали в примере выше.

Подробнее здесь: https://stackoverflow.com/questions/309 ... khtmltopdf
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Html»