Смешивание ориентации страниц в 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 в портретной ориентации на страницах формата письма. Мне нужно, чтобы одна из страниц была в альбомной ориентации, а остальная часть – в портретной ориентации (так что, когда PDF просматривается на экране, все содержимое будет правильно ориентировано).

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

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

В случае, если кто-то ищет этот ответ в будущем, я завершу это своими решениями. Основываясь на отсутствии ответов, я думаю, что действительно невозможно создать 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 не будет загружаться слишком часто, и количество страниц было минимальным, поэтому дополнительное время не было значительным бременем.

To @sacohe – привет от будущего! Да, все еще смотрю.

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

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