2017-08-10 68 views
1

私はitextsharpを.net Webアプリケーションを使用してpdf生成に使用しています。私は、以下のバージョンのitextsharpを、nugetパッケージInstall-Package iTextSharp -Version 5.5.10を使ってインストールしました。私はサンプルを見て、pdfを生成するために コードサンプルを開発しています。しかし、私は理解することができないか、ヘッダーのフッターがpdfに追加されました。ここで私はitextSharpを使用してHeaderTextを割り当てる方法を知って助けてくださいヘッダーとフッター、itextsharpを使用してC#

public class Header : PdfPageEventHelper 
{ 
    protected Phrase header; 

    public void setHeader(Phrase header) 
    { 
     this.header = header; 
    } 

    public void onEndPage(PdfWriter writer, Document document) 
    { 
     PdfContentByte canvas = writer.DirectContent; 
     ColumnText.ShowTextAligned(canvas, Element.ALIGN_RIGHT, header, 559, 806, 0); 
    } 
} 


Document pdfReport = null; 
MemoryStream msReport = new MemoryStream(); 
PdfWriter pdfWriter = PdfWriter.GetInstance(pdfReport, msReport); 

if (!string.IsNullOrEmpty(HeaderText)) 
{ 
    Header objHeaderFooter = new Header(); 
    //Here i need to assign the string HeaderText to Header. I dont know how to do it.     
} 

を使用していたサンプルコードです。開発者の例のほとんどは、Java にありますが、私は.net c#を使用しています。あなたはHeader方法setHeader使用して行うことができ、文字列であることをHeaderTextを想定し

if (!string.IsNullOrEmpty(HeaderText)) 
{ 
    Header objHeaderFooter = new Header(); 
    //Here i need to assign the string HeaderText to Header. I dont know how to do it.     
} 

objHeaderFooterHeaderTextを割り当てる

+1

重複していますか? https://stackoverflow.com/questions/18996323/add-header-and-footer-for-pdf-using-itextsharp – Ben

+0

ソリューションは複雑に見えます。私はより簡単なアプローチを見て、Cを使用してPDFファイルにヘッダとフッタを追加しています# –

+0

"ソリューションは複雑です"それを拒否する引数ではありません – mihail

答えて

1

さらに
objHeaderFooter.setHeader(new Phrase(HeaderText)); 

を、あなたはobjHeaderFooterを割り当てる必要がありPdfWriterインスタンス:

pdfWriter.PageEvent = objHeaderFooter; 

したがって:あなたがC#でメソッドをオーバーライドするたび

if (!string.IsNullOrEmpty(HeaderText)) 
{ 
    Header objHeaderFooter = new Header(); 
    objHeaderFooter.setHeader(new Phrase(HeaderText)); 
    pdfWriter.PageEvent = objHeaderFooter; 
} 

さらに、overrideとしてそれに応じてマークします。 Javaで対応するマーカ@Overrideはオプションであるため、あなたのページのイベントリスナーでは特に、

public override void onEndPage(PdfWriter writer, Document document) 

を使用これは、Javaの例を移植する場合は特に、忘れがちです。


以下は、opによって提供されるサンプルコードです。

Response.Clear(); 
      Response.Buffer = true; 
      Response.ContentType = "application/pdf"; 
      Response.AddHeader("content-disposition", "attachment; filename=abc.pdf"); 
      Response.Charset = "";    
      Response.BinaryWrite(getbinary()); 
      Response.End(); 

    public byte[] getbinary() 
     { 
      Document pdfReport = null; 
      pdfReport = new Document(PageSize.A4, 25, 25, 40, 25); 
      MemoryStream msReport = new MemoryStream(); 
      PdfWriter pdfWriter = PdfWriter.GetInstance(pdfReport, msReport); 

      pdfReport.Open(); 

      if (!string.IsNullOrEmpty("Header Text")) 
      { 
       Header objHeaderFooter = new Header(); 
       objHeaderFooter.SetHeader(new Phrase("Header Text")); 
       pdfWriter.PageEvent = objHeaderFooter; 
      } 

      PdfPTable ptData1 = new PdfPTable(1); 
      ptData1.SpacingBefore = 8; 
      ptData1.DefaultCell.Padding = 1; 
      ptData1.WidthPercentage = 100; 
      ptData1.DefaultCell.HorizontalAlignment = Element.ALIGN_CENTER; 
      ptData1.DefaultCell.VerticalAlignment = Element.ALIGN_MIDDLE; 

      PdfPCell cell1 = new PdfPCell(); 
      cell1.BorderWidth = 0.001F; 
      cell1.BackgroundColor = new BaseColor(250, 250, 250); 
      cell1.BorderColor = new BaseColor(100, 100, 100); 
      cell1.Phrase = new Phrase("Sample text"); 
      ptData1.AddCell(cell1); 


      PdfPCell cell = new PdfPCell(); 
      cell.BorderWidth = 0.001F; 
      cell.BackgroundColor = new BaseColor(200, 200, 200); 
      cell.BorderColor = new BaseColor(100, 100, 100); 

      cell.Phrase = new Phrase("test value"); 
      ptData1.AddCell(cell); 
      pdfReport.Add(ptData1); 

      pdfReport.Close(); 
      return msReport.ToArray(); 

     } 

public class Header : PdfPageEventHelper 
    { 
     protected Phrase header; 

     public void SetHeader(Phrase header) 
     { 
      this.header = header; 
     } 

     public void onEndPage(PdfWriter writer, Document document) 
     { 
      PdfContentByte canvas = writer.DirectContent; 
      ColumnText.ShowTextAligned(canvas, Element.ALIGN_RIGHT, header, 559, 806, 0); 
     } 
    } 
+0

私はそれをやってみた。しかし、まだ私はPDFのヘッダーが表示されません。逃したものはありますか?またはブラウザ固有のものです –

+0

ブラウザ固有のものではありません。したがって、何かが欠けている。残念ながら、あなたのコードは[sscce](http://sscce.org)なので、私はそれをチェックするために使用することはできません。 – mkl

+0

C#を使った短いサンプルは私には役に立ちます。 –

0

これは回避策として使用できます。別のセル値としてヘッダを追加 以下はコード

if (!string.IsNullOrEmpty(HeaderText)) 
      { 
       PdfPTable Header = new PdfPTable(1); 
       Header.SpacingBefore = 8; 
       Header.DefaultCell.Padding = 1; 
       Header.WidthPercentage = 100; 
       Header.DefaultCell.HorizontalAlignment = Element.ALIGN_CENTER; 
       Header.DefaultCell.VerticalAlignment = Element.ALIGN_MIDDLE; 

       PdfPCell cell1 = new PdfPCell(); 
       cell1.BorderWidth = 0.001F; 
       cell1.BackgroundColor = new BaseColor(250, 250, 250); 
       cell1.BorderColor = new BaseColor(100, 100, 100); 
       cell1.Phrase = new Phrase(HeaderText, fontBold); 
       Header.AddCell(cell1); 
       pdfReport.Add(ptDataHeader); 
      } 
+0

答えはあなたの質問に何らかの形で関係していますか?ファイルにヘッダーとフッターを追加するように頼んだら、今ではその問題を一度解決したテーブルを考えていますか? – mkl

+0

私は答えをマークして、私が以前に更新したものをマークしました。どのように間違いが下の行にあったのですか?それは、公開されたvoid OnnEndPage(PdfWriterライター、Documentドキュメント)として機能していたはずです。 –

+0

実際には非常に重要です。あなたが私の答えを受け入れるにつれて、私はその答えをそれに加えました。 itextSharp *を使ってHeaderTextを割り当てる方法に焦点を当てた質問として、実際には 'Header'コードを見ていないと思います。 – mkl

関連する問題