Cakephp DOMPF产生胡言乱语

Cakephp DOMPF产生胡言乱语,cakephp,dompdf,Cakephp,Dompdf,我已按照说明安装了DOMPDF版本0.6.1。 当我按下查看页面上的PDF按钮时,我会看到乱七八糟的内容。(见下文)。我已检查字体是否安装在类库中。 有什么建议吗 步骤2(在/app/Config/routes.php中) Router::parseExtensions('pdf'); class ChecksController extends AppController { public $components = array('Paginator', 'Sess

我已按照说明安装了DOMPDF版本0.6.1。 当我按下查看页面上的PDF按钮时,我会看到乱七八糟的内容。(见下文)。我已检查字体是否安装在类库中。 有什么建议吗

步骤2(在/app/Config/routes.php中)

    Router::parseExtensions('pdf');
    class ChecksController extends AppController {

    public $components = array('Paginator', 'Session', 'RequestHandler');
require_once(APP . 'Vendor' . DS . 'dompdf' . DS 
.dompdf_config.inc.php');
spl_autoload_register('DOMPDF_autoload');
$dompdf = new DOMPDF();
$dompdf->set_paper = 'A4';
$dompdf->load_html(utf8_decode($content_for_layout), Configure::read('App.encoding'));
$dompdf->render();
echo $dompdf->output();
public function view_pdf($id = null) {
$this->Check->id = $id;
if (!$this->Check->exists()) {
    throw new NotFoundException(__('Invalid Check'));
}
// increase memory limit in PHP
ini_set('memory_limit', '512M');
$this->set('check', $this->Check->read(null, $id));
<div class="checks view">
<h2><?php echo __('Check Flight'); ?></h2>
<?php //echo debug($check); ?>
<dl>
    <dt><?php echo __('Instructor'); ?></dt>
    <dd>
        <?php echo h($check['Instructor']['first'] . ' ' . $check['Instructor']['last']); ?>
        &nbsp;
    </dd>
    <dt><?php echo __('Pilot'); ?></dt>
    <dd>
        <?php echo h($check['Person']['first'] . ' ' .  $check['Person']['last']); ?>
        &nbsp;
    </dd>
    <dt><?php echo __('Flight Date'); ?></dt>
    <dd>
        <?php echo h($check['Check']['flight_date']); ?>
        &nbsp;
    </dd>
    <dt><?php echo __('Check Type'); ?></dt>
    <dd>
        <?php echo h($check['Check']['check_type']); ?>
        &nbsp;
    </dd>
    <dt><?php echo __('Aircraft'); ?></dt>
    <dd>
        <?php echo h($check['Aircraft']['registration']); ?>
        &nbsp;
    </dd>
    <dt><?php echo __('Hours'); ?></dt>
    <dd>    <?php echo h($check['Check']['hours']); ?>
        &nbsp;
    </dd>
    <dt><?php echo __('Conditions'); ?></dt>
    <dd>
        <?php echo h($check['Check']['conditions']); ?>
        &nbsp;
    </dd>
    <dt><?php echo __('Passed'); ?></dt>
    <dd>
        <?php echo h($check['Check']['passed']); ?>
        &nbsp;
    </dd>
    <dt><?php echo __('Notes'); ?></dt>
    <dd>
        <?php echo h($check['Check']['notes']); ?>
        &nbsp;
    </dd>
    <div class='items'>
        <dt><?php echo __('Additional Areas'); ?></dt>
        <dd>
            <?php foreach ($check['Assessment'] as $assessment): ?>
                    <?php  echo h($assessment['description']); ?><br/>
            <?php endforeach; ?>
        </dd>
     </div>   
</dl>
    <li><?php echo $this->Html->link(__('PDF'), array('action' => 'view_pdf', 'ext' => 'pdf', $check['Check']['id']));?></li>
步骤3(在ChecksController.php中)

步骤4(在/app/View/Layouts/pdf/default.ctp中)

步骤5(在ChecksController.php中)

步骤6(在checks\app\View\checks\pdf\View\u pdf.ctp中)



步骤7(在app\View\Checks\View.ctp中)

  • 输出:

    %PDF-1.3 1 0 obj << /Type /Catalog /Outlines 2 0 R /Pages 3 0 R /OpenAction 8 0 R >> endobj 2 0 obj << /Type /Outlines /Count 0 >> endobj 3 0 obj << /Type /Pages /Kids [6 0 R ] /Count 1 /Resources << /ProcSet 4 0 R /Font << /F1 9 0 R /F2 10 0 R >> >> /MediaBox [0.000 0.000 612.000 792.000] >> endobj 4 0 obj [/PDF /Text ] endobj 5 0 obj << /Creator (dompdf) /CreationDate (D:20150315060510+01'00') /ModDate (D:20150315060510+01'00') >> endobj 6 0 obj << /Type /Page /Parent 3 0 R /Contents 7 0 R >> endobj 7 0 obj << /Filter /FlateDecode /Length 349 >> stream x�m��k�0���W�c�D�ڷ�ha��>��C�H�5�5�����Ӵ}I�K>�~sw����a�wq�d�@�������s��6�i ��1� �/�$",�ȸ?`��s�E��4bL�vqϯa$�3�#��g��xJ�����T�+�A�U�jSA�K�?wѧ=ʦ�[]�y���"0���?���|x��(lfd+�,��������PUf!2s����數r}@]I��z��>�$�:|��x됣�qpFf�\�|>��9�KS§nލ��֏ �#���y���tpJ+;�Mv�5G����5LUۦu�Q�Up.�V'!܈��͇yܻ�(m}q��e� endstream endobj 8 0 obj [6 0 R /Fit] endobj 9 0 obj << /Type /Font /Subtype /Type1 /Name /F1 /BaseFont /Times-Bold /Encoding /WinAnsiEncoding >> endobj 10 0 obj << /Type /Font /Subtype /Type1 /Name /F2 /BaseFont /Times-Roman /Encoding /WinAnsiEncoding >> endobj xref 0 11 0000000000 65535 f 0000000008 00000 n 0000000091 00000 n 0000000137 00000 n 0000000302 00000 n 0000000331 00000 n 0000000445 00000 n 0000000508 00000 n 0000000929 00000 n 0000000957 00000 n 0000001065 00000 n trailer << /Size 11 /Root 1 0 R /Info 5 0 R >> startxref 1175 %%EOF 
    
    %PDF-1.3 1 0 obj>endobj 2 0 obj>endobj 3 0 obj>/MediaBox[0.000 0.000 612.000 792.000]>>endobj 4 0 obj[/PDF/Text]endobj 5 0 obj>endobj 6 0 obj>endobj 7 0 obj>stream x�M��K�0���W�C�D�ڷ�哈��>��C�H�5.�5.�����Ӵ}I�K>�~西南����A.�wq�D�@�������s��6.�我��1.� �/�$",�ȸ?`��s�E��4bL�vqϯa$�3.�#��G��xJ�����T�+�A.�U�jSA�K�?wѧ=ʦ�[]�Y���"0���?���|x��(lfd)+�,��������PUf!2s����數r} @]我��Z��>�$�:|��x됣�qpFf�\�|>��9�KS§nލ��֏ �#���Y���tpJ+;�Mv�5G����5LUۦu�Q�向上的�V'!܈��͇yܻ�(m}q��E� endstream endobj 8 0 obj[6 0 R/Fit]endobj 9 0 obj>endobj 10 0 obj>endobj外部参照0 11 0000000000 65535 f 000000000 8 000000n 00000000 91 000000n 0000000 137 000000n 0000000 302 000000n 0000000 3310 000000n 0000000 n 0000000 44500000n 0000000 508 000000 n 0000000 929 000000 n 0000000 957 000000n 000000 1065 00000n拖车>开始外部参照1175%%EOF
    
    可能是这一行:

    $dompdf->load_html(utf8_decode($content_for_layout), Configure::read('App.encoding'));
    

    $content\u for_layout已被弃用:改用
    $this->fetch('content')

    不,这不起作用:我还尝试了$dompd->load_html(utf8_decode($this->fetch('content')),Configure::read('App.encoding');这一行仍然应该更改。除了答案中建议的更改之外,还应该删除
    utf8_decode()
    。这不是必需的,而且对包含非ascii字符的文档有害。正如我所说,我尝试了$dompdf->load_html($this->fetch('content'))和$dompdf->load_html(utf8_decode($this->fetch('content'),Configure::read('App.encoding'));而且这两个步骤都不正确,或者可能遗漏了什么?不确定您的建议是什么。如果只是像下面那样删除utf8(),那么$dompdf->load_html($this->fetch('content')、Configure::read('App.encoding')没有什么区别;您说的“胡言乱语”是什么意思“?由于内部格式丢失,很难诊断您的PDF。您可以发布屏幕截图,使用格式化的PDF源更新问题,或链接到文件。这也有助于查看预期的HTML(其他一切看起来都很合理)。