FPDF WriteHtml не работает

Я пытаюсь создать pdf-файл в wordpress с помощью fpdf, но когда я пытаюсь написать html-контент, он ничего не дает, и страница застревает для перезагрузки, когда я пишу функцию WriteHtml.

Вот мой код:

<?php
require('fpdf/fpdf.php');

$pdf=new FPDF();
$pdf->AddPage();

$pdf->SetFont('Arial','B',16);
$pdf->WriteHTML('You can<br><p align = "center">center a line</p>and add a horizontal rule:<br><hr>');
$pdf->Output('E:\xampp\spy2html.pdf','F');
?>

вот мой html, который я хочу добавить

<div id = "finalOutput">
            <h2 class = "llms-quiz-results-title">'.printf( __( "Attempt #%d Results", "lifterlms" ), $attempt->get( "attempt" ) ); .'</h2>

            <aside class = "llms-quiz-results-aside">
                '. echo llms_get_donut( $attempt->get( "grade" ), $attempt->l10n( "passed" ), "default", $donut_class );.'
            </aside>

            <section class = "llms-quiz-results-main">
                <ul class = "llms-quiz-meta-info">
                    <li class = "llms-quiz-meta-item">'. printf( __( "Status: %s", "lifterlms" ), $attempt->l10n( "passed" ) );.'</li>
                    <li class = "llms-quiz-meta-item"><?php printf( __( "Grade: %s", "lifterlms" ), round( $attempt->get( "grade" ), 2 ) . "%" ); ?></li>
                    <li class = "llms-quiz-meta-item"><?php printf( __( "Correct Answers: %1$d / %2$d", "lifterlms" ), $attempt->get_count( "correct_answers" ), $attempt->get_count( "questions" ) ); ?></li>
                    <li class = "llms-quiz-meta-item"><?php printf( __( "Completed: %s", "lifterlms" ), $attempt->get_date( "start" ) ); ?></li>
                    <li class = "llms-quiz-meta-item"><?php printf( __( "Total time: %s", "lifterlms" ), $attempt->get_time() ); ?></li>
                    <?php if ( $quiz->show_quiz_results() ) : ?>
                        <li class = "llms-quiz-meta-item"><a class = "view-summary" href = "#"><?php _e( "View Summary", "lifterlms" ); ?></a></li>
                    <?php endif; ?>
                </ul>
            </section>
        </div>

Я пытаюсь использовать эту простую страницу, но обнаружил, что ошибка Uncaught Error: вызов неопределенного метода FPDF :: WriteHTML () в E: \ xampp \ htdocs \ pdf_from_html.php: 8 Трассировка стека: # 0 {main}, брошенная в E: \ xampp \ htdocs \ pdf_from_html.php в строке 8

Huzail Jamil 04.05.2018 15:29
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
2
1
12 012
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Fpdf по умолчанию не предусмотрена функция записи HTML. Вам нужно разработать код.

<?php

require('fpdf/fpdf.php');

class PDF extends FPDF
{
    protected $B = 0;
    protected $I = 0;
    protected $U = 0;
    protected $HREF = '';

    function WriteHTML($html)
    {
        // HTML parser
        $html = str_replace("\n",' ',$html);
        $a = preg_split('/<(.*)>/U',$html,-1,PREG_SPLIT_DELIM_CAPTURE);
        foreach($a as $i=>$e)
        {
            if ($i%2==0)
            {
                // Text
                if ($this->HREF)
                    $this->PutLink($this->HREF,$e);
                else
                    $this->Write(5,$e);
            }
            else
            {
                // Tag
                if ($e[0]=='/')
                    $this->CloseTag(strtoupper(substr($e,1)));
                else
                {
                    // Extract attributes
                    $a2 = explode(' ',$e);
                    $tag = strtoupper(array_shift($a2));
                    $attr = array();
                    foreach($a2 as $v)
                    {
                        if (preg_match('/([^=]*)=["\']?([^"\']*)/',$v,$a3))
                            $attr[strtoupper($a3[1])] = $a3[2];
                    }
                    $this->OpenTag($tag,$attr);
                }
            }
        }
    }

    function OpenTag($tag, $attr)
    {
        // Opening tag
        if ($tag=='B' || $tag=='I' || $tag=='U')
            $this->SetStyle($tag,true);
        if ($tag=='A')
            $this->HREF = $attr['HREF'];
        if ($tag=='BR')
            $this->Ln(5);
    }

    function CloseTag($tag)
    {
        // Closing tag
        if ($tag=='B' || $tag=='I' || $tag=='U')
            $this->SetStyle($tag,false);
        if ($tag=='A')
            $this->HREF = '';
    }

    function SetStyle($tag, $enable)
    {
        // Modify style and select corresponding font
        $this->$tag += ($enable ? 1 : -1);
        $style = '';
        foreach(array('B', 'I', 'U') as $s)
        {
            if ($this->$s>0)
                $style .= $s;
        }
        $this->SetFont('',$style);
    }

    function PutLink($URL, $txt)
    {
        // Put a hyperlink
        $this->SetTextColor(0,0,255);
        $this->SetStyle('U',true);
        $this->Write(5,$txt,$URL);
        $this->SetStyle('U',false);
        $this->SetTextColor(0);
    }
}
$pdf = new PDF();
// First page
$pdf->AddPage();
$pdf->SetFont('Arial','B',16);
$pdf->WriteHTML('You can<br><p align = "center">center a line</p>and add a horizontal rule:<br><hr>');
$pdf->Output();

Спасибо, друг, ты спас мне день, дай мне посмотреть, работает ли он и в моем коде

Huzail Jamil 04.05.2018 15:51

добро пожаловать, я проверил этот код на моем локальном сервере. Кроме того, полезно, затем проголосуйте за

Kamlesh Solanki 04.05.2018 15:52

Я пытаюсь использовать какую-то функцию php в html, как я могу ее использовать

Huzail Jamil 04.05.2018 15:53

Пожалуйста, предоставьте образец кода или что-то подобное <input type = "text" value = "<? Php echo" test "?>" /> Вот так

Kamlesh Solanki 04.05.2018 15:58

я вставляю это в верхнюю часть вопроса, пожалуйста, посмотрите

Huzail Jamil 04.05.2018 16:11

FPDF не поддерживает функцию WriteHTML();.

Используйте MPDF: GitHub MPDF, поддерживающий HTML.

Чтобы центрировать текст в FPDF, вы должны написать такой код:

<?php
    require('fpdf/fpdf.php');

    $pdf=new FPDF();
    $pdf->AddPage();

    $pdf->SetFont('Arial','B',16);
    $pdf->Cell(0, 20, "Hello World", 0, 0, 'C');
    $pdf->Output();
?>

Другие вопросы по теме