Conversion HTML en PDF à l'aide d'iText
Problème : positionnement CSS non respecté
De nombreux développeurs rencontrent des difficultés pour convertir du HTML en PDF à l'aide d'iText, notamment en ce qui concerne le placement des éléments à l'aide de CSS.
HTMLWorker's Limitations
HTMLWorker, un composant obsolète d'iText, présente des inconvénients importants :
-
Prise en charge CSS : Il ne prend pas en charge le vrai CSS et nécessite une définition de style explicite dans code.
-
Obsolète : De nombreuses classes et méthodes utilisées dans HTMLWorker sont devenues obsolète.
Défis de XMLWorker
XMLWorker, conçu comme un cadre d'analyse XML générique, a été confronté à des problèmes similaires :
-
Image manquante : Les images manquaient sans ImageProvider ; même dans ce cas, les attributs CSS comme float étaient ignorés.
-
Prise en charge partielle du CSS : Les styles CSS liés au positionnement n'étaient pas entièrement pris en charge.
Solution avec iText 7 et pdfHTML
Pour résoudre ces lacunes, iText 7 et son module complémentaire pdfHTML ont été développés. Ils offrent une approche simplifiée :
public static final String SRC = "src/main/resources/html/sample.html";
public static final String DEST = "target/results/sample.pdf";
public void createPdf(String src, String dest) throws IOException {
HtmlConverter.convertToPdf(new File(src), new File(dest));
}
Copier après la connexion
Ce code génère la sortie PDF souhaitée avec des attributs CSS comme float respectés.
Considérations supplémentaires
-
Licence : iText 7 est publié sous AGPL, permettant une utilisation gratuite dans des projets open source, mais des licences commerciales sont requises pour les sources fermées. applications.
-
Systèmes hérités :La migration d'anciennes versions d'iText vers iText 7 peut être bénéfique pour la simplicité du code et la pérennité.
-
Guide du débutant : Pour ceux qui découvrent iText 7, il est recommandé de supprimer le code existant et de recommencer, simplifiant ainsi la conversion. processus.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!