Смешивание ориентации страницы в wkhtmltopdf

Я использую wkhtmltopdf для создания PDF из одного HTML-файла, отформатированного на отдельных страницах с использованием page-break-before: always, Например:

<div class="cover">
    Cover Page
</div>
<div class="page">
    Page 1
</div>
<div class="page">
    Page 2
</div>

С помощью CSS:

.page {
    page-break-before: always;
}

Прямо сейчас у меня есть команда wkhtmltopdf, написанная для печати PDF в книжной ориентации на страницах формата Letter. Мне нужно, чтобы одна из страниц была в альбомной ориентации, а остальные - в портретной ориентации (чтобы при просмотре PDF на экране все содержимое было правильно ориентировано).

Есть ли способ смешать ориентации в одном PDF?

Если это невозможно, есть ли способ объединить несколько PDF-файлов с помощью wkhtmltopdf? (Я видел другие предложения другого программного обеспечения pdfmerge.) Я мог бы разделить мой исходный файл HTML на несколько файлов для каждой страницы, если это необходимо.

2 ответа

Решение

Если кто-то ищет этот ответ в будущем, я дополню его своими решениями. Исходя из отсутствия ответов, я думаю, что на самом деле нет способа создать PDF-файл с несколькими ориентациями страниц, используя wkhtmltopdf.

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

    width: 1275px; 
    height: 1650px; 
    
    -webkit-transform: translateY(1650px) rotate(270deg); /* Chrome, Safari 3.1+ */ 
    -moz-transform: translateY(1650px) rotate(270deg); /* Firefox 3.5+ */ 
    -o-transform: translateY(1650px) rotate(270deg); /* Opera 10.5-12.0 */ 
    -ms-transform: translateY(1650px) rotate(270deg); /* IE 9 */ 
    transform: translateY(1650px) rotate(270deg); /* IE 10+, Firefox 16.0+, Opera 12.1+ */ 
    filter: progid:DXImageTransform.Microsoft.Matrix(M11=6.123031769111886e-17, M12=1, M21=-1, M22=6.123031769111886e-17, SizingMethod='auto expand'); /* IE 6-7 */ 
    -ms-filter: "progid:DXImageTransform.Microsoft.Matrix(M11=6.123031769111886e-17, M12=1, M21=-1, M22=6.123031769111886e-17, SizingMethod='auto expand')"; /* IE 8 */ 
    
    -webkit-transform-origin: 0% 0%; 
    -moz-transform-origin: 0% 0%; 
    -o-transform-origin: 0% 0%; 
    -ms-transform-origin: 0% 0%; 
    transform-origin: 0% 0%; 
    

    (Чтобы написать похожие совместимые преобразования CSS3, посетите этот замечательный сайт, чтобы вычислить все значения матрицы IE: http://www.useragentman.com/IETransformsTranslator/)

    Это было бы достойным решением, если бы ваши пользователи печатали PDF-файл только после его создания. Поскольку моим пользователям необходимо просматривать PDF-файл на экране, им было бы нецелесообразно поворачивать страницу с помощью программного обеспечения для просмотра PDF-файлов.

  2. Итак, мое второе решение состояло в том, чтобы создать каждую страницу как отдельный PDF-файл из отдельных файлов HTML, а затем я использовал Ghostscript, чтобы объединить их в один файл. Это отлично работало, но просто добавило дополнительное время обработки, чтобы создать все файлы и объединить их. В моем случае PDF-файл загружался не слишком часто, а количество страниц было минимальным, поэтому дополнительное время не было значительным бременем.

@Sacohe - привет из будущего! Да, все еще смотрю.

Если кто-то еще ищет этот ответ в будущем, я оставляю ссылку на запрос функции: https://github.com/wkhtmltopdf/wkhtmltopdf/issues/1564

В настоящее время он все еще открыт, но, скорее всего, будет исправлен рано или поздно.

Другие вопросы по тегам