nagashima
Messages postés4280Date d'inscriptionsamedi 8 septembre 2007StatutMembreDernière intervention 4 janvier 2023
-
26 nov. 2013 à 13:26
salut à tous !
Voilà je cherche (désespérément =p) à convertir du contenu web (une page) en pdf en conservant la mise en forme. Suite à un périple sur google qui perdure encore, j'ai trouvé l'objet iTextSharp ainsi qu'un moyen de mettre en forme du contenu en utilisant
StyleSheet
,
Document
,
PdfWriter
et
HTMLWorker
:
ce code fonctionne :
string Html = @"<h1>h1</h1> <p class='redSmallText'>Default paragraph</p> <p class='redBigText'>A paragraph with CSS class</p> "; StyleSheet styles = new StyleSheet(); styles.LoadStyle("redBigText", "size", "20pt"); styles.LoadStyle("redBigText", "color", "#ff0000"); styles.LoadStyle("redSmallText", "size", "8pt"); styles.LoadStyle("redSmallText", "color", "#ff0000"); using (Document document = new Document()) { PdfWriter.GetInstance(document, new FileStream("c:\\temp\\test3.pdf", FileMode.Create)); document.Open(); List<IElement> objects = HTMLWorker.ParseToList( new StringReader(Html), styles ); foreach (IElement element in objects) { document.Add(element); } }
Ca fonctionne donc dans le cas où je donne le nom de classe et c'est tout.
De même, si je fais
string Html = @"<h1>h1</h1> <p>Default paragraph</p> <p>A paragraph with CSS class</p> "; StyleSheet styles = new StyleSheet(); styles.LoadTagStyle(HtmlTags.P, "color", "#FFCC66"); using (Document document = new Document()) { PdfWriter.GetInstance(document, new FileStream("c:\\temp\\test3.pdf", FileMode.Create)); document.Open(); List<IElement> objects = HTMLWorker.ParseToList( new StringReader(Html), styles ); foreach (IElement element in objects) { document.Add(element); } }
en donnant donc uniquement les balise : ok.
par contre, si je veux combiner :
string Html = @"<h1>h1</h1> <p>Default paragraph</p> <p>A paragraph with CSS class</p> "; StyleSheet styles = new StyleSheet(); styles.LoadTagStyle(HtmlTags.H1, "color", "#FFCC66"); styles.LoadStyle("redBigText", "size", "20pt"); styles.LoadStyle("redBigText", "color", "#ff0000"); styles.LoadStyle("redSmallText", "size", "8pt"); styles.LoadStyle("redSmallText", "color", "#ff0000"); using (Document document = new Document()) { PdfWriter.GetInstance(document, new FileStream("c:\\temp\\test3.pdf", FileMode.Create)); document.Open(); List<IElement> objects = HTMLWorker.ParseToList( new StringReader(Html), styles ); foreach (IElement element in objects) { document.Add(element); } }
seul mon h1 est mit en forme (j'ai essayer, ca ne vient pas du fait qu'il soit en premier => dès qu'on utilise la mise en forme par tag, elle prend le dessus).
Quelqu'un pourrai-t'il m'éclairer ? J'essaye d'avancer seul mais là je lutte -_-'
merci d'avance.
naga
PS: le but final est de générer un pdf par appel d'une page, soit pouvoir traiter un contenu html/css et générer moi même le style/contenu du pdf dynamiquement