2010-12-27 4 views
3

こんにちは 私はitextsharpを使ってpdfファイルを生成しています。私はそれにバックグラウンドイメージを置いて、そのイメージをすべてのページに表示します。新しいページにイメージが表示されないようにテキストが自動的に次のページに移動します。ページの終わりを特定するには、PDFファイルのitextsharpを使用してください。

ページの末尾を特定して新しいページを追加し、最初にイメージを設定できるようにする方法はありますか?バックグラウンドで表示され、残りのテキストを追加できます。

すべて私はpdfファイルのすべてのページにバックグラウンドでイメージが必要です。

答えて

1

ただ、このようPdfWriter.PageNumberプロパティをチェック:上記のコードでは

myWriter.setPageEvent(new BackgroundPageEvent(backgroundImage)); 

class BackgroundPageEvent extends PdfPageEventHelper { 
    Image backgroundImage = null; 
    public BackgroundPageEvent(Image img) { 
    backgroundImage = img; 
    } 
    public void onStartPage(PdfWriter writer, Document doc) { 
    PdfContentByte underContent = writer.getDirectContentUnder(); 
    underContent.addImage(backgroundImage); 
    } 
} 

backgroundImageは「コンテンツの下」に追加されます。

 using (FileStream fs = File.Create("test.pdf")) 
     { 
      Document document = new Document(PageSize.A4, 72, 72, 72, 72); 
      PdfWriter writer = PdfWriter.GetInstance(document, fs); 

      document.Open(); 
      int pageNumber = -1; 

      for (int i = 0; i < 20; i++) 
      { 
       if (pageNumber != writer.PageNumber) 
       { 
        // Add image 
        pageNumber = writer.PageNumber; 
       } 

       // Add something else 
      } 

      document.Close(); 
     } 
+0

Bigを「他のものを追加する」に追加すると、実際にはページをスキップできます。何かが次のページに少しぶら下がってしまった場合、その部分をあなたの「背景」画像で覆うかもしれません。 –

+0

解決策を提供してくれてありがとうAS-CIIありがとうございます。私はあなたのソリューションを使用して、私のすべてのPDFページに背景イメージを設定することができます。 –

2

を私はあなたがページのイベントを使用することをお勧め各ページが作成されると、あなた自身で追加することを心配する必要はありません... iTextはあなたのためにそのことを理解し、各ページの下位コンテンツの最初のものがあなたのイメージになります。 addImageのさまざまなオーバーライドを使い、あなたが望むサイズを取得する必要があるかもしれません。

プログラム内で異なる場合は、docに現在のページサイズを問い合わせることもできます。そうでない場合は、絶対位置/スケール(すでに行っているものかもしれない)で渡すイメージを作成できるはずです。


PdfPageEventには、上書きできる他の多くのイベントがあります。 PdfPageEventHelperは、あなたがしたいあなただけのイベントを上書きすることができますので、 "ノーオペレーション" を持つすべての拠点をカバーして、[S]:

  • OnStartPage
  • OnEndPage
  • OnCloseDocument
  • OnParagraph
  • OnParagraphEnd
  • OnChapter
  • OnChapterEnd
  • OnSection
  • OnSectionEnd
  • OnGenericTag

一般的なタグは、実際には本当に便利です。ドキュメント内の何にでも一般的なタグ(文字列)を付けることができます。また、OnGenericTagオーバーライドは、タグ付けされたものを描画するために使用されたrectで呼び出されます。あらゆる種類の可能性があります。

関連する問題