我正在使用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]' />
您正在使用哪個版本的iTextSharp?我也期待在你的代碼中看到'XMLWorker'。看起來您使用的是該頁面的代碼:http://www.codescratcher.com/asp-net/html-pdf-using-itextsharp-library-asp-net/,但該網站的GeneratePDF.cs文件不是iTextSharp的一部分。 –
如果您在查找PDF文檔中某些內容爲什麼(或不是)時遇到問題,請考慮使用RUPS(可從iText存儲庫下載)。它允許您查看PDF文檔的內部結構。 –
@AmedeeVanGasse是的,我使用你提到的網站的代碼,所以我現在該做什麼? – Naive