Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# iTextSharp HTML to PDF响应返回PDF-不希望出现的行为_C#_Pdf Generation_Itextsharp - Fatal编程技术网

C# iTextSharp HTML to PDF响应返回PDF-不希望出现的行为

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

我正在使用iTextSharp生成付款收据的副本,并将其保存在某个位置,以备以后需要。基本上,我在一个单独的C#类中添加了这个函数,该类接受html并保存文件。这是从ASPX页面中的函数调用的

它工作得很好,但我遇到的问题是,不知何故,PDF实际上是作为字符返回到响应中,并插入到页面的开头

我还检查了Fiddler,我可以看到响应在实际html开始之前只有很多字符。如果我没有远程向回复发送任何信息,你有没有想过为什么iTextSharp,甚至它是如何插入字符的

  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字节写入
响应
对象的输出流。如果我正确理解你的问题,这是不受欢迎的行为。删除此行,不希望出现的行为将不再发生。

这是有意义的。我想这两个都是必须的。为自己的新习惯道歉,这是有道理的。我想这两个都是必须的。为自己的新习惯道歉,这是有道理的。我想这两个都是必须的。为自己的新习惯道歉,这是有道理的。我想这两个都是必须的。为自己的无知道歉。