書籍のiText in ActionにPDFを作成する初期の例に従っています。私は単純な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ソースは、あなたがそれを呼び出しページ
</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を追加していることがわかりますけれども最後には、一般的なヘッダ
%PDF-1.4
%âãÏÓ
2 0 obj
<</Length 81/Filter/FlateDecode>>stream
で始まります
このページのすべてのHTMLがファイルに埋め込まれています。
パイプラインの開始部分と終了部分がもう覚えていませんが、そこに 'Response.Close()'を投げても構いませんか? –