DOMPDFModule无法正确呈现字段

用户名

我正在尝试通过DOMPDFModule for Zend Framework 2渲染PDF文档。在大多数情况下,它可以成功渲染,但是字段已关闭。这是我的控制器和视图代码:

 public function pdfAction()
 {
    $pdf = new PdfModel();
    $pdf->setOption('filename', 'questions');
    $pdf->setOption('paperSize', 'a3');
    $pdf->setOption('paperOrientation', 'landscape');

    $pdf->setVariables(array(
        'records' => $this->getQuestionsService()->getRecords()
    ));

    return $pdf;
 }

和视图-

  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" type="text/css">

<div class="container">
    <div class="row">
        <div class="col-md-6">
            <img src="http://dev.teeforall.com/images/logo.png">
        </div>

        <div class="col-md-6">
            <h1>Questions Report</h1>
        </div>
    </div>
</div>


    <table class="table table-striped table-hover table-bordered">
            <tr>
                <td>Id</td> <!-- 0 -->
                <td>Question</td> <!-- 1 -->
                <td style="white-space: nowrap;">Order Issue</td> <!-- 2 -->
                <td style="white-space: nowrap;">Shipping Issue</td> <!-- 3 -->
                <td style="white-space: nowrap;">Refunds/Returns Issues</td><!-- 4 -->
                <td style="white-space: nowrap;">Update Issues</td> <!-- 5 -->
                <td style="white-space: nowrap;">Campaign Issue</td> <!-- 6 -->
                <td style="white-space: nowrap;">Change Issues</td> <!-- 7 -->
                <td style="white-space: nowrap;">Design Issues</td> <!-- 8 -->
                <td style="white-space: nowrap;">TeeForAll Works</td> <!-- 9 -->
                <td style="white-space: nowrap;">Order ID</td> <!-- 10 -->
                <td style="white-space: nowrap;">Site url</td> <!-- 11 -->
                <td>Name</td> <!-- 12 -->
                <td>Email</td> <!-- 13 -->
                <td>Comment</td> <!-- 14 -->
                <td>Status</td> <!-- 15 -->
            </tr>

            <?php 


                if (false !== $this->records) {
                    foreach ($this->records as $records): ?>

                    <tr>
                        <td><?php echo $records->id; ?></td> <!--  0 -->
                        <td><?php echo $records->question; ?></td> <!-- 1 -->
                        <td><?php echo $records->order_issue; ?></td> <!-- 2 -->
                        <td><?php echo $records->sub_shipping_issue; ?></td> <!-- 3 -->
                        <td><?php echo $records->sub_refunds_returns_issue; ?></td> <!-- 4 -->
                        <td><?php echo $records->sub_update_issue; ?></td> <!-- 5 -->
                        <td><?php echo $records->sub_campaign_issue; ?></td> <!-- 6 -->
                        <td><?php echo $records->sub_campaign_change_issues; ?></td> <!-- 7 -->
                        <td><?php echo $records->sub_campaign_design_changes; ?></td> <!-- 8 -->
                        <td><?php echo $records->sub_teeforall_works; ?></td> <!-- 9 -->
                        <td><?php echo $records->order_id; ?></td> <!-- 10 -->
                        <td><?php echo $records->site_url; ?></td> <!-- 11 -->
                        <td><?php echo $records->name; ?></td> <!-- 12 -->
                        <td><?php echo $records->email; ?></td> <!-- 13 -->
                        <td><?php echo $records->comment; ?></td> <!-- 14 -->
                        <td><?php echo $records->status; ?></td> <!-- 15 -->
                    </tr>
                <?php endforeach; ?>

                <?php } else {  ?>

                    <tr>
                        <td>null</td>
                        <td>null</td>
                        <td>null</td>
                        <td>null</td>
                        <td>null</td>
                        <td>null</td>
                        <td>null</td>
                        <td>null</td>
                        <td>null</td>
                        <td>null</td>
                        <td>null</td>
                        <td>null</td>
                        <td>null</td>
                        <td>null</td>
                        <td>null</td>
                        <td>null</td>
                    </tr>
                <?php 
                      }
                ?>
    </table>

这是获取数据库条目的实际代码:

 /**
 * Gets all rows from the database table questions
 * @return ResultSet|bool
 */
public function getRecords()
{

    $sql_select = new Select('questions');

    $sql_select->columns(array(
        'id', 'question', 'order_issue', 'sub_shipping_issue', 'sub_refunds_returns_issue', 'sub_update_issue',
        'sub_campaign_issue', 'sub_campaign_change_issues', 'sub_campaign_design_changes', 'sub_teeforall_works', 'order_id', 
        'site_url', 'name', 'email', 'comment', 'status'
    ))->where(new \Zend\Db\Sql\Predicate\IsNotNull('id'));


    $select = $this->table_gateway->selectWith($sql_select);

    if ($select->count() > 0) {
        return $select;
    }

    return false; 

}

另外,以下图像可能最能描述我想说的内容:

在此处输入图片说明

如您所见,这些字段相差一(在id字段中应该有15个),依此类推。

任何帮助,将不胜感激。

谢谢!

艾克斯力克斯

该问题是由于https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css您从视图调用而引起的确切地说,*:before, *:after导致此行移位。

这是DOMPDF中的一个已知问题:

https://github.com/dompdf/dompdf/issues/1103

https://github.com/dompdf/dompdf/issues/758#issuecomment-86180160

As a temporary solution you can try to add next code below css: https://github.com/dompdf/dompdf/issues/1103#issuecomment-185855083 or use a modified version of bootstrap.min.css. This is an edition you should make: * { -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box } // DELETE NEXT 6 LINES :after, :before { -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box } 在此处输入图片说明 Once the DOMPDF team has this bug fixed, just be sure you didn't forget that:

Dompdf is not particularly tolerant to poorly-formed HTML input. To avoid any unexpected rendering issues you should either enable the built-in HTML5 parser at runtime ($dompdf->set_option('isHtml5ParserEnabled', true);) or run your HTML through a HTML validator/cleaner (such as Tidy or the W3C Markup Validation Service).

不过,您可能还对DOMPDFModule有所担心,因为它需要0.6。*版的dompdf,但是isHtml5ParserEnabled仅在v0.7.0-beta3中可用。https://github.com/raykolbe/DOMPDFModule/blob/master/composer.json

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

LinearGradientBrush无法正确呈现

来自分类Dev

JavaFx无法正确呈现

来自分类Dev

FPDF无法正确呈现

来自分类Dev

SVG无法正确呈现

来自分类Dev

AutoCompleteBox无法正确呈现

来自分类Dev

ngClass无法正确呈现

来自分类Dev

JavaFx无法正确呈现

来自分类Dev

ejs模板无法正确呈现

来自分类Dev

Django的。UserCreationForm无法正确呈现

来自分类Dev

JavaFX图像无法正确呈现

来自分类Dev

视图无法正确呈现json

来自分类Dev

ValidatorCalloutExtender无法正确呈现CSS

来自分类Dev

嵌套的JLayeredPane无法正确呈现

来自分类Dev

Jupyter文件无法正确呈现

来自分类Dev

jQuery步骤无法正确呈现

来自分类Dev

HTML视觉无法正确呈现

来自分类Dev

Angular指令无法正确呈现

来自分类Dev

BootsFaces selectMultiMenu无法正确呈现

来自分类Dev

图表无法正确呈现,canvasjs

来自分类Dev

WP Thumbail无法正确呈现

来自分类Dev

内部组件无法正确呈现

来自分类Dev

React App 无法正确呈现

来自分类Dev

布尔字段复选框无法使用Bootstrap正确地使用crispy_forms呈现

来自分类Dev

MVC Razor帮助程序无法为接口派生类的字段呈现正确的ID和Name属性

来自分类Dev

编码字符无法正确呈现

来自分类Dev

Google chrome无法正确呈现字体。

来自分类Dev

Dojo小部件无法正确呈现

来自分类Dev

JTextPane无法正确呈现span标签

来自分类Dev

React.js无法正确呈现信息