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:
Je recommande vraiment MPDF :
Le seul inconvénient est qu’il est un peu lourd, mais vous pouvez supprimer des éléments inutiles.
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.
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?
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/
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.
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!
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.
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');
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.