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()'嗎? –