【问题标题】:iTextSharp: impossible to create PDF. Why?iTextSharp:无法创建 PDF。为什么?
【发布时间】:2019-08-26 08:09:48
【问题描述】:

我正在尝试使用 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) Unauthorized。

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

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

我发现,如果我“强制”本地路径名(类似于 <img src="c:/inetpub/wwwroot/mysite/images/some.png" />),它会起作用。

可能是什么问题?

谢谢

【问题讨论】:

  • 网站上的图片是否需要登录才能访问?当您通过浏览器访问它们时,您的 cookie 中存储了您的身份验证信息。当您通过 iTextSharp 访问它们时,您不会。
  • 图片在同一个网络服务器上
  • 我不明白这如何回答我的问题。如果您打开一个新的隐身窗口并尝试访问图像,它会允许您登录还是需要登录?
  • 感谢您之前的问题,我解决了:问题是身份验证问题。我将图像移动到另一个站点下(启用了匿名访问),现在一切正常...谢谢
  • 很高兴为您提供帮助。我添加了评论作为对您问题的回答。如果对您有帮助,请将答案标记为已接受。

标签: c# asp.net itext


【解决方案1】:

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

要解决此问题,请将图像移至不需要身份验证的站点,或使用您的站点登录凭据设置 iTextSharp。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-29
    • 1970-01-01
    • 1970-01-01
    • 2012-07-03
    • 2018-12-27
    相关资源
    最近更新 更多