iTextSharp:无法创建 PDF。为什么?

iTextSharp: impossible to create PDF. Why?

我正在尝试使用 iTextSharp 将 HTML 转换为 PDF。 这是我的功能:

 public static Byte[] ConvertToPdf_iTextSharp(string html)
    {
        Byte[] res;

        StringReader sr = new StringReader(html);

        Document pdfDoc = new Document(PageSize.A4);
        HTMLWorker htmlparser = new HTMLWorker(pdfDoc);
        using (MemoryStream memoryStream = new MemoryStream())
        {
            PdfWriter writer = PdfWriter.GetInstance(pdfDoc, memoryStream);
            pdfDoc.Open();

            htmlparser.Parse(sr);
            pdfDoc.Close();

            res = memoryStream.ToArray();
            memoryStream.Close();                
        }

        return res;
    }

我在 HTMLWorker htmlparser = new HTMLWorker(pdfDoc);

上遇到错误

错误是:远程服务器返回错误:(401) 未经授权。

我发现问题出在我的 HTML 中有图像。

图片是标准的 html 标签 <img src="http://mywebsite/images/some.png" />

我发现如果我 "force" 本地路径名(类似 <img src="c:/inetpub/wwwroot/mysite/images/some.png" /> 的东西)就可以了。

可能是什么问题?

谢谢

这听起来像是身份验证问题。您能否验证图像是否托管在不需要您登录的网站上?最简单的检查方法是打开一个新的隐身 window 并尝试访问图像。如果您收到访问被拒绝的页面,您就知道问题所在了。

要修复它,请将图像移动到不需要身份验证的站点,或者使用您的站点登录凭据设置 iTextSharp。