iText多个注释/文本字段

时间:2013-08-16 07:08:50

标签: java pdf itext

在Java中使用iText创建注释或文本字段存在一些问题。本质上我试图创建一个页面并在其底部放置一个文本字段,以允许用户添加注释。然后添加另一个页面,并将其再次添加到第二页。

我可以让它工作,以便第一页有文本字段,但我不能让它在第二页上工作。因此,第一页显示注释,我可以输入文本,但第二页从不显示注释

有什么想法吗?

继承我的代码:

import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.GradientPaint;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.MalformedURLException;
import java.sql.SQLException;
import java.util.Random;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.*;
import org.jfree.chart.labels.StandardCategoryToolTipGenerator;
import org.jfree.chart.plot.*;
import org.jfree.chart.renderer.category.BarRenderer;
import org.jfree.chart.renderer.category.LineAndShapeRenderer;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;
import org.jfree.ui.RectangleEdge;
import org.jfree.util.ShapeUtilities;

import com.itextpdf.text.*;
import com.itextpdf.text.pdf.*;

public static final String FILE = "Report.pdf";

  public static void main(String[] args) throws DocumentException, IOException
  {
    System.out.println("Building Report");
    new mainv2().createPdf(FILE);
    System.out.println("Built");
  }

  public void createPdf(String filename)
      throws DocumentException, IOException {

    //Setup Document
    Document document = new Document();
    PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(FILE));

    //Begin creation
    document.open();

    writer.setPageEmpty(false);

    //Get Main Layer to draw/write on
    PdfContentByte canvas = writer.getDirectContent();

//    //Sub heading
//    createText(canvas, BaseColor.BLACK, 40, PageSize.A4.getHeight() - 100, "Test Report 1");
//    drawLine(canvas, 40, PageSize.A4.getHeight() - 105, 555, PageSize.A4.getHeight() - 105);

    //First Text field/annotation
    TextField name = new TextField(writer, new Rectangle(45, 200, 550, 60), "Type notes here");
    name.setOptions( TextField.MULTILINE );
    name.setBorderColor(new GrayColor(0.2f));
    name.setBackgroundColor(BaseColor.WHITE);
    PdfFormField namefield = name.getTextField();
    name.setFontSize(6);
    namefield.setFlags(PdfFormField.FF_MULTILINE);
    writer.addAnnotation(namefield);

    //Make second page
    document.newPage();

    writer.setPageEmpty(false);

    //Second Text Field/annotation
    TextField name2 = new TextField(writer, new Rectangle(45, 200, 550, 60), "Type notes here");
    name2.setOptions( TextField.MULTILINE );
    name2.setBorderColor(new GrayColor(0.2f));
    name2.setBackgroundColor(BaseColor.WHITE);
    PdfFormField namefield2 = name2.getTextField();
    name2.setFontSize(6);
    namefield2.setFlags(PdfFormField.FF_MULTILINE);
    writer.addAnnotation(namefield2);

    document.close();

  }

0 个答案:

没有答案