1
我正在关注在书中创建PDF的早期示例iText in Action。我在简单的ASP.Net Webform中使用iTextSharp来构建PDF。在UltraEdit中查看源代码时,我发现我的页面中的HTML被嵌入到文件的底部。然后我检查了我们在iTextSharp中创建的以前的报告,并注意到它的底部嵌入了HTML源代码(尽管是压缩格式)。 HTML不会显示在呈现的PDF中,只是源代码。HTML正在嵌入pdf源(iTextSharp)
我想弄清楚为什么会发生这种情况,如果有办法阻止它。
在我有一个按钮,触发此事件的页面(这样做的最后一块是代码有本地文档下载这是不是在例如书籍。):
protected void BtnSamplePDF_Click(object sender, EventArgs e)
{
using (var memStream = new MemoryStream())
{
var document = new Document();
var writer = PdfWriter.GetInstance(document, memStream);
document.SetPageSize(PageSize.A5);
document.SetMargins(36, 72, 108, 180);
document.SetMarginMirroringTopBottom(true);
document.Open();
PdfContentByte canvas = writer.DirectContentUnder;
writer.CompressionLevel = 0;
canvas.SaveState();
canvas.BeginText();
canvas.MoveText(36, 788);
canvas.SetFontAndSize(BaseFont.CreateFont(), 12);
canvas.ShowText("Hello World");
canvas.EndText();
canvas.RestoreState();
document.Close();
string fileName = "attachment;filename=" + "practice.pdf";
Response.ContentType = "application/pdf";
Response.AddHeader("Content-Disposition", fileName);
Response.BinaryWrite(memStream.ToArray());
Response.OutputStream.Flush();
Response.OutputStream.Close();
}
}
PDF格式源与典型的头
%PDF-1.4
%âãÏÓ
2 0 obj
<</Length 81/Filter/FlateDecode>>stream
在年底开始。虽然你可以看到它从调用页面
</Size 7/Root 5 0 R/Info 6 0 R/ID [<aff0a4a6eb7e3827497db957aaef3eb3><aff0a4a6eb7e3827497db957aaef3eb3>]>>
%iText-5.5.1
startxref
620
%%EOF
<!DOCTYPE html>
<!--[if IE 8]> <html class="no-js lt-ie9" lang="en"> <![endif]-->
<!--[if gt IE 8]><!-->
<html class="no-js" lang="en">
<!--<![endif]-->
...
0追加HTML
它继续将该页面的所有HTML嵌入到文件中。
我不记得管道的哪些部分开始和结束了,但是你可以在那里尝试抛出'Response.Close()'吗? –