0

iText では、既存の PDF のさまざまな場所にフォーム フィールドとページ番号を作成するための座標が必要です。

私の PDF は動的です。そこで、識別子テキストを含む PDF を作成することにしました。TextRenderInfo を使用してテキストの座標を見つけ、それらの座標を使用してテキスト フィールドやその他のフォーム フィールドを作成します。

ParsingHelloWorld.java
    public void extractText(String src, String dest) throws IOException, DocumentException {
        PrintWriter out = new PrintWriter(new FileOutputStream(dest));
        PdfReader リーダー = 新しい PdfReader(src);
        PdfStamper stp = new PdfStamper(reader, new FileOutputStream(dest);
        RenderListener リスナー = new MyTextRenderListener(out,reader,stp);
        PdfContentStreamProcessor プロセッサ = 新しい PdfContentStreamProcessor(リスナー);

    for ( int pageNum= 0; pageNum < reader.getNumberOfPages(); pageNum++ ){
        PdfDictionary pageDic = reader.getPageN(pageNum);

        PdfDictionary resourcesDic = pageDic.getAsDict(PdfName.RESOURCES);
        processor.processContent(ContentByteUtils.getContentBytesForPage(reader, pageNum), resourcesDic);
    }   

    out.flush();
    out.close();
    stp.close();

}

MyTextRenderListener.java public void renderText(TextRenderInfo renderInfo) {

if (renderInfo.getText().startsWith("Fill_in_TextField")){ // creates the text fields by getting co-ordinates form the renderinfo object. createTextField(renderInfo); }else if (renderInfo.getText().startsWith("Fill_in_SignatureField")){ // creates the text fields by getting co-ordinates form the renderinfo object. createSignatureField(renderInfo); } }

ParsingHelloWorld問題は、クラスの extractText メソッドにページ番号があることです。ページ コンテンツを内部的に処理する MyTextRenderListener クラス内で renderText メソッドが呼び出されると、pageNumber を取得して、識別子テキストが存在する特定の座標 (例: Fill_in_TextField、Fill_in_SignatureField ..etc ) で PDF にフィールドを生成できませんでした。

私のシナリオでページ番号を取得するための提案/アイデア。

前もって感謝します。

4

1 に答える 1

1

簡単だ。パラメータを に追加MyTextListener:

protected int page;
public void setPage(int page) {
   this.page = page;
}

のページをループするときはParsingHelloWorld、ページ番号を に渡しますMyTextListener

listener.setPage(pageNum);

これで、メソッドでその番号にアクセスできるようになり、renderText()それをメソッドに渡すことができますcreateTextField()

あなたのループが間違っていると思うことに注意してください。ページ番号は 0 ページではなく、1 ページから始まります。

于 2012-11-22T14:59:47.713 に答える