Создать новый PDF из шаблона с PHP - PullRequest
19 голосов
/ 22 июня 2011

У меня есть файл документа docx, настроенный с форматированием и макетом, который я сохранил как файл PDF. Я хочу использовать этот файл PDF в качестве шаблона для создания новых файлов PDF, предварительно заполненных пользовательскими данными.

Я видел FPDF , FPDI , tcPDF , domPDF , Zend PDF , http://koivi.com/fill-pdf-form-fields/ (Джастин Койвисто), несколько инструментов преобразования, таких как HTML2PDF , и несколько инструментов командной строки, упомянутых здесь, в stackoverflow. За исключением FPDI , ни один из них не предлагает пример , использующий шаблон PDF для поиска и замены пользовательских тегов с фактическими данными (обычно из базы данных) или добавления данных без указание набора значений, таких как x, y, позиция, шрифт, форматирование шрифта и т. д.

Создание PDF с нуля кажется слишком большой работой. Я еще не рассматривал возможность использования конвертера HTML2PDF , так как результаты могут сильно отличаться, а затем возникает проблема со стилем. Некоторые инструменты допускают использование CSS, но часто с такими ограничениями, как поддержка float.

Нет ли такого простого способа использования шаблона, как в Excel с PHPExcel ?

Мне нужно:

  • Free
  • Загрузите и используйте шаблон
  • Поиск и замена пользовательских тегов
  • Добавить данные (текст, изображение, шрифт, форматирование и т. Д.)
  • Пользовательские колонтитулы
  • Должен работать с виртуальным хостингом
  • Разрешить загрузку, сохранение / сохранение на сервере и прикрепление к электронной почте (желательно без необходимости предварительно сохранять) окончательно сгенерированного PDF

Ответы [ 10 ]

14 голосов
/ 22 августа 2013

Я действительно рекомендую MPDF :

  1. , он основан на FPDF и HTML2FPDF, поэтому вы можете использовать некоторые из их функций или добавлять другие
  2. .тонны интересных функций (создание любого вида штрих-кодов, поддержка локали, водяных знаков и многое другое)
  3. имеет очень хорошо сделанную документацию
  4. есть форум сообщества
  5. у него есть примеры!
  6. у него простая кривая обучения

Единственная плохая вещь - это то, что он немного тяжелый, но вы можете убрать вещи, которые вам не нужны.

6 голосов
/ 22 июня 2011

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

Примеры TCPD

5 голосов
/ 20 сентября 2013

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

2 голосов
/ 24 октября 2012

http://www.livedocx.com/

LiveDocx - это платформа для создания документов на основе шаблонов.

http://www.phplivedocx.org/articles/getting-started-with-phplivedocx/

1 голос
/ 02 сентября 2015

Вместо того, чтобы делать это с PHP, вы можете использовать функцию Word или OpenOffice Mail Merge для создания шаблона и импорта данных в теги.Затем вы можете «печатать», но экспортировать в формате PDF вместо фактической печати.Это может быть более быстрое решение, если вам не нужно регулярно обновлять шаблон.Я сделал это примерно для 150 продуктов, и это заняло менее 30 минут, включая создание шаблона и загрузку PDF-файлов.Просто подумав, надеюсь, это поможет кому-то еще!

1 голос
/ 28 мая 2014

Вы можете пропустить всю сложность определения шаблона поверх существующего PDF с помощью https://github.com/applicius/dhek/releases.Он создает область отображения JSON поверх PDF-страницы / координат, поэтому вы можете заполнить ее нужным PDF API.

1 голос
/ 23 июня 2011

Проблема с попыткой использовать PDF в качестве «шаблона» заключается в том, что PDF - это форматированный документ. Например. это фиксированная компоновка, и вам не следует слишком сильно портить компоновку.

Было бы намного проще, если бы вы захотели сделать больше с этим, использовать что-то вроде XSL-FO для генерации ваших документов из XML-шаблона. Все, что вам нужно сделать, это сгенерировать XML с правильными полями на месте, и затем средство визуализации XSL-FO сможет создать PDF для вас.

Лучший (только?) Бесплатный рендерер XSL-FO - Apache FOP.

0 голосов
/ 05 июля 2019

Мне это было нужно для проекта, поэтому я создал быстрый инструмент для этого.Вы можете проверить это и не стесняйтесь вносить здесь

0 голосов
/ 30 апреля 2014

Вот пример того, как создать несколько страниц с одним шаблоном 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');
0 голосов
/ 21 февраля 2014

Взгляните на http://template2pdf.com/. Он предоставляет API, который позволяет использовать шаблоны OpenOffice или LibreOffice и заменять текст или изображения.

...