обработка PDF файлов в php скриптах

12
malls
На сайте с 08.08.2005
Offline
255
#11

Я бы пошел другим путем - PDF это по сути текстовый файл, разберитесь в спецификации самого PDF (правда геморно) зато потом будете рулить им как хотите вообще...

verhmax
На сайте с 01.12.2005
Offline
191
#12

telemad, вообще не создаёт ничего:(

T
На сайте с 19.12.2006
Offline
101
#13

verhmax,

вот рабочий код, но для библиотеки 5_с_копейками

на 7 библиотеку переделайте сами, это очень просто :)

$pdf = pdf_new();

pdf_open_file($pdf, 'test12.pdf');

pdf_begin_page($pdf, 500, 700);

$im = pdf_open_image_file($pdf, "png", "logo.png",'',1);

pdf_place_image($pdf, $im, 100, 250, 1);

pdf_close_image($pdf, $im);

pdf_end_page($pdf);

pdf_close($pdf);

$data = file_get_contents('test12.pdf');

header("Content-type: application/pdf");

header("Content-disposition: inline; filename=test12.pdf");

header("Content-length: " . strlen($data));

echo $data;

нельзя одновременно считывать в буфер и писать на диск.

и еще - проверьте наличие картинки там, где ее ищет ПДФлиб

лучше укажите абсолютный путь к картинке и файлам ПДФ-кам

verhmax
На сайте с 01.12.2005
Offline
191
#14

дело в том что этот код был взят с примеров на сайте. и он не пашет:(

T
На сайте с 19.12.2006
Offline
101
#15

если у Вас библиотека 7 версии, то он и не будет пахать, т.к. почти все функции перестали поддерживаться.

я специально себе установил 5 библиотеку (последнюю, какую нашел под винду)

и оттестировал скрипт - все замечательно работает

на 7 версии я просто не могу протестировать, т.к. нет ее на компе.

включите ошибки PHP

ini_set('display_errors', 1);

error_reporting(E_ALL); //error_reporting(E_WARNING);

возможно, библиотека сама вам расскажет, что не то.

verhmax
На сайте с 01.12.2005
Offline
191
#16

всё, с картинками разобрался, спасибо большое. Работает. но у меня ещё один вопрос был. возможно ли склеить два pdf документа???

T
На сайте с 19.12.2006
Offline
101
#17
verhmax:
всё, с картинками разобрался, спасибо большое. Работает. но у меня ещё один вопрос был. возможно ли склеить два pdf документа???

из бесплатных готовых решений нашел консольную тулзу:

http://www.accesspdf.com/pdftk/

...and use it to:

Merge PDF Documents
Split PDF Pages into a New Document
Decrypt Input as Necessary (Password Required)
Encrypt Output as Desired
Fill PDF Forms with FDF Data and/or Flatten Forms
Apply a Background Watermark
Report on PDF Metrics such as Metadata, Bookmarks, and Page Labels
Update PDF Metadata
Attach Files to PDF Pages or the PDF Document
Unpack PDF Attachments
Burst a PDF Document into Single Pages
Uncompress and Re-Compress Page Streams
Repair Corrupted PDF (Where Possible)

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

Merge Two or More PDFs into a New Document

pdftk 1.pdf 2.pdf 3.pdf cat output 123.pdf

Shtogrin
На сайте с 02.11.2006
Offline
95
#18
malls:
Я бы пошел другим путем - PDF это по сути текстовый файл, разберитесь в спецификации самого PDF (правда геморно) зато потом будете рулить им как хотите вообще...

Ошибочное мнение, PDF - это программа написанная на языке PostScript. Вы хотите написать свой интерпретатор?.


возможно ли склеить два pdf

Самая хорошая программа для работы с PostScript / PDF это gs (http://pages.cs.wisc.edu/~ghost/), большинство утилит работают через нее. Соединить несколько файлов:

gs -q -dNOPAUSE -dQUIET -sDEVICE=pdfwrite -sOutputFile=combined.pdf file01.pdf file02.pdf file03.pdf file04.pdf -c quit
www.shtogrin.com (http://www.shtogrin.com/). Канцтовары (http://www.invit.com.ua/). 1С Бухгалтерия (http://account.kiev.ua/).
verhmax
На сайте с 01.12.2005
Offline
191
#19
Shtogrin:
Соединить несколько файлов:

мне надо соеденить файлы средствами php. тоесть в тойже самой библиотеке pdflib. возможно ли организовать такое?

verhmax добавил 16.05.2008 в 12:38

я нашол такой кусок кода:

$searchpath = "../data";

$outfilename = "starter_pdfmerge.pdf";

$pdffiles = array(

"PDFlib-real-world.pdf",

"PDFlib-datasheet.pdf",

"TET-datasheet.pdf",

"PLOP-datasheet.pdf",

"pCOS-datasheet.pdf"

);

$p = PDF_new();

PDF_set_parameter($p, "errorpolicy", "return");

PDF_set_parameter($p, "SearchPath", $searchpath);

if (PDF_begin_document($p, $outfilename, "") == 0)

die("Error: " . PDF_get_errmsg($p));

PDF_set_info($p, "Creator", "PDFlib starter sample");

PDF_set_info($p, "Title", "starter_pdfmerge");

foreach ($pdffiles as $pdffile) {

$indoc = PDF_open_pdi_document($p, $pdffile, "");

if ($indoc == 0) {

printf("Error: %s\n", PDF_get_errmsg($p));

continue;

}

$endpage = PDF_pcos_get_number($p, $indoc, "/Root/Pages/Count");

for ($pageno = 1; $pageno <= $endpage; $pageno++) {

$page = PDF_open_pdi_page($p, $indoc, $pageno, "");

if ($page == 0) {

printf("Error: %s\n", PDF_get_errmsg($p));

continue;

}

PDF_begin_page_ext($p, 10, 10, "");

if ($pageno == 1) {

PDF_create_bookmark($p, $pdffile, "");

}

PDF_fit_pdi_page($p, $page, 0, 0, "adjustpage");

PDF_close_pdi_page($p, $page);

PDF_end_page_ext($p, "");

}

}

PDF_end_document($p, "");

PDF_delete($p);

print "$outfilename generated";

но он не работает у меня?

может потомучто я не разобрался с этим? $searchpath = "../data"; что в какой папке должно быть?

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий