Я следовал за ранним примером создания PDF в книге iText в действии. Я использую iTextSharp в простой ASP.Net Webform для создания 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-1.4
%âãÏÓ
2 0 obj
<</Length 81/Filter/FlateDecode>>stream
в конце, хотя вы можете увидеть, что он добавляет HTML из вызывающей страницы
</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]-->
...
Он продолжается со всем HTML с этой страницы, встроенной в файл.
Я не могу вспомнить, какие части конвейера начинаются и заканчиваются, но можете ли вы попробовать бросить 'Response.Close()' там тоже? –