nwb/url-to-pdf-client (1.1.15)
Published 2025-01-18 01:35:57 +00:00 by drone_publisher
Installation
{
"repositories": [{
"type": "composer",
"url": " "
}
]
}
composer require nwb/url-to-pdf-client:1.1.15
About this package
Transformer du html en pdf
url-to-pdf-client
Facilite l'utilisation de l'API url-to-pdf en PHP :
- Transforme les balises issues de TCPDF ou Html2PDF , <page_header>, <page_footer> en
- Répare/construit les chemins vers les fichiers ver l'url accessible fournie par l'utilisateur
- Renvoie le chemin du fichier pdf créé
Installation
Composer
Ajouter les modules communs dans composer.json
{
"repositories": [{
"type": "composer",
"url": "https://git.nwb.fr/api/packages/modules-communs-php/composer"
}
]
}
Lancer la commande
composer require nwb/url-to-pdf-client
Utilisation
// Instancier le module
$htmlToPdf = new UrlToPdf();
// Appeler la méthode de conversion avec les chemins accessibles (ex: public-data/)
$htmlToPdf -> getPdfFromHtml(string $htmlContent, string $projectRootPath, string $webPath, string $webPathUrl, ?array $pdfOptions, bool $isTestMode = false): string
Utilisation
PDF options
- Attention, certaines options peuvent ne pas fonctionner suivant les mises à jour de Puppetter et du module. Les utiliser en cas de besoin.
- Documentation complète des options : https://pptr.dev/api/puppeteer.pdfoptions
- Les options sont à placer en paramètre de la fonction getPdfFromHtml. Si null, par défaut : ['format' => 'a4']
- Options PDF du module (ne font pas partie des options Puppetter) : ['noBreakTableRows' => true] : True par défaut, permet de ne pas couper les lignes d'un tableau au saut de page. ['font' => [ 'size' => 'Xxx', 'style' => 'XXXXX', ... ]] : Options permettant d'affecter des propriétés font basiques sur la balise <html> englobant le html fourni
Authentification options
Options à ajouter si l'accès au site est protégée par une authentification http basique (username/password) -> ['auth' => ['username' => 'xxxx', 'password' => 'xxxx']]
Exemple
// Création du PDF avec le module nwb/url-to-pdf-client
use Nwb\UrlToPdf\UrlToPdf;
try {
$urlToPdf = new UrlToPdf(isOnDevEnv() ? ['apiUrl' => 'http://htmltopdf:9999'] : []); // ICI : si dev mode, on utilise l'url de l'api portable
// Création du répértoire temporaire
if (!is_dir(DIR_PUBLIC_DATA . '/tmp/pdf')) {
mkdir(DIR_PUBLIC_DATA . '/tmp/pdf', 0777, true);
}
// définition des chemins à passer en paramètres
$projectRootPath = DIR_ROOT_SITE;
$webPath = DIR_PUBLIC_DATA . '/tmp/pdf';
$webPathUrl = (!isOnDevEnv() ? get_url_site() : 'http://php:8080') . '/public-data/tmp/pdf'; // ICI : si dev mode, adresse de conteneur de l'app
// Définitiion des options PDF
$pdfOptions = [
'format' => 'A4',
'landscape' => true, // orientation feuille
'printBackground' => true, // couleur de fond des cellules, false par défaut
'margin' => [
'top' => '7mm',
'right' => '7mm',
'bottom' => '7mm',
'left' => '7mm',
],
'noBreakTableRows' => true,
'font' => [
'size' => '30px',
'family' => 'Arial',
]
];
// Génération du PDF
$pdfPath = $urlToPdf->getPdfFromHtml($htmlContent, $projectRootPath, $webPath, $webPathUrl, $pdfOptions);
// ICI : envoie le PDF au navigateur
header('Content-Type: application/pdf');
header('Content-Disposition: inline; filename="' . $name . '"');
header('Content-Length: ' . filesize($pdfPath));
readfile($pdfPath);
} catch (\Throwable $th) {
echo $th->getMessage();
}
Lancer les test
composer run test
Dependencies
Dependencies
ID | Version |
---|---|
ext-curl | * |
ext-json | * |
mikey179/vfsstream | ^1.6 |
php | >=7.1 |
setasign/fpdf | ^1.8 |
setasign/fpdi | ^2.5 |
Development Dependencies
ID | Version |
---|---|
phpunit/phpunit | ^10.4 |