【解決方法】Base64 でエンコードされた画像を iTextsharp pdf に変換する

プログラミングQA

[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]

コメント

タイトルとURLをコピーしました