À l'aide de itextsharp xmlworker pour convertir html en pdf et écrire le texte verticalement
Est-il possible de parvenir à la rédaction d'un texte de la direction ascendante dans xmlworker? Je voudrais l'utiliser dans le tableau.
Mon code est
<table border=1>
<tr>
<td style="padding-right:18px">
<p style="writing-mode:sideways-lr;text-align:center">First</p</td>
<td style="padding-right:18px">
<p style="writing-mode:sideways-lr;text-align:center">Second</p></td></tr>
<tr><td><p style="text-align:center">1</p> </td>
<td><p style="text-align:center">2</p></td>
</tr>
</table>
Mais il ne fonctionne pas après la conversion de code html vers pdf. Texte de la PREMIÈRE et de la SECONDE ne sont pas dans la direction de bas en haut.
Vous avez besoin d'écrire du code personnalisé pour ce faire. Si vous ajoutez un
HTML
échantillon de ce que vous attendez, quelqu'un être en mesure pour vous aider...OriginalL'auteur Daniel | 2016-03-23
Vous devez vous connecter pour publier un commentaire.
C'était un joli problème intéressant, donc +1 pour la question.
La première étape a été de rechercher si oui ou non iTextSharp XML Travailleur prend en charge la
HTML
td
tag. Les mappages peuvent être trouvés dans les sources dans iTextSharp.outil de.xml.html.Tags. Vous y trouvereztd
est mappé à iTextSharp.outil de.xml.html.table.TableData, ce qui rend le travail de la mise en œuvre d'un tag personnalisé processeur un peu plus facile. I. e. tous nous avons besoin de le faire hériter de la classe et de remplacerEnd()
:Comme indiqué dans les commentaires en ligne, c'est un très mise en œuvre simple pour vos besoins spécifiques. Vous aurez besoin d'ajouter de la logique à l'appui de toute autre de la rédaction mode
CSS
, la valeur de la propriété, et comprennent toutes les vérifications.Mise à JOUR
Basé sur le commentaire laissé par @Daniel, il n'est pas clair comment ajouter des
CSS
lors de la conversion de laHTML
àPDF
. D'abord le HTML mis à jour:Puis un petit extrait de CSS personnalisé:
Légèrement la partie la plus difficile est la configuration supplémentaire n' - vous ne pouvez pas utiliser la simple sortie de la boîte
XMLWorkerHelper.GetInstance().ParseXHtml()
souvent vu ici. Voici une simple méthode d'assistance qui devrait vous obtenir a commencé:Au lieu de ressasser une explication de l'exemple de code ci-dessus, voir la documentation (iText retiré de la documentation, liée à la Wayback Machine) pour avoir une meilleure idée de pourquoi vous avez besoin pour l'installation de l'analyseur de cette façon.
Également note:
HTML
extrait supprimé lep
balise, car le style peut être appliqué directement à latd
tag.width
de la propriété. Si omis, les colonnes seront largeurs variables qui correspondent si le texte avait été rendu à l'horizontale.Testé avec iTextSharp et XML Travailleur versions 5.5.9 Voici la mis à jour résultat:
using (var myCss = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(example_css))) { using (var msHtml = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(example_html))) { iTextSharp.tool.xml.XMLWorkerHelper.GetInstance().ParseXHtml(writer, doc, msHtml, myCss ); } }
mise à jour de la réponse à inclure une méthode d'assistance qui vous permet de passer un
HTML
chaîne et unCSS
chaîne.Encore une fois, merci beaucoup.
Je suis en train d'essayer votre méthode mais il n'est pas défini "les nouveaux TableDataProcessor()" de la documentation lien ne fonctionne pas
Dernière mise à jour de presque 2 ans. Si vous pouviez mettre à jour à nouveau, ce serait super
OriginalL'auteur kuujinbo
Alternative avec l'utf8:
OriginalL'auteur Pablo G. González
comment rendre les balises d'image à l'intérieur du tableau en pdf que par leur position dans la table? - @kuujinbo
OriginalL'auteur Siddarth Dutta