1

我正在使用 fpdf 将动态站点内容转换为 pdf,但它不支持 ul li 标签。任何人都可以帮助支持 html 中的 ul li 和 ol li 标签的 fpdf 插件。

只是为了更详细地了解挑战:

生成到 pdf 文档中的内容不是静态的,而是动态的,并且是从基于数据库的用户选择中获取的。内容适用于各种课程及其正在生成的详细信息,每个课程的详细信息都在 html 中。fpdf 正在工作并以 pdf 格式生成每个课程详细信息,但如果课程详细信息中包含一些 ul li 列表 html 详细信息,则不会在 ul li 中生成它(即每个 li 标签不会像这样强制换行应该更确切地说所有 li 列表都将输出在一行上)因为这些标签不受支持。

此外,关于正在生成的每门课程的 html,它们都很好,因为用户在决定单击“获取 pdf 中的课程详细信息”之前必须在特定页面上查看相同的 html 以获取课程详细信息……所以我想声明这些课程的 html 代码是可以的。

下面是生成pdf文档的代码:

<?php

@include_once("includes/db.php");

define('FPDF_FONTPATH', 'font/');
@require('fpdf/WriteHTML.php');

@include_once("includes/class_open_courses.php");

$obj = new openCourses();
$course_details = array();
if(isset($_GET['c_id'])){
        $course_details = $obj->getOpenCourseDet($_GET['c_id']);



// Instanciation of inherited class
$pdf = new PDF_HTML();
$pdf->AliasNbPages();
$pdf->AddPage();


$pdf->SetFont('Arial','B',16);

// Course title cell
$pdf->Cell('',10,$course_details['title'],0,0,'C');
$pdf->Ln();

/* Build cells for the first row */

$pdf->SetFont('Arial','',10);
$pdf->SetY(40);

// First Row
$pdf->Cell(35,8,'Start Date : ',0,0,'L');
$pdf->Cell(30,8,$course_details['event_date'],0,0,'L');
$pdf->SetX(140);
$pdf->Cell(25,8,'Course Fee : ',0,0,'L');
$pdf->Cell(20,8,$course_details['currency_sign'].$course_details['price'],0,0,'C');
$pdf->Ln();


// Fourth Row
$pdf->SetY(65);
$pdf->SetFont('Arial','B',12);
$pdf->Cell(35,8,'Course Details',0,0,'L');
$pdf->Ln();


$pdf->SetY(65);

$pdf->SetFont('Arial','',10);
$pdf->WriteHTML($course_details['desc']);


//$pdf->WriteHTML('<p>line 1</p> <ul><li>list 1</li><li>list 2</li><li>list 3</li></ul>');


$pdf->Output();



}
else {

?>
    <script language="javascript">
    window.location = "course_info.php?c_id=".<?php echo $course_details['id']; ?>.";
    </script>
<?php
}




?>

如果有人可以提供帮助,将不胜感激。

4

2 回答 2

0

我使用了 PDF_HTML() 并为 UL/LI-Support 添加了这个:

函数 OpenTag

        case 'UL':
            $this->Ln(2);
            break;
        case 'LI':
            $this->Ln(2);
            $this->setX($this->GetX() + 10);
            $this->Write(2, chr(127));
            break;

函数关闭标签

      if($tag=='UL')
            $this->Ln(2);
于 2022-01-10T21:51:01.790 回答
-1

请下载 fpdf 的附加组件,它将支持在 PDF 中写入 HTML

您可以在此处下载附加组件http://www.fpdf.de/downloads/addons/41/

下载附加组件后,将其包含WriteHTML.php在您的脚本中,如下例所示。在 WriteHTML() 函数中传递您的 HTML 代码

define('FPDF_FONTPATH', 'font/');
require('WriteHTML.php');

$pdf=new PDF_HTML();
$pdf->Open();
$pdf->AddPage();
$pdf->SetFont('Arial');
$pdf->WriteHTML('Put your html here');
$pdf->Output();
于 2013-01-21T14:02:50.463 回答