【问题标题】:PHP: need add-on for fpdf converter that support ul li tagPHP:需要支持 ul li 标签的 fpdf 转换器插件
【发布时间】:2013-01-21 13:59:36
【问题描述】:

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

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

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

此外,关于生成的每门课程的 html,它们都很好,因为用户必须在特定页面上查看相同的 html 以获取课程详细信息,然后才能决定单击“以 pdf 格式获取课程详细信息”...所以我想说这些课程的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
}




?>

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

【问题讨论】:

  • 能否请您在浏览器上打印您的html代码是否正确。

标签: php html pdf fpdf


【解决方案1】:

我使用了 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);

【讨论】:

    【解决方案2】:

    请下载支持在 PDF 中写入 HTML 的 fpdf 插件

    你可以在这里下载插件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();
    

    【讨论】:

    • 感谢您的帮助,但我目前正在使用它,它不支持 ul li 和 ol li 标签....
    • 我已经尝试过了,但仍然无法正常工作,而且我已经更新了问题的详细信息。谢谢。
    猜你喜欢
    • 2012-03-13
    • 1970-01-01
    • 1970-01-01
    • 2019-01-24
    • 2014-01-06
    • 2022-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多