使用PHP编写PDF(PDFLib)

时间:2010-09-21 11:58:39

标签: php html pdf pdflib

我正在编写一个代码,使用来自http://www.pdflib.com/的PDFlib在PHP中输出pdf文件。问题是所有html标签也写在输出文件中。如何能够取消所有这些标签?

这是我的示例代码。

$postVariable = $_POST;

$contentData = "";
foreach($postVariable as $key => $value){ 
    if(is_array($key)){
        foreach($key as $key1 => $value1){
           $contentData.= $key1 .": ". $value1."<nextline>";
        }
    }else{
        $contentData.= $key .": ". $value."<nextline>";
    } 
}

$testdata = nl2br($contentData);
$pdf = pdf_new();
// open a file
pdf_open_file($pdf, $_SERVER['DOCUMENT_ROOT']."cas".DIRECTORY_SEPARATOR."$filename.pdf");
// start a new page (A4)
pdf_begin_page($pdf, 595, 842);

// Locate Font Directory
$fontdir = "C:\WINDOWS\Fonts";
// Font Name Parameters
pdf_set_parameter($pdf, "FontOutline", "arialMyName=$fontdir\arial.ttf");
// Find Font
$arial = PDF_findfont($pdf,"arialMyName","host",0 );
// Set font size and font name
pdf_setfont($pdf, $arial, 10);

//$arial = pdf_findfont($pdf, "Arial", "host", 1);
//pdf_setfont($pdf, $arial, 10);
// print text
pdf_show_xy($pdf, "TO THE UNIT OWNER",50, 750); 
pdf_show_xy($pdf, "Test ext", 50,730);
pdf_show_xy($pdf, "test test", 50,715);
pdf_show_xy($pdf, $contentData, 50,700);
// end page
pdf_end_page($pdf);
// close and save file
pdf_close($pdf);

,示例输出为: 对单位所有者 测试文本 测试一下 类型:公寓**** var_name:**** var_company:**** var_date:****提交:保存并下载&lt;

它忽略了html标签,并将其包含在内容中。

是否还有其他方法可以使用我目前正在使用的库(PDFlib)将HTML打印到PDF。

感谢。

的问候, Resty

3 个答案:

答案 0 :(得分:3)

我会推荐TCPDF库。它可以将您的HTML转换为PDF文件,包括CSS代码。它支持相当多的HTML标签,并且做得不错。但是,从个人经验来看,虽然很有可能用它生成高质量的PDF文件,但结果并不总是如预期的那样100%。它可能需要一些调整和摆弄才能得到你想要的结果。

如果您只想删除HTML标记,我想您可能想看看strip_tags。但我想这并不是你真正想要的。

最后,这个块上有一个非常酷的新孩子 - 一个使用WebKit HTML和渲染引擎生成PDF的PHP扩展。它被称为the libwkhtmltox extension and can be found here。它产生惊人的结果。例如,查看它从纽约时报的主页制作的PDF - 请参阅(http://www.2shared.com/document/kYuS_G7p/nytimes.html - 点击下面的“保存到我的电脑”。生成该输出时未指定任何其他选项。例外的。但是,你需要让它作为PHP扩展运行,这可能是一个非常重要的任务。所以我想说:现在坚持使用TCPDF库。

答案 1 :(得分:2)

您无法使用PDFLib从HTML生成PDF内容。好的,你可以写转换器,但这是一项艰巨的工作。

我建议使用支持HTML输入的TCPDF

答案 2 :(得分:2)

男人......我曾试图做同样的事情。直接使用pdflib非常困难。

我发现这个项目是在Google代码网站上托管的。该项目在5个中名列前10位。

它被称为DOM PDF,you can download it here。您可以通过CSS支持从HTML页面生成PDF。您可以生成少于10行代码的PDF!

Look at samples看到它的实际效果。