代码之家  ›  专栏  ›  技术社区  ›  aggy

无法使用Evopdf将图像加载到pdf中

  •  -1
  • aggy  · 技术社区  · 9 年前

    我曾尝试用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"/>
    

    有人能帮我吗

    2 回复  |  直到 9 年前
        1
  •  5
  •   EvoPdf    9 年前

    对于本地资源,必须使用前缀为file:///.在您的情况下,HTML的图像标记应该是:

    <img src="file:///C:/Users/ingyadav/Desktop/icons/icons/logo_160.png" alt="Symphony Summit"/>
    
        2
  •  1
  •   SilentTremor    9 年前

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

    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" />
    
    推荐文章