2012-01-08 5 views
2

iTextを使用して作成した複数ページのPDFドキュメントの1ページの背景色を変更しようとしています。ページの端に矩形がブリードしない

これを行う最も簡単な方法は、指定された背景色でページのサイズ全体をRectangleで作成し、それをPdfContentByteユーティリティを使用して問題のページに適用することでした。 (これはDocument APIを使って調べてみたが、これは最良の選択肢ではないように思えた。なぜなら、これはドキュメント内のすべてのページにスタイリングを適用したからである。

実行時には、検査の結果、上下左右の余白に沿って1つのピクセルがあり、残りの部分が正しい色であることがわかります。私は余白が作成されていないことを確認するために矩形で演奏したが、役に立たない。以下で使用しているコードを探します。

Rectangle r = new Rectangle(0, 0, helper.getPageWidth(), helper.getPageHeight()); 
r.setBackgroundColor(Constants.GREEN); 

PdfContentByte cb = helper.getWriter().getDirectContent(); 
cb.rectangle(r); 
cb.setColorFill(Constants.GREEN); 
cb.setColorStroke(Constants.GREEN); 
cb.fillStroke(); 

私がページのこれらの3つの側面に沿って白の画素行を取り除くことはできませんが、私がしようと何でもそうです。 iTextページの非常に端に出血する方法を知っている人はいますか?

答えて

0

最初に:あなたのコードスニペットを使用していますが、いくつかの変更を加えてうまくいきます。

(私にとって第一容疑者このラインRectangle r = new Rectangle(0,0,helper.getPageWidth(),helper.getPageHeight())

は私が出力され、私が使用したコードを添付しました。

package com.pra.itext; 

    import com.lowagie.text.DocumentException; 
    import com.lowagie.text.Rectangle; 
    import com.lowagie.text.pdf.PdfContentByte; 
    import com.lowagie.text.pdf.PdfReader; 
    import com.lowagie.text.pdf.PdfStamper; 
    import java.awt.Color; 
    import java.io.File; 
    import java.io.FileOutputStream; 
    import java.io.IOException; 

    /** 
    * 
    * @author Prajit 
    */ 
public class ItextRect { 
    public static void main(String[] args) { 
     PdfReader rdrPdf = null; 
     PdfStamper stmprPdf = null; 
     try { 
      rdrPdf = new PdfReader("E:/Head.First.Servlets&Jsp.pdf"); 
      stmprPdf = new PdfStamper(rdrPdf, new FileOutputStream(new File("D:/Example.pdf"))); 
      for (int pgCnt = 1; pgCnt <= rdrPdf.getNumberOfPages(); pgCnt++) { 
       if (pgCnt == 1) { 
        PdfContentByte pdfCntntByt = stmprPdf.getUnderContent(pgCnt); 
        Rectangle r = new Rectangle(rdrPdf.getPageSize(pgCnt)); 
        r.setBackgroundColor(Color.red); 
        pdfCntntByt.rectangle(r); 
        pdfCntntByt.setColorFill(Color.red); 
pdfCntntByt.setColorStroke(Color.red); 
        pdfCntntByt.fillStroke(); 
       } 
      } 
      stmprPdf.close(); 
      rdrPdf.close(); 
     } catch (DocumentException de) { 
      System.err.println(de.getMessage()); 
     } catch (IOException ioe) { 
      System.err.println(ioe.getMessage()); 
     } 
    } 
} 
+0

通常のテキストをインデントするためにスペースを使用しないでください。それはコードとして表示されます。 –

関連する問題