2017-05-02 125 views
1

我正在使用ITextSharp將我的Html轉換爲PDF,當我嘗試將圖像插入到HTML頁面時出現問題,但是當下載PDF時,我看不到其中的圖像。我沒有看到任何錯誤,代碼工作正常,但我無法在下載的PDF中看到圖像。 PDF的路徑是正確的,因爲它在HTML頁面中工作,我甚至嘗試使用HTML更改圖像的尺寸,但這並不能解決問題。Html to PDF ITextSharp Image

編碼到HTML轉換爲PDF格式是:

public void DownloadAsPDF() 
    { 
     try 
     { 
      string case_id = Request.Form["case_id"]; 
      string strHtml = string.Empty; 
      string pdfFileName = Request.PhysicalApplicationPath + "\\files\\" + case_id + ".pdf"; 


      string template = System.IO.File.ReadAllText(Server.MapPath("~/Incomplete-Pdf-temp.html")); 

代碼中插入圖片開始

  Base64ToImage().Save(Server.MapPath("\\files\\" + case_id + "stu.jpg")); 

      Base64ToInsImage().Save(Server.MapPath("\\files\\" + case_id + "ins.jpg")); 
      string facultysign = "/files/CS00022904stu.jpg"; 
      string stusign = "/files/CS00022904stu.jpg"; 
      template = template.Replace("[stusign]", facultysign); 
      template = template.Replace("[facultysign]", stusign); 

代碼中插入圖像結束

  CreatePDFFromHTMLFile(template, pdfFileName); 
} 
catch (Exception ex) 
     { 
      Response.Write(ex.Message); 
     } 
    } 



    public void CreatePDFFromHTMLFile(string HtmlStream, string FileName) 
    { 
     try 
     { 
      object TargetFile = FileName; 

      string ModifiedFileName = string.Empty; 
      string FinalFileName = string.Empty; 

      GeneratePDF.HtmlToPdfBuilder builder = new GeneratePDF.HtmlToPdfBuilder(iTextSharp.text.PageSize.A4); 
      GeneratePDF.HtmlPdfPage first = builder.AddPage(); 
      first.AppendHtml(HtmlStream); 
      byte[] file = builder.RenderPdf(); 
      System.IO.File.WriteAllBytes(TargetFile.ToString(), file); 

      iTextSharp.text.pdf.PdfReader reader = new iTextSharp.text.pdf.PdfReader(TargetFile.ToString()); 
      ModifiedFileName = TargetFile.ToString(); 
      ModifiedFileName = ModifiedFileName.Insert(ModifiedFileName.Length - 4, "1"); 

      iTextSharp.text.pdf.PdfEncryptor.Encrypt(reader, new FileStream(ModifiedFileName, FileMode.Append), iTextSharp.text.pdf.PdfWriter.STRENGTH128BITS, "", "", iTextSharp.text.pdf.PdfWriter.AllowPrinting); 
      reader.Close(); 
      if (System.IO.File.Exists(TargetFile.ToString())) 
       System.IO.File.Delete(TargetFile.ToString()); 
      FinalFileName = ModifiedFileName.Remove(ModifiedFileName.Length - 5, 1); 
      System.IO.File.Copy(ModifiedFileName, FinalFileName); 
      if (System.IO.File.Exists(ModifiedFileName)) 
       System.IO.File.Delete(ModifiedFileName); 

     } 
     catch (Exception ex) 
     { 
      throw ex; 
     } 
    } 

* HMTL編碼到插入圖像*

<p><strong>Faculty Signature: </strong></p> 
    <img src='[stusign]' /> 

<p><strong>Faculty Signature: </strong></p> 
    <img src='[facultysign]' /> 
+1

您正在使用哪個版本的iTextSharp?我也期待在你的代碼中看到'XMLWorker'。看起來您使用的是該頁面的代碼:http://www.codescratcher.com/asp-net/html-pdf-using-itextsharp-library-asp-net/,但該網站的GeneratePDF.cs文件不是iTextSharp的一部分。 –

+0

如果您在查找PDF文檔中某些內容爲什麼(或不是)時遇到問題,請考慮使用RUPS(可從iText存儲庫下載)。它允許您查看PDF文檔的內部結構。 –

+0

@AmedeeVanGasse是的,我使用你提到的網站的代碼,所以我現在該做什麼? – Naive

回答

0

調整圖像的大小解決了我的問題(即使調整大小的畫布將做到這一點)。

-1

pdfptable從代碼pdfpcell後面可用於定位在PDF圖像。