Skip to content

Migrer depuis mPDF

Ce guide vous aide à migrer de mPDF (mpdf/mpdf) vers TCPDF-Next. mPDF est une bibliothèque HTML vers PDF avec support CSS large et fonctionnalités comme texte CJK, codes-barres et filigranes. TCPDF-Next offre un surensemble des capacités de mPDF avec conformité aux standards modernes et zéro dépendance d'exécution.

Comparaison des fonctionnalités

FonctionnalitémPDFTCPDF-Next
Version PHP7.4+8.5+
Version PDFPDF 1.4 / 1.7PDF 2.0
ArchitectureCentré sur HTML/CSSPDF natif avec support HTML
Dépendances d'exécution10+ packages ComposerZéro
ChiffrementRC4, AES-128, AES-256AES-256 uniquement (PDF 2.0)
Signatures numériquesNon supportéPAdES B-B à B-LTA
PDF/APDF/A-1b, PDF/A-3b (partiel)PDF/A-4 (ISO 19005-4 complet)
PDF baliséLimitéAccessibilité PDF/UA complète
Support CJKOui (polices intégrées 50+ MB)Oui (enregistrez les vôtres, subsetting optimisé)
RTL / BiDiOuiOui (conforme UAX #9)
Codes-barresOui (1D et 2D)Oui (vectoriel natif, ensemble élargi)
FiligranesOuiOui
Génération TOCOuiOui
Utilisation mémoireÉlevée (DOM complet en mémoire)Modérée (sortie en streaming)

Fonctionnalités spécifiques mPDF et équivalents TCPDF-Next

Balises HTML personnalisées

mPDF définit des balises HTML non standard. Celles-ci nécessitent adaptation :

Balise personnalisée mPDFÉquivalent TCPDF-Next
<tocpagebreak>$pdf->addTableOfContentsPage()
<tocentry content="..." level="0">$toc->addEntry('...', level: 0)
<barcode code="..." type="C128">$page->addBarcode(BarcodeFactory::code128('...'))
<columnbreak>$renderer->columnBreak()
<pagebreak><div style="page-break-before: always"> (CSS standard)
<bookmark content="...">$pdf->addBookmark('...')
<watermarktext content="DRAFT">$pdf->setWatermark(Watermark::text('DRAFT'))
<watermarkimage src="...">$pdf->setWatermark(Watermark::image('...'))

En-têtes et pieds de page HTML

mPDF (avant) :

php
$mpdf->SetHTMLHeader('<div style="text-align: center;">Header</div>');
$mpdf->SetHTMLFooter('<div>Page {PAGENO} of {nbpg}</div>');
$mpdf->SetHTMLHeader('<div>Even header</div>', 'E');

TCPDF-Next (après) :

php
$pdf->setHtmlHeader('<div style="text-align: center;">Header</div>');
$pdf->setHtmlFooter('<div>Page {{pageNumber}} of {{totalPages}}</div>');
$pdf->setHtmlHeader('<div>Even header</div>', pages: 'even');

Modes WriteHTML

mPDF (avant) :

php
$mpdf->WriteHTML($css, \Mpdf\HTMLParserMode::HEADER_CSS);
$mpdf->WriteHTML($body, \Mpdf\HTMLParserMode::HTML_BODY);

TCPDF-Next (après) :

php
$renderer = new HtmlRenderer($pdf);
$renderer->addStylesheet($css);
$renderer->writeHtml($body);

Filigranes

mPDF (avant) :

php
$mpdf->SetWatermarkText('DRAFT', 0.1);
$mpdf->showWatermarkText = true;

TCPDF-Next (après) :

php
$pdf->setWatermark(
    Watermark::text('DRAFT')
        ->setOpacity(0.1)
        ->setRotation(45)
        ->setColor(Color::rgb(200, 200, 200))
);

Mapping de configuration

Config mPDFÉquivalent TCPDF-Next
mode => 'utf-8'Toujours UTF-8 (pas de config nécessaire)
format => 'A4'setPageFormat(PageFormat::A4)
margin_left/right/top/bottomsetMargins(new Margins(...))
default_font$renderer->setDefaultFont(...)
tempDirPdfDocument::create()->setTempDir(...)
autoScriptToLang$renderer->setAutoFontDetection(true)
biDirectionalToujours activé (UAX #9)
pdfaAutosetPdfALevel(PdfALevel::PDF_A_4)

Méthodes de sortie

mPDF (avant) :

php
$mpdf->Output('/path/to/file.pdf', \Mpdf\Output\Destination::FILE);
$mpdf->Output('doc.pdf', \Mpdf\Output\Destination::DOWNLOAD);
$mpdf->Output('doc.pdf', \Mpdf\Output\Destination::INLINE);
$content = $mpdf->Output('', \Mpdf\Output\Destination::STRING_RETURN);

TCPDF-Next (après) :

php
$pdf->save('/path/to/file.pdf');
$bytes = $pdf->toString();

// Réponse web (exemple Laravel)
return response($pdf->toString(), 200, [
    'Content-Type' => 'application/pdf',
    'Content-Disposition' => 'attachment; filename="doc.pdf"',
]);

Réduction des dépendances

Migrer de mPDF simplifie drastiquement votre arbre de dépendances :

Supprimé (mPDF + transitives) :

  • mpdf/mpdf + 10+ packages transitifs
  • psr/log, psr/http-message, setasign/fpdi, mpdf/qrcode

Ajouté :

  • yeee-fang/tcpdf-next (zéro dépendance d'exécution)

Comparaison des performances

MétriquemPDFTCPDF-NextAmélioration
PDF simple 1 page45.3 ms8.2 ms5.5x plus rapide
Document 100 pages3 210 ms845 ms3.8x plus rapide
Mémoire pic (1 page)18.4 MB4.2 MB4.4x moins
Mémoire pic (100 pages)198.2 MB28.6 MB6.9x moins
Taille fichier sortie (1 page)24.3 KB12.4 KB2.0x plus petit

Voir Benchmarks de performance pour la méthodologie complète et cas de test.

Lecture complémentaire

Distribué sous licence LGPL-3.0-or-later.