ФорумПрограммированиеПыхнуть хотите?F.A.Q. → Генерирование PDF средствами PHP

Генерирование PDF средствами PHP

  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 26 ноября 2008 г. 2:23

    Этот пост для тех, кто хочет сгененировать данных в формате PDF.

    [size=20]Использование FPDF[/size]

    Либа предназначена для сборки PDF документов и не использует библиотеку PDFLib, то есть вам не надо пересобирать PHP и т.д.

    Скачать fpdf.zip

    Для того чтобы вам использовать русский язык в своих документах, вам понадобиться пересобрать шрифт с поддержкой русского языка. Да и для того чтобы использовать шрифт, отличный от тех, которые есть в наборе, вам тоже придется собирать шрифт.

    Вот вкратце как это:
    Качаем утилиту http://ttf2pt1.sourceforge.net/
    cmd> ttf2pt1 -a c:\windows\fonts\arial.ttf c:\arial 

    Получаем два файлика arial.afm и arial.t1a

    Теперь ищем в сырцах библиотеки файл /fpdf/font/makefont/makefont.php и используем его


    <?php
    require('/fpdf/fpdf.php');
    require('/fpdf/font/makefont/makefont.php');
    MakeFont('c:\\windows\\fonts\\arial.ttf','c:\\arial.afm','cp1251');
    ?>


    и на выходе получаем arial.z и arial.php, перемещаем их в /fpdf/font/
    Все, теперь у нас есть шрифт с кириллической кодировкой.

    Использование библиотеки:
    <?php
    require('/fpdf/fpdf.php');

    $pdf = new FPDF();
    $pdf->AddFont('Arial','','Arial.php');
    $pdf->AddPage();
    $pdf->SetFont('Arial', '', '35');
    $pdf->Cell(40,10,'Пыха');
    $pdf->Output();

    ?>


    [size=20]PECL-расширение PDFLib[/size]

    Для Windows: http://pecl4win.php.net/ext.php/php_pdflib.dll
    Для FreeBSD: cd /usr/ports/cd print/pecl-pdflib/ && make install clean

    А дальше в мануал :)

    Пример использования:

    <?php

    // create handle for new PDF document
    $pdf = pdf_new();

    // open a file
    pdf_open_file($pdf, "test.pdf");

    // start a new page (A4)
    pdf_begin_page($pdf, 595, 842);

    // get and use a font object
    $fontdir = "C:\WINDOWS\Fonts";
    pdf_set_parameter($pdf, "FontOutline", "arialMyName=$fontdir\arial.ttf");
    $arial = pdf_findfont($pdf, "arialMyName", "host", 1);
    pdf_setfont($pdf, $arial, 10);

    // print text
    pdf_show_xy($pdf, "There are more things in heaven and earth, Horatio,",50, 750);
    pdf_show_xy($pdf, "than are dreamt of in your philosophy", 50,730);

    // end page
    pdf_end_page($pdf);

    // close and save file
    pdf_close($pdf);

    ?>


    [size=20]А как редактировать уже существующий PDF документ?[/size]
    adw/0
  • phpdude

    Сообщения: 26624 Репутация: N Группа: в ухо

    Spritz 26 ноября 2008 г. 2:27, спустя 4 минуты 16 секунд

    чувствую себя как на хабре. вроде и статья, вроде и про программирование … но нахуй не нужна. сори :)

    это все есть в php_manual_en.chm
    Сапожник без сапог
  • phpdude

    Сообщения: 26624 Репутация: N Группа: в ухо

    Spritz 26 ноября 2008 г. 2:29, спустя 2 минуты 9 секунд

    а вообще по теме, куда интереснее

    http://www.digitaljunkies.ca/dompdf/
    Сапожник без сапог
  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 26 ноября 2008 г. 2:30, спустя 56 секунд


    чувствую себя как на хабре. вроде и статья, вроде и про программирование … но нахуй не нужна. сори :)

    это все есть в php_manual_en.chm


    я пишу для тех у кого траблы, тем более то что есть в мане это в самом конце статьи. А я писал о библиотеки FPDF
    adw/0
  • phpdude

    Сообщения: 26624 Репутация: N Группа: в ухо

    Spritz 26 ноября 2008 г. 2:32, спустя 1 минуту 44 секунды

    буээээ … там тарболы обычно при работе с пдф вознивают, пример всегда норм работает, а вот ебля на самом деле с версткой пдф документа, ибо там пиздец :(
    Сапожник без сапог
  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 26 ноября 2008 г. 2:43, спустя 10 минут 30 секунд


    буээээ … там тарболы обычно при работе с пдф вознивают, пример всегда норм работает, а вот ебля на самом деле с версткой пдф документа, ибо там пиздец :(
    да, это ты прав на все 100, однако я рассказал о проблемах со шрифтами. По крайней мере такая цель была
    adw/0
  • phpdude

    Сообщения: 26624 Репутация: N Группа: в ухо

    Spritz 26 ноября 2008 г. 2:46, спустя 3 минуты 50 секунд

    ах, прости не читал

    когда увидел вот ето

    <?php    

    // create handle for new PDF document
    $pdf = pdf_new();

    // open a file
    pdf_open_file($pdf, "test.pdf");

    // start a new page (A4)
    pdf_begin_page($pdf, 595, 842);

    // get and use a font object
    $fontdir = "C:\WINDOWS\Fonts";
    pdf_set_parameter($pdf, "FontOutline", "arialMyName=$fontdir\arial.ttf");
    $arial = pdf_findfont($pdf, "arialMyName", "host", 1);
    pdf_setfont($pdf, $arial, 10);

    // print text
    pdf_show_xy($pdf, "There are more things in heaven and earth, Horatio,",50, 750);
    pdf_show_xy($pdf, "than are dreamt of in your philosophy", 50,730);

    // end page
    pdf_end_page($pdf);

    // close and save file
    pdf_close($pdf);

    ?>


    дальше читать не стал)
    Сапожник без сапог
  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 26 ноября 2008 г. 2:57, спустя 10 минут 55 секунд

    дальше читать не стал)
    просто воткнул для того, чтобы немного больше показать про PDFLib ;)
    adw/0
  • phpdude

    Сообщения: 26624 Репутация: N Группа: в ухо

    Spritz 26 ноября 2008 г. 3:08, спустя 10 минут 13 секунд

    adw0rd, это и смутило)))
    мануалы надо в мануале читать)))
    Сапожник без сапог
  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 26 ноября 2008 г. 3:22, спустя 14 минут 55 секунд

    phpdude, переоформил, может так лучше?)
    adw/0
  • phpdude

    Сообщения: 26624 Репутация: N Группа: в ухо

    Spritz 26 ноября 2008 г. 3:28, спустя 5 минут 25 секунд

    ебать. ужасно :-D

    помести в раздел "пых статьи". ну и ссылку в эту тему, мб кому пригодится
    Сапожник без сапог
  • md5

    Сообщения: 11948 Репутация: N Группа: в ухо

    Spritz 26 ноября 2008 г. 3:33, спустя 5 минут 29 секунд


    phpdude, переоформил, может так лучше?)
    г
    теперь больше на хабр похоже )))
    заголовки [size=20]ЗДОРОВЫЕ!![/size]
    все умрут, а я изумруд
  • phpdude

    Сообщения: 26624 Репутация: N Группа: в ухо

    Spritz 26 ноября 2008 г. 3:35, спустя 1 минуту 52 секунды

    и не информативные :-D
    Сапожник без сапог
  • Lirck

    Сообщения: 1658 Репутация: N Группа: Джедаи

    Spritz 27 ноября 2008 г. 8:33, спустя 1 день 4 часа 58 минут

    И критикуют всё прям как на хабре.
  • md5

    Сообщения: 11948 Репутация: N Группа: в ухо

    Spritz 14 января 2010 г. 23:50, спустя 413 дней 15 часов 16 минут

    спасибо, все получилось
    только поправить надо, что для винды надо качать http://www.fpdf.org/fr/dl.php?id=22 а не http://ttf2pt1.sourceforge.net/
    у тебя же там командная строка винды…
    все умрут, а я изумруд

Пожалуйста, авторизуйтесь, чтобы написать комментарий!