2010-09-21 4 views
3

В настоящее время я пишу код для вывода PDF-файла на PHP с помощью PDFlib от http://www.pdflib.com/. Проблема заключается в том, что все теги html также записываются в выходной файл. Как можно отменить все те теги?Написание PDF с использованием PHP (PDFLib)

Вот мой пример кода.

$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: **** submit: Сохранить и загрузить <

Он игнорирует теги html и включает его в контент.

Есть ли другие способы печати HTML в PDF с использованием библиотеки, которую я сейчас использую (PDFlib).

Спасибо.

С уважением, Resty

+0

Возможный дубликат [Преобразование HTML + CSS в PDF с PHP?] (Http://stackoverflow.com/questions/391005/convert-html-css-to-pdf-with-php) – markus

ответ

2

Вы не можете создавать содержимое PDF из HTML с помощью PDFLib. Хорошо, вы можете написать конвертер, но это огромная работа.

Я рекомендую использовать TCPDF, который поддерживает ввод HTML.

2

Человек ... Я пытался сделать то же самое один раз. С pdflib работать очень сложно.

Я нашел этот проект, размещенный на сайте Google. Проект заслуживает 10 звезд из 5.

Он называется DOM PDF, you can download it here. Вы можете создавать PDF-файлы с HTML-страниц с поддержкой CSS. Вы можете создавать PDF-файлы с менее чем 10 строками кода!

Look at samples для просмотра в действии.

+0

float, позиция абсолютная. .. не поддерживается. Любая альтернатива? – enloz

+2

Этот проект МНОГО БОЛЬШЕ мощным, он основан на Webkik (механизм рендеринга браузера, который использует Safari и Chrome и другие) ... http: // code.google.com/p/wkhtmltopdf/. Я уверен, что он решит все ваши проблемы. – Alex

3

Я бы рекомендовал библиотеку TCPDF. Он может конвертировать ваш HTML в PDF-файл, включая CSS-код. Он поддерживает довольно много HTML-тегов и выполняет достойную работу. ОДНАКО, из личного опыта, в то время как с ним можно создавать высококачественные PDF-файлы, результаты не всегда на 100% ожидаются. Для получения желаемого результата вам может понадобиться немного тонкой настройки и возиться.

Если вы хотите удалить HTML-теги, я думаю, вы можете взглянуть на strip_tags. Но я думаю, это не совсем то, что вам нужно.

Наконец, на блоге действительно действительно классный новый ребенок - расширение PHP, использующее HTML-код WebKit и механизм рендеринга для создания PDF-файлов. Он называется the libwkhtmltox extension and can be found here. Это дает потрясающие результаты. Например, посмотрите на этот PDF-файл, сделанный с домашней страницы New York Times - см. (http://www.2shared.com/document/kYuS_G7p/nytimes.html - нажмите «Сохранить на моем компьютере» ниже). Этот вывод был создан без указания дополнительных параметров. Исключительный. ОДНАКО, вам нужно заставить его работать как расширение PHP, и это может быть нетривиальная задача. Поэтому я бы сказал: теперь придерживайтесь библиотеки TCPDF.

+0

Спасибо, ребята, за то, что поделились своими знаниями. Я попробую TCPDF. –

+0

Хотел бы я дать больше, чем один человек с правом голоса. Большое спасибо. – Cesar

Смежные вопросы