mPDF 文档自动高度(POS 打印机)

Posted

技术标签:

【中文标题】mPDF 文档自动高度(POS 打印机)【英文标题】:mPDF document auto height (POS printer) 【发布时间】:2015-10-08 17:15:10 【问题描述】:

我正在尝试使用mPDF class 创建一个 PDF 文件,我需要它来自动调整我的文档高度,而​​不是在底部创建空格。

这是两个不同内容的生成的 PDF 的两张图片。左图比右图内容多,因此在底部创建了更大的空间。

我希望它完全没有空间。到目前为止,这是我尝试过的。

public function __construct()

    /*
     * Encoding
     * Size (Array(Xmm, Ymm))
     * Font-size
     * Font-type
     * margin_left
     * margin_right
     * margin_top
     * margin_bottom
     * margin_header
     * margin_footer
     * Orientation
     */
    $this->mPDF = new mPDF('utf-8', array(56, 1000), 9, 'freesans', 2, 2, 2, 0, 0, 0, 'P');

它以 1000 的高度开始文档,以便一开始比要求的要长。

public function write($html, $url)
   
    /*
     * Writing and remove the content, allows the setAutoTopMargin to work
     *
     * http://www.mpdf1.com/forum/discussion/621/margin-top-problems/p1
     */
    $this->mPDF->WriteHTML($html[0]);
    $pageSizeHeight     = $this->mPDF->y;
    $this->mPDF->page   = 0;
    $this->mPDF->state  = 0;
    unset($this->mPDF->pages[0]);

    foreach($html as $content)
    
        $this->mPDF->addPage('P', '', '', '', '', 2, 2, 2, 0, 0, 0, '', '', '', '', '', '', '', '', '', array(56, $pageSizeHeight));
        $this->mPDF->WriteHTML($content);
    

    $this->mPDF->Output($url);

所以,如您所见,在调用函数write() 时,我获取了Y 值,以便可以使用它来设置文档高度。不幸的是,它没有做我期望它做的事情,即完全填充文档而没有任何空白。

使用$pageSizeHeight 也无济于事,因为它可能适用于一个文档但不适用于另一个文档,如下所示:

$pageSizeHeight = $this->mPDF->y - 20;

【问题讨论】:

【参考方案1】:

已解决。

我的代码中存在一个问题,即创建了这么多空间,而且是在 CSS 结构上。

body  font-size: 80% 

更改为 100% 解决了空白,但我也查看了 mPDF 类,发现了 _setPageSize() 函数。

public function write($html, $url)
   
    /*
     * Writing and remove the content, allows the setAutoTopMargin to work
     *
     * http://www.mpdf1.com/forum/discussion/621/margin-top-problems/p1
     */
    $this->mPDF->WriteHTML($html[0]);
    $this->mPDF->page   = 0;
    $this->mPDF->state  = 0;
    unset($this->mPDF->pages[0]);
    
    // The $p needs to be passed by reference
    $p = 'P';
    $this->mPDF->_setPageSize(array(56, $this->mPDF->y), $p);

    foreach($html as $content)
    
        $this->mPDF->addPage();
        $this->mPDF->WriteHTML($content);
    

    $this->mPDF->Output($url);

【讨论】:

以上是关于mPDF 文档自动高度(POS 打印机)的主要内容,如果未能解决你的问题,请参考以下文章

mPDF 自动打印问题

由 MPDF 创建的双面打印 PDF

重复造轮子系列——基于FastReport设计打印模板实现桌面端WPF套打和商超POS高度自适应小票打印

最后打印页的页脚 MPDF

使用连接表中的 mPDF 打印

如何使用for循环在mpdf PHP中打印数组中的值