PHP PDF函数错误

时间:2011-06-07 15:03:46

标签: php pdf

好的,所以这里是完整的代码,它一直给我关于pdf_add_bookmark函数的废话,而PHP的网站上没有关于这个函数的文档

<?php

     // Declare PDF File

     $pdf = pdf_new();
     PDF_open_file($pdf, "1.pdf");

     // Set Document Properties

     PDF_set_info($pdf, "author", "BT");
     PDF_set_info($pdf, "title", "Whats a title?");
     PDF_set_info($pdf, "creator", "BT");
     PDF_set_info($pdf, "subject", "Whats a subject?");

     // Get fonts to use

     pdf_set_parameter($pdf, "FontOutline", "Arial=C:\Windows\Fonts\arial.ttf"); // get a custom font
     $font1 = PDF_findfont($pdf, "Helvetica-Bold",  "winansi", 0); // declare default font
     $font2 = PDF_findfont($pdf, "Arial",  "winansi", 1); // declare custom font & embed into file

     /*
     You can use the following Fontypes 14 safely (the default fonts)
     Courier, Courier-Bold, Courier-Oblique, Courier-BoldOblique 
     Helvetica, Helvetica-Bold, Helvetica-Oblique, Helvetica-BoldOblique 
     Times-Roman, Times-Bold, Times-Italic, Times-BoldItalic 
     Symbol, ZapfDingbats
     */

     // make the images

     $image1 = PDF_open_image_file($pdf, "jpeg", "424698.jpg","page",$page); //supported filetypes are: jpeg, tiff, gif, png.

     //Make First Page

     PDF_begin_page($pdf, 450, 450); // page width and height.
     $bookmark = PDF_add_bookmark($pdf, "Front"); // add a top level bookmark.
     PDF_setfont($pdf, $font1, 12); // use this font from now on.
     PDF_show_xy($pdf, "First Page!", 5, 225); // show this text measured from the left top.
     pdf_place_image($pdf, $image1, 255, 5, 1); // last number will schale it.
     PDF_end_page($pdf); // End of Page.

     //Make Second Page

     PDF_begin_page($pdf, 450, 225); // page width and height.
     $bookmark1 = PDF_add_bookmark($pdf, "Chapter1", $bookmark); // add a nested bookmark. (can be nested multiple times.)
     PDF_setfont($pdf, $font2, 12); // use this font from now on.
     PDF_show_xy($pdf, "Chapter1!", 225, 5);
     PDF_add_bookmark($pdf, "Chapter1.1", $bookmark1); // add a nested bookmark (already in a nested one).
     PDF_setfont($pdf, $font1, 12);
     PDF_show_xy($pdf, "Chapter1.1", 225, 5);
     PDF_end_page($pdf);

     // Finish the PDF File

     PDF_close($pdf); // End Of PDF-File.
     $output = PDF_get_buffer($pdf); // assemble the file in a variable.

     // Output Area

     header("Content-type: application/pdf"); //set filetype to pdf.
     header("Content-Length: ".strlen($output)); //content length
     header("Content-Disposition: attachment; filename=test.pdf"); // you can use inline or attachment.
     echo $output; // actual print area!

     // Cleanup

     PDF_delete($pdf); 
?>

这是返回的错误代码

Fatal error: Uncaught exception 'PDFlibException' with message 'pdf_add_bookmark() expects exactly 4 parameters, 2 given' in D:\wamp\www\PDF\pdf.php:36 Stack trace: #0 D:\wamp\www\PDF\pdf.php(36): pdf_add_bookmark(Resource id #2, 'Front') #1 {main} thrown in D:\wamp\www\PDF\pdf.php on line 36

4 个答案:

答案 0 :(得分:1)

我建议改用http://www.fpdf.org/。它没有积极开发,但它有良好的文档和支持/跟踪。

答案 1 :(得分:1)

PDF_add_bookmark但已被弃用,请说使用PDF_create_bookmark

答案 2 :(得分:1)

如果你想写PDF,最好的选择是TCPDF libray。看这里:http://www.tcpdf.org/

正在积极开发中,有很多例子,效果很好。它也非常适合将HTML转换为PDF(这有时很有用,而且比使用PDF单元更麻烦)

答案 3 :(得分:0)

int pdf_add_bookmark ( resource pdfdoc, string text, int parent, int open )

在父项下添加嵌套书签,或者如果parent = 0,则添加新的顶级书签。返回书签描述符,该描述符可用作后续嵌套书签的父级。如果open = 1,子书签将被折叠,如果open = 0则不可见。参数parent和open在PHP 4.3.5或PDFlib小于5之前是可选的。