Создать новый PDF из шаблона с PHP
У меня есть файл документа docx, созданный с помощью форматирования и компоновки, который я сохранил как файл PDF.
Я хочу использовать этот pdf файл в качестве шаблона для создания новых pdf файлов, предварительно заполненных пользовательскими данными.
Я видел FPDF, FPDI, tcPDF, domPDF, Zend PDF, http://koivi.com/fill-pdf-form-fields/ (Justin Koivisto), несколько инструментов конвертации, таких как HTML2PDF и несколько инструментов командной строки, упомянутых здесь в stackoverflow. За исключением FPDI, ни один из них не предлагает пример с использованием шаблона PDF для поиска и замены пользовательских тегов с помощью фактических данные (обычно из базы данных) или добавлять данные без указания набора значений, таких как x, y, postion, font, font-formating и т.д.
Создание PDF с нуля кажется слишком большой работой.
Я еще не рассмотрел использование конвертера HTML2PDF, поскольку результаты, по-видимому, сильно различаются, а затем возникает проблема с стилем. Некоторые инструменты позволяют использовать CSS, но часто с ограничениями, такими как поддержка float.
Нет ли простого способа использования шаблона, например, для Excel с PHPExcel?
Моя потребность:
- Free
- Загрузка и использование шаблона
- Поиск и замена пользовательских тегов
- Добавить данные (текст, изображение, шрифт, формирование и т.д.)
- Пользовательский верхний и нижний колонтитул
- Необходимо работать с общедоступным хостингом
- Разрешить загрузку, сохранение/сохранение на сервер и прикрепление к электронной почте (желательно, не сохраняя ее в первую очередь) окончательного сгенерированного PDF
Ответы
Ответ 1
Я действительно рекомендую MPDF:
- он основан на FPDF и HTML2FPDF, поэтому вы можете использовать некоторые из своих функций или добавлять другие.
- у него много тонких функций (создайте любые типы штрих-кодов, поддержку локалей, водяные знаки и многое другое).
- у него есть очень хорошо сделанная документация.
- у него есть форум сообщества
- у него есть примеры!
- он имеет легкую кривую обучения
Единственное плохое в том, что он немного тяжелый, но вы можете удалить вещи, которые вам не нужны.
Ответ 2
использовать TCPDF, вы можете создать шаблон PDF с использованием принципов тэгов HTML, который быстро создать, легко использовать, легко интегрировать. Я использовал его для создания подробных счетов-фактур адвокатского бюро (несколько страниц разного формата), производственного конверта ювелирной мастерской (включенная фотография), банкноты и счета-фактуры.
Примеры TCPD
Ответ 3
try 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
Ответ 4
http://www.livedocx.com/
LiveDocx - это платформа для создания документов на основе шаблонов.
http://www.phplivedocx.org/articles/getting-started-with-phplivedocx/
Ответ 5
Проблема с попыткой использования PDF в качестве "шаблона" заключается в том, что PDF является форматом документа набора. Например. это фиксированный макет, и вы не должны слишком сильно возиться с макетом.
Было бы намного проще, если вы хотите сделать больше с этим, использовать что-то вроде XSL-FO для генерации ваших документов из XML-шаблона. Все, что вам нужно сделать, это генерировать XML с нужными полями на месте, и рендеринг XSL-FO может затем создать PDF для вас.
Лучший (только?) бесплатный рендеринг XSL-FO - это Apache FOP.
Ответ 6
Вы можете пропустить всю боль определения шаблона поверх существующего PDF с помощью https://github.com/applicius/dhek/releases. Он создает область сопоставления JSON над PDF-страницей/координатами, поэтому вы можете заполнить ее с помощью API PDF, который вы предпочитаете.
Ответ 7
Вместо этого с PHP вы можете использовать функцию Word или OpenOffice Mail Merge для создания шаблона и импорта данных в теги. Затем вы можете "печатать", а экспортировать в формате pdf вместо фактической печати. Это может быть более быстрое решение, если вам не нужно регулярно обновлять шаблон. Я сделал это примерно для 150 продуктов, и потребовалось менее 30 минут, включая создание шаблона и загрузку PDF файлов. Просто последушие, надеюсь, это поможет кому-то еще!
Ответ 8
Взгляните на http://template2pdf.com/
Он предоставляет API, который позволяет использовать шаблоны OpenOffice или LibreOffice и выполнять замену текста или изображений.
Ответ 9
Вот пример того, как создавать несколько страниц с одним 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');
Ответ 10
Мне это было нужно для проекта, поэтому я создал быстрый инструмент для этого. Вы можете проверить это и не стесняйтесь внести свой вклад здесь