-1

我正在尝试使用 evopdf 将 html 转换为 pdf,并且在我的 html 中有一个带有绝对路径的图像,但图像无法将其加载到 pdf 中。这里的“sb”是字符串生成器,我在其中附加了 html 字符串。

  PdfConverter pdf = new PdfConverter();
  byte[] outPdfBuffer = pdf.GetPdfBytesFromHtmlString(sb.ToString());

  HttpContext.Current.Response.BinaryWrite(outPdfBuffer);

  HttpContext.Current.Response.End();

因为我给出了完整路径,所以我没有给出基本 url,这是我在 html 中的图像:

<img src="C:/Users/ingyadav/Desktop/icons/icons/logo_160.png" alt="Symphony Summit"/>

谁可以帮我这个事

4

2 回答 2

5

对于本地资源,您必须使用以 file:/// 为前缀的完全限定 URL。在您的情况下,您的 HTML 图像标签应该是:

<img src="file:///C:/Users/ingyadav/Desktop/icons/icons/logo_160.png" alt="Symphony Summit"/>
于 2016-09-15T08:19:17.433 回答
1

这很简单,你的图片来源需要来自http,如果你有一个控制台应用程序并且想要修复你可以将图片转换为base64,

public string GetImage(string path)
{
  using (Image image = Image.FromFile(path))
    {                 
        using (MemoryStream m = new MemoryStream())
        {
            image.Save(m, image.RawFormat);
            byte[] imageBytes = m.ToArray();

            // Convert byte[] to Base64 String
            return Convert.ToBase64String(imageBytes);                
        }                  
    }
}

sb.Append("<img src=" + @"data:image/jpeg;base64," + GetImage(path) + "' />");

如果您有 webapp,我强烈建议您使用相对路径或 CDN 路径。

<img alt="Image with Full URL" src="http://www.domain.com/Images/Logo.jpg" />

或者

<img alt="Image with Relative path" src="/Images/Logo.jpg" />
于 2016-09-15T07:43:00.500 回答