[ad_1]
これが少し古い質問であることは承知していますが、これより良い解決策が見つかりませんでした。 HTML 文字列を PDF に変換するときに iTextSharp で問題が発生します。 HTML には img
のタグを付ける base64
-エンコードされた画像ですが、結果の PDF には画像が表示されません。 この問題を解決する方法について、助けや洞察をいただければ幸いです。
私が試したこと:
C#
strimg CEMDrawSignpath = "data:image/png;base64,iVBOR...II=" string htmlTable = @" <div class='content'> <table width='100%' style='" + pagecss.ToString() + @"'> <tr style='position: relative;'> <td> <img src='"+ CEMDrawSignpath + @"' /> </td> </tr> </table> </div>"; hdnhtmltable.Value = htmlTable; MemoryStream memoryStream = new MemoryStream(); PdfWriter pdfWriter = PdfWriter.GetInstance(doc, memoryStream); doc.Open(); string CompanyName = lblTopCompanyname.Text; string htmlTable = hdnhtmltable.Value; XMLWorkerHelper.GetInstance().ParseXHtml(pdfWriter, doc, new StringReader(htmlTable)); doc.Close(); Response.ContentType = "application/pdf"; Response.AddHeader("content-disposition", "attachment;filename=EngagementLetter.pdf"); Response.BinaryWrite(memoryStream.ToArray()); Response.End();
解決策 1
問題は画像付きのHTMLテキストをPDFに変換することだと思います
次の行を変更してみてください
XMLWorkerHelper.GetInstance().ParseXHtml(pdfWriter, doc, new StringReader(htmlTable));
と
using (var htmlMemoryStream = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(htmlTable))) { iTextSharp.tool.xml.XMLWorkerHelper.GetInstance().ParseXHtml(pdfWriter, doc, htmlMemoryStream, System.Text.Encoding.UTF8); }
外部 CSS を使用している場合
using (var cssMemoryStream = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(cssText))) { using (var htmlMemoryStream = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(htmlTable))) { iTextSharp.tool.xml.XMLWorkerHelper.GetInstance().ParseXHtml(pdfWriter, doc, htmlMemoryStream, cssMemoryStream); } }
これがお役に立てば幸いです
[ad_2]
コメント