C# iTextSharp HTML to PDF响应返回PDF-不希望出现的行为
我正在使用iTextSharp生成付款收据的副本,并将其保存在某个位置,以备以后需要。基本上,我在一个单独的C#类中添加了这个函数,该类接受html并保存文件。这是从ASPX页面中的函数调用的 它工作得很好,但我遇到的问题是,不知何故,PDF实际上是作为字符返回到响应中,并插入到页面的开头 我还检查了Fiddler,我可以看到响应在实际html开始之前只有很多字符。如果我没有远程向回复发送任何信息,你有没有想过为什么iTextSharp,甚至它是如何插入字符的C# iTextSharp HTML to PDF响应返回PDF-不希望出现的行为,c#,pdf-generation,itextsharp,C#,Pdf Generation,Itextsharp,我正在使用iTextSharp生成付款收据的副本,并将其保存在某个位置,以备以后需要。基本上,我在一个单独的C#类中添加了这个函数,该类接受html并保存文件。这是从ASPX页面中的函数调用的 它工作得很好,但我遇到的问题是,不知何故,PDF实际上是作为字符返回到响应中,并插入到页面的开头 我还检查了Fiddler,我可以看到响应在实际html开始之前只有很多字符。如果我没有远程向回复发送任何信息,你有没有想过为什么iTextSharp,甚至它是如何插入字符的 public string C
public string CreatePDFInvoice(string htmlText, int invoiceID)
{
Document pdfDocument = new Document(PageSize.LETTER, 70, 55, 40, 25);
string newPDFFilePath = @"C:\temp\receipt-" + invoiceID.ToString() + "-" +DateTime.Now.Ticks.ToString() + ".pdf";
try
{
PdfWriter wri = PdfWriter.GetInstance(pdfDocument, new FileStream(newPDFFilePath, FileMode.Create));
PdfWriter.GetInstance(pdfDocument, HttpContext.Current.Response.OutputStream);
pdfDocument.Open();
XMLWorkerHelper.GetInstance().ParseXHtml(wri, pdfDocument, new StringReader(htmlText));
}
catch (Exception ex)
{
throw ex;
}
finally
{
pdfDocument.Close();
}
return newPDFFilePath;
}
每次使用
PdfWriter.GetInstance
时,您都在创建一个新的PdfWriter
,并将此Writer
添加到pdfDocument
中。然后,添加到此文档中的每个元素的PDF表示形式将写入outputstream
实际上,您正在将pdf发送到响应,因为您正在创建一个pdfWriter
,它将写入第10行中的HttpContext.Current.Response.OutputStream
PdfWriter.GetInstance(pdfDocument, HttpContext.Current.Response.OutputStream);
每次使用
PdfWriter.GetInstance
时,您都在创建一个新的PdfWriter
,并将此Writer
添加到pdfDocument
中。然后,添加到此文档中的每个元素的PDF表示形式将写入outputstream
实际上,您正在将pdf发送到响应,因为您正在创建一个pdfWriter
,它将写入第10行中的HttpContext.Current.Response.OutputStream
PdfWriter.GetInstance(pdfDocument, HttpContext.Current.Response.OutputStream);
请看一下源代码中的这两行:
PdfWriter wri = PdfWriter.GetInstance(pdfDocument, new FileStream(newPDFFilePath, FileMode.Create));
PdfWriter.GetInstance(pdfDocument, HttpContext.Current.Response.OutputStream);
在这两行的第一行中,您创建了一个PdfWriter
,用于将PDF文件写入服务器上的路径。如果我正确理解了您的问题,那么这就是所需的行为:您希望创建一个文档供以后使用
现在看第二行。这将创建一个
PdfWriter
实例,将PDF字节写入响应
对象的输出流。如果我正确理解你的问题,这是不受欢迎的行为。删除这一行,不希望出现的行为将不再发生。请查看源代码中的这两行:
PdfWriter wri = PdfWriter.GetInstance(pdfDocument, new FileStream(newPDFFilePath, FileMode.Create));
PdfWriter.GetInstance(pdfDocument, HttpContext.Current.Response.OutputStream);
在这两行的第一行中,您创建了一个PdfWriter
,用于将PDF文件写入服务器上的路径。如果我正确理解了您的问题,那么这就是所需的行为:您希望创建一个文档供以后使用
现在看第二行。这将创建一个
PdfWriter
实例,将PDF字节写入响应
对象的输出流。如果我正确理解你的问题,这是不受欢迎的行为。删除此行,不希望出现的行为将不再发生。这是有意义的。我想这两个都是必须的。为自己的新习惯道歉,这是有道理的。我想这两个都是必须的。为自己的新习惯道歉,这是有道理的。我想这两个都是必须的。为自己的新习惯道歉,这是有道理的。我想这两个都是必须的。为自己的无知道歉。