在wkhtmltopdf中混合页面方向

sac*_*ohe 14 html php pdf wkhtmltopdf

我正在使用wkhtmltopdf从单个HTML文件生成PDF,使用格式化为单独的页面page-break-before: always.例如:

<div class="cover">
    Cover Page
</div>
<div class="page">
    Page 1
</div>
<div class="page">
    Page 2
</div>
Run Code Online (Sandbox Code Playgroud)

使用CSS:

.page {
    page-break-before: always;
}
Run Code Online (Sandbox Code Playgroud)

现在,我编写了wkhtmltopdf命令,用于在字母大小的页面上以纵向方式打印PDF.我需要其中一个页面处于横向,其余页面处于纵向(因此,当在屏幕上查看PDF时,所有内容都将正确定向).

有没有办法在单个PDF中混合方向?

如果这不可能,有没有办法使用wkhtmltopdf合并多个PDF?(我已经看到了不同pdfmerge软件的其他建议.)如果需要,我可以将HTML源文件拆分为每个页面的多个文件.

sac*_*ohe 20

如果有人在将来寻找这个答案,我将用我的解决方案来完成这个.基于缺乏答案,我想真的没有办法使用wkhtmltopdf创建具有多页面方向的PDF.

  1. 我实现的第一个解决方案是使用一个HTML文件创建单个PDF并使用以下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%; 
    
    Run Code Online (Sandbox Code Playgroud)

    (要编写类似的兼容CSS3变换,请查看这个伟大的站点以计算所有IE矩阵值:http://www.useragentman.com/IETransformsTranslator/)

    如果您的用户只在生成后打印PDF,这将是一个不错的解决方案.由于我的用户需要在屏幕上查看PDF,因此使用他们的PDF查看软件旋转页面是不切实际的.

  2. 所以,我的第二个解决方案是将每个页面作为单独的PDF文件从单个HTML文件创建,然后我使用Ghostscript将它们合并到一个文件中.这完美地工作,但只是添加了一些额外的处理时间来创建所有文件并合并它们.在我的情况下,PDF不会经常下载,页面数量很少,因此额外的时间不是一个重要的负担.

  • 感谢您分享您的解决方案! (4认同)