web-dev-qa-db-fra.com

Créer un nouveau PDF de modèle avec PHP

J'ai un fichier docx configuré avec la mise en forme et la mise en page, que j'ai enregistré sous forme de fichier PDF . Je souhaite utiliser ce fichier pdf en tant que modèle pour la création de nouveaux fichiers pdf pré-remplis avec les données utilisateur.

J'ai vu FPDF , FPDI , tcPDF , domPDF , Zend PDF , http: // koivi. com/fill-pdf-form-fields/ (Justin Koivisto), quelques outils de conversion tels que HTML2PDF et quelques outils de ligne de commande mentionnés ici sur stackoverflow. À l’exception de FPDI , aucun d’entre eux n’offre un exemple utilisant un modèle PDF pour rechercher et remplacer les balises personnalisées par des données réelles (généralement à partir d’une base de données) ou ajouter des balises. données sans spécifier un tas de valeurs comme x, y, position, police, formatage de police, etc.

Créer un PDF à partir de zéro semble être une tâche trop ardue ..__ Je n’ai pas encore envisagé d’utiliser un convertisseur HTML2PDF car les résultats semblent très variables, ce qui pose un problème de style. Certains outils autorisent les CSS, mais souvent avec des limites telles que l'absence de support flottant.

Existe-t-il un moyen simple d’utiliser un modèle comme pour Excel avec PHPExcel ?

Mon besoin est:

  • Libre
  • Charger et utiliser un modèle
  • Rechercher et remplacer les balises personnalisées
  • Ajouter des données (texte, image, police, mise en forme, etc.)
  • En-tête et pied de page personnalisés
  • Doit travailler avec l'hébergement partagé
  • Autoriser le téléchargement, l'enregistrement/le stockage sur le serveur et l'attachement au courrier électronique (préférable sans avoir à l'enregistrer au préalable) du fichier final PDF généré 
17
Kim

Je recommande vraiment MPDF :

  1. il est basé sur FPDF et HTML2FPDF, vous pouvez donc utiliser certaines de leurs fonctions ou en ajouter d’autres
  2. il a des tonnes de fonctionnalités intéressantes (créer tout type de codes à barres, prise en charge des paramètres régionaux, filigranes, etc.)
  3. il a une documentation extrêmement bien faite
  4. il a un forum communautaire
  5. il a des exemples!
  6. il a une courbe d'apprentissage facile

Le seul inconvénient est qu’il est un peu lourd, mais vous pouvez supprimer des éléments inutiles.

14
drakezilla

utiliser TCPDF, vous pouvez créer le modèle PDF à l'aide des balises HTML. Principes de création rapides, faciles à utiliser et à intégrer. Je l'ai utilisé pour générer des factures détaillées d'un cabinet d'avocats (plusieurs pages avec un format différent). enveloppe d'un atelier de bijouterie (photo incluse), notes de stock et factures.

Exemples TCPD

6
Catalin Marin

try FPDI it prend en charge la modification d’un modèle existant et la modification de ce fichier de modèle

l'utilisation est assez stratight en avant:

<?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');

Reportez-vous également aux liens ci-dessous: Existe-t-il une solution pour les modèles PDF en PHP?

Écrire/dessiner sur un modèle de document PDF dans PHP

5
Gaurav Sharma

http://www.livedocx.com/

LiveDocx est une plate-forme de création de documents basée sur des modèles.

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

2
Felipe Duardo

Le problème lié à l'utilisation d'un PDF en tant que "modèle" est que PDF est un format de document composé. Par exemple. c'est une mise en page fixe et vous ne devriez pas trop jouer avec la mise en page.

Il serait beaucoup plus simple, si vous voulez faire plus avec cela, d’utiliser quelque chose comme XSL-FO pour générer vos documents à partir d’un "modèle" XML. Tout ce que vous avez à faire est de générer le code XML avec les champs appropriés en place et le rendu XSL-FO peut alors créer le PDF pour vous.

Apache FOP est le meilleur (uniquement?) Moteur de rendu XSL-FO gratuit.

1
ju1ce--

Au lieu de faire cela avec PHP, vous pouvez utiliser la fonctionnalité de fusion de courrier Word ou OpenOffice pour créer le modèle et importer les données dans les balises. Vous pouvez ensuite "imprimer" mais exporter au format PDF au lieu d’imprimer. Cela pourrait être une solution plus rapide à condition que vous n’ayez pas besoin de mettre à jour le modèle régulièrement. Je l'ai fait pour environ 150 produits et cela a pris moins de 30 minutes, y compris la création du modèle et le téléchargement des fichiers PDF. Juste après coup, espérons que cela aidera quelqu'un d'autre!

1
NotJay

Vous pouvez ignorer toute la difficulté de la définition du modèle par rapport au PDF existant avec https://github.com/applicius/dhek/releases . Il crée une zone de mappage JSON sur la page/les coordonnées PDF afin que vous puissiez la remplir avec l'API PDF de votre choix.

1
cchantep

Voici un exemple montrant comment créer plusieurs pages avec un modèle PDF et un contenu au format HTML. Basé sur la bibliothèque 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
Sergey Onishchenko

Jetez un coup d’œil à http://template2pdf.com/ Il fournit une API qui vous permet d’utiliser des modèles OpenOffice ou LibreOffice et de remplacer des textes ou des images.

0
user3222082