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
Details
Composer
2025-01-18 01:35:57 +00:00
4
NowwweB
13 KiB
Assets (1)
Versions (67) View all
1.1.22 2025-01-24
1.1.21 2025-01-22
1.1.20 2025-01-22
1.1.19 2025-01-20
1.1.18 2025-01-20