Codeigniter dompdf: недопустимая ошибка символа - PullRequest
0 голосов
/ 11 мая 2018

Когда я пытаюсь распечатать PDF, я получаю эту ошибку:

An uncaught Exception was encountered

Type: DOMException

Message: Invalid Character Error

Filename: /home/ireto/domains/ireto.be/public_html/madicbelgium/application/helpers/dompdf/lib/html5lib/TreeBuilder.php

Line Number: 3191

Backtrace:

File: /home/ireto/domains/ireto.be/public_html/madicbelgium/application/helpers/dompdf/lib/html5lib/TreeBuilder.php
Line: 3191
Function: setAttribute

File: /home/ireto/domains/ireto.be/public_html/madicbelgium/application/helpers/dompdf/lib/html5lib/TreeBuilder.php
Line: 1493
Function: insertElement

File: /home/ireto/domains/ireto.be/public_html/madicbelgium/application/helpers/dompdf/lib/html5lib/Tokenizer.php
Line: 2456
Function: emitToken

File: /home/ireto/domains/ireto.be/public_html/madicbelgium/application/helpers/dompdf/lib/html5lib/Tokenizer.php
Line: 1102
Function: emitToken

File: /home/ireto/domains/ireto.be/public_html/madicbelgium/application/helpers/dompdf/src/Dompdf.php
Line: 470
Function: parse

File: /home/ireto/domains/ireto.be/public_html/madicbelgium/application/helpers/dompdf_helper.php
Line: 26
Function: loadHtml

File: /home/ireto/domains/ireto.be/public_html/madicbelgium/application/controllers/admin/Estimates.php
Line: 136
Function: pdf_create

File: /home/ireto/domains/ireto.be/public_html/madicbelgium/index.php
Line: 293
Function: require_once

Это мой код в строке: 3191 ->

private function insertElement($token, $append = true) {
    $el = $this->dom->createElementNS(self::NS_HTML, $token['name']);

    if (!empty($token['attr'])) {
        foreach ($token['attr'] as $attr) {
            if (!$el->hasAttribute($attr['name']) && preg_match("/[^A-Za-z0-9]/u", $attr['name'])) {
                $el->setAttribute($attr['name'], $attr['value']);
            }
        }
    }
    if ($append) {
        $this->appendToRealParent($el);
        $this->stack[] = $el;
    }

    return $el;
}

1 Ответ

0 голосов
/ 11 мая 2018

если вы сталкиваетесь с ошибкой, подобной An uncaught Exception was encountered, лучше всего на самом деле поймать исключение, потому что вы получите ответ на свою ошибку в Exception

, следующий фрагмент кода должен делать то, что яозначает

private function insertElement($token, $append = true) {

    try
    {
        $el = $this->dom->createElementNS(self::NS_HTML, $token['name']);

        if (!empty($token['attr'])) {
            foreach ($token['attr'] as $attr) {
                if (!$el->hasAttribute($attr['name']) && preg_match("/[^A-Za-z0-9]/u", $attr['name'])) {
                    $el->setAttribute($attr['name'], $attr['value']);
                }
            }
        }
        if ($append) {
            $this->appendToRealParent($el);
            $this->stack[] = $el;
        }



        return $el;
    }
    catch (DOMException $e)
    {
        echo '<strong>Errormessage:</strong>'.$e->getMessage().'<br />';
        echo $e->getTraceAsString();

    }
}

если у вас есть ошибка сейчас, вы должны увидеть точную информацию, чтобы исправить эту ошибку, происходит что-то вроде следующего:

Errormessage: Invalid Character Error

#0 [...][...](7): DOMElement->setAttribute('1pro-1', 'someValue')
#1 {main}DOMException Object
...