5

PDFを生成するためにiTextでJavaを使用しています。テキストを列に入れる必要があるため、PdfPTable を使用しようとしています。私はそれを作成します:

myTable = new PdfPTable(n);

n列の数です。問題は、PdfPTable が行ごとにテーブルを埋めることです。つまり、最初に行 1 の列 1 にセルを指定し、次に行 1 の列 2 にセルを指定しますが、列ごとに実行する必要があります。データがどのように私に供給されているかです。

http://stderr.org/doc/libitext-java-doc/www/tutorial/ch05.htmlTableのように(位置を指定できる)を使用しますが、「型に解決できませんでした」というメッセージが表示されます、そして私のEclipseは適切なインポートを見つけることができません.

編集:前の説明がわかりにくい場合に備えて、私が望むのは、次の順序で表を埋めることです:

1  3  5
2  4  6

これの代わりに:

1  2  3
4  5  6
4

2 に答える 2

6

1 つの方法を次に示します。必要な列数で PdfPTable を作成します。この場合は 3 です。データの反復ごとに、1 列の PdfPTable を作成します。2 つの PdfPCell オブジェクトを作成します。1 つは現在のデータ要素を含み、もう 1 つはデータの次の値を含みます。これで、1 列と 2 行の PdfPTable が作成されました。この PdfPTable を 3 つの列を持つ PdfPTable に追加します。すべてのデータを印刷するまで、これを続けます。コードでよりよく説明します:

public class Clazz {

    public static final String RESULT = "result.pdf";
    private String [] data = {"1", "2", "3", "4", "5", "6"};

    private void go() throws Exception {

        Document doc = new Document();
        PdfWriter.getInstance(doc, new FileOutputStream(RESULT));
        doc.open();

        PdfPTable mainTable = new PdfPTable(3);
        PdfPCell cell;

        for (int i = 0; i < data.length; i+=2) {
            cell = new PdfPCell(new Phrase(data[i]));
            PdfPTable table = new PdfPTable(1);
            table.addCell(cell);
            if (i+1 <= data.length -1) {
               cell = new PdfPCell(new Phrase(data[i + 1]));
               table.addCell(cell);
            } else {
                cell = new PdfPCell(new Phrase(""));
                table.addCell(cell);
            }
            mainTable.addCell(table);
        }

        doc.add(mainTable);
        doc.close();

    }
}
于 2013-05-23T17:27:17.853 に答える