ITextSharp Analyse du code HTML avec des images: il analyse correctement mais n'affiche pas les images
Je suis en train de générer un .pdf du html à l'aide de la bibliothèque ITextSharp. Je suis capable de créer le fichier pdf du texte html converti au format pdf en texte/paragraphes
Mon Problème: Le pdf ne peut pas montrer mes images(mon img éléments de l'html). Tous mes img éléments html dans mon code html ne s'affiche dans le pdf? Est-il possible pour ITextSharp pour parser le HTML & afficher des images. Je l'espère vraiment, sinon je suis bourré 🙁
Je suis un lien vers le bon répertoire où les images sont(à l'aide de IMG_BASURL), mais ils sont tout simplement pas montrer
Mon code:
//mainContents variable is a string containing my HTML
var document = new Document(PageSize.A4, 50, 50, 80, 100);
var output = new MemoryStream();
var writer = PdfWriter.GetInstance(document, output);
document.open();
Hashtable providers = new Hashtable();
providers.Add("img_baseurl","C:/users/xx/VisualStudio/Projects/myproject/");
var parsedHtmlElements = HTMLWorker.ParseToList(new StringReader(mainContents), null, providers);
foreach (var htmlElement in parsedHtmlElements)
document.Add(htmlElement as IElement);
document.Close();
source d'informationauteur Jake M
Vous devez vous connecter pour publier un commentaire.
À chaque fois que j'ai rencontré le problème est que l'image était trop grande pour la toile. Plus précisément, même un nu
IMG
tag intérieur obtenir enveloppé dans unChunk
qui sera enveloppé dans unParagraph
et je pense que l'image est débordant le Paragraphe, mais je ne suis pas sûr à 100%.Les deux solutions faciles, soit à agrandir la zone de dessin ou de spécifier les dimensions de l'image sur le code HTML
IMG
tag. La troisième plus complexe serait d'utiliser un fournisseur supplémentaireIMG_PROVIDER
. Pour ce faire vous avez besoin pour mettre en œuvre lesIImageProvider
interface. Ci-dessous est une version très basique d'unÀ utiliser ce fournisseur il suffit de l'ajouter au prestataire de collecte comme vous l'avez fait avec
HTMLWorker.IMG_BASEURL
:Il convient de noter que si vous utilisez
HTMLWorker.IMG_PROVIDER
que vous êtes responsable pour comprendre tout sur l'image. Le code ci-dessus suppose que tous les chemins d'image doivent être précédées d'une constante chaîne de caractères, vous aurez probablement envie de mettre à jour et vérifierHTTP
au début. Aussi, parce que nous sommes en train de dire que nous voulons complètement gérer le traitement des images le fournisseurHTMLWorker.IMG_BASEURL
n'est plus nécessaire.Le code principal de la boucle maintenant ressembler à ceci:
Une dernière chose, assurez-vous de spécifier la version de iTextSharp vous cibler lors de la publication ici. Le code ci-dessus cibles iTextSharp 5.1.2.0 mais je pense que vous pourriez être en utilisant la 4.La série X.
J'ai connu le même problème et essayé les solutions proposées ci-dessous:
chaîne de remplacer une balise, l'encodage en base64 et intégrer l'image à la une .NET la bibliothèque de la classe, mais aucune n'a fonctionné !
Donc je viens à l'ancienne solution: ajouter le logo manuellement avec
doc.Add()
Voici votre code de mise à jour: