У меня есть файл документа docx, созданный с помощью форматирования и компоновки, который я сохранил как файл PDF. Я хочу использовать этот pdf-файл в качестве шаблона для создания новых pdf-файлов, предварительно заполненных пользовательскими данными.
Я видел FPDF , FPDI , tcPDF , domPDF , Zend PDF , http://koivi.com/fill-pdf-form-fields/ (Justin Koivisto), несколько инструментов конвертации, таких как HTML2PDF и несколько инструментов командной строки, упомянутых здесь в переполнение стека. За исключением FPDI , ни один из них не предлагает пример с использованием шаблона PDF для поиска и замены пользовательских тегов с фактическими данными (обычно из базы данных) или добавления данных без указания набора значений, таких как x, y, postion, шрифт, шрифт и т.д.
Создание PDF с нуля кажется слишком большой работой. Я еще не рассмотрел использование конвертера HTML2PDF, поскольку результаты кажутся сильно различающимися, и тогда возникает проблема с стилем. Некоторые инструменты позволяют использовать CSS, но часто с ограничениями, такими как поддержка float.
Нет ли простого способа использовать шаблон, например, для Excel с помощью PHPExcel ?
Моя потребность:
Я действительно рекомендую MPDF :
Единственное плохая вещь в том, что она немного тяжелая, но вы можете удалить вещи, которые вам не нужны.
используя TCPDF, вы можете создать шаблон PDF с использованием принципов HTML-тегов, который быстро создать, прост в использовании, легко интегрировать. Я использовал его для создания подробных счетов-фактур адвокатского бюро (несколько страниц разного формата), производственного конверта ювелирных изделий мастерская (включенная фотография), банкноты и счета-фактуры.
Примеры TCPD
попробуйте FPDI, он поддерживает редактирование существующего шаблона и внесение изменений в этот файл шаблона
использование довольно прямолинейно:
<?php require_once('fpdf.php'); require_once('fpdi.php'); $pdf = new FPDI(); $pagecount = $pdf->setSourceFile('TestDoc.pdf'); $tplidx = $pdf->importPage(1, '/MediaBox'); $pdf->addPage(); $pdf->useTemplate($tplidx, 10, 10, 90); $pdf->Output('newpdf.pdf', 'D');
Также см. Ссылки ниже: Есть ли решение для pdf-шаблона в PHP?
Написание / Рисование над документом шаблона PDF в PHP
LiveDocx – это платформа для создания документов на основе шаблонов.
http://www.phplivedocx.org/articles/getting-started-with-phplivedocx/
Проблема с попыткой использования PDF в качестве «шаблона» заключается в том, что PDF является форматом документа набора. Например. это фиксированный макет, и вы не должны слишком возиться с макетом.
Было бы намного проще, если вы хотите сделать больше с этим, использовать что-то вроде XSL-FO для создания ваших документов из XML-шаблона. Все, что вам нужно, это создать XML с правильными полями на месте, и рендеринг XSL-FO может затем создать PDF-файл для вас.
Лучший (только?) Бесплатный визуализатор XSL-FO – это Apache FOP.
Вы можете пропустить всю боль определения шаблона поверх существующего PDF с помощью https://github.com/applicius/dhek/releases . Он создает область сопоставления JSON над PDF-страницей / координатами, поэтому вы можете заполнить ее с помощью API PDF, который вы предпочитаете.
Вместо этого с PHP вы можете использовать функцию Word или OpenOffice Mail Merge для создания шаблона и импорта данных в теги. Затем вы можете «печатать», а экспортировать в формате pdf вместо фактической печати. Это может быть более быстрое решение, если вам не нужно регулярно обновлять шаблон. Я сделал это примерно для 150 продуктов, и потребовалось менее 30 минут, включая создание шаблона и загрузку PDF-файлов. Просто последушие, надеюсь, это поможет кому-то еще!
Взгляните на http://template2pdf.com/ Он предоставляет API, который позволяет использовать шаблоны OpenOffice или LibreOffice и делать замену текста или изображений.
Вот пример того, как создавать несколько страниц с одним PDF-шаблоном и контентом в формате HTML. На основе библиотеки MPDF
.
$mpdf = new mPDF('utf-8', $format_size, 0, '', $margin_left, $margin_right, $margin_top, $margin_bottom, 0, 0, $orientation); if ( $bg_template ) { // is a PDF template file $mpdf->SetImportUse(); $pagecount = $mpdf->SetSourceFile( $bg_template ); $tplIdx = $mpdf->ImportPage( $pagecount ); } foreach ( $html as $one_letter_text ) { $mpdf->addPage(); if ( $bg_template ) { $mpdf->useTemplate( $tplIdx, 0, 0); } $mpdf->WriteHTML( $one_letter_text ); } $title = 'my-letter.pdf'; $pdf_path = $this->created_pdf_upload_dir.'/'.$title; $mpdf->Output( $pdf_path, 'F');