为什么dompdf不遵守指定的页面大小?

时间:2015-10-23 10:36:03

标签: php pdf dompdf

我尝试使用dompdf版本0.6.1(编写本文时最新版本)创建PDF,并且在页面大小的最初步骤中陷入困境。我正在尝试创建A4大小的PDF。以下是我的标记

$html = <<<HTML
<html>
    <head>
       <style>
          @page {size: 21cm 29.7cm; margin: 0;}
       </style>
    </head>
    <body>
        testing
    </body>
</html>
HTML;


  $dompdf = new DOMPDF();
  $dompdf->set_paper('a4', 'portrait');
  $dompdf->load_html($html);
  $dompdf->render();

  $dompdf->stream("title.pdf");  

PDF已创建,但始终为32.07cm宽。我试图通过覆盖DOMPDF_DPI常量来解决dompdf DPI设置,但它只会影响内容缩放,而不会影响页面大小。将size CSS属性值设置为a4也无济于事。

我已经用尽了我的搜索选项,但没有找到解决方案。任何帮助将不胜感激。谢谢。

更新
重复的问题没有得到接受的答案,并且两个答案之间的更好看是以下作为解决方案

$dompdf->set_paper(array(0, 0, 595, 841), 'portrait');  

提供给DOMPDF::set_paper()的数组参数只是点数A4大小的替代表示。我已经尝试了它并且它不起作用。这里的实际问题是,无论如何设置纸张尺寸,PDF尺寸始终是其大小的152%。

更新2
我和#34; Kornel N&#34;有同样的问题。写在这个论坛帖子https://groups.google.com/forum/#!topic/dompdf/I_j6R4_9ZwA

  
    

我最近改用了dompdf,之前我正在使用ufpdf。在使用表创建一些发票时,我习惯了A4文档的大小。

         

现在,当我将纸张尺寸设置为A4$dompdf->set_paper('a4', 'portrait');)时,我会得到更大的区域。

         

我使用纸张尺寸扩展了write_log方法,它设置了它A4

         

cpdf_adapter.cls.php文件表明A4的大小为595.28,841.89 points,因为我已经习惯了。

         

当我使用pdf阅读器软件打开生成的pdf时,它表示它的大小为8.27 x 11.69in,即A4张的大小。

         

但是,当我尝试绘制一个矩形来填充工作表(只是一个带有1px边框的div)时,我必须使其791px x 1101px大以匹配纸张大小。

         

底部边框距离页面底部大约20px,但是如果我尝试增加div的高度,dompdf只会在文档中再添加一个空白页面,就像有一个看不见的底部边距用于div,或填充页面。没有这样的,因为我在css中设置它。

@page { margin: 0in 0in 0in 0in;} 
.oldal{width:791px; height:1101px;  border:1px solid red;}
         

请帮帮我,为什么会这样?这个尺寸是正确还是应该按照定义?

  

1 个答案:

答案 0 :(得分:0)

dompdf 使用 points 作为度量单位。

你可以尝试一些online cm to point converters来测量

所以尺寸:21cm 29.7cm;你可以试试

   $dompdf->setPaper([0,0,595.275590551,841.88976378])