3

iTextPdfを使用してpdfのテーブルを作成しています。各ページには 9 ~ 15 の列があり、正確な数は実行時までわかりません。iTextPDF は、ページ幅全体に同じサイズの列を作成するのに非常に適しています。しかし、幅の異なる列を作成する方法がわかりません。

ページ幅全体に広げたいので、列幅を固定することはできません。したがって、9 列が書き込まれる場合、各列は、12 または 15 列が書き込まれる場合よりも必然的に広くなります。固定されているのは、これらの列幅の関係です。例を挙げると、列 A は常に列 B の幅の 75% であり、列 C の幅の 50% であることがわかっています。すべての列についてこれを決定できます。

これらの列のサイズを適切に設定するためにページを分割する方法について何か考えがある人はいますか? これは、同じサイズの列を作成するために使用しているコードです。私は近くの終わりに向かって何か他のものが必要です

cell.setColspan(1);

列の幅を変更しますが、固定値には変更しません。ありがとうございました!

public static void newPDF() throws DocumentException, IOException {
    PdfWriter writer;
    Document document;
    int cols = 9; //can be either 9, 12, or 15
    document = new Document();
    writer = PdfWriter.getInstance(document, new FileOutputStream("test.pdf"));
    document.open();
    document.add(createTable(cols));
    document.close();
}

public static PdfPTable createTable(int cols) {
        PdfPTable table = new PdfPTable(cols);
        PdfPCell cell;

        for (int i = 0; i < cols; i++) {
            ph = selector.process("some text");
            cell = new PdfPCell(ph);
            cell.setColspan(1); //repeated 9, 12, or 15 times
            table.addCell(cell);
        }
        return table;
}
4

1 に答える 1

9

私は答えを見つけました。

float[] columnWidths = new float[] {10f, 20f, 30f, 10f};
table.setWidths(columnWidths);

このコードは、括弧内の値に相対的に比例して列の水平方向のスペースを割り当てます (たとえば、列 A は列 B のサイズの 1/2、列 C のサイズの 1/3 です)。

これの良い例: http://www.kodejava.org/examples/833.html

とにかくありがとう!

于 2012-08-16T22:50:30.910 に答える