iText5
ライブラリを使用してPDFドキュメントを生成しています(以前に彼を見たことがある人のために、まだそうです) 。Bruno Lowagie に敬意を表します。本当に素晴らしい API であることがわかりました。
ただし、私の仕事の一部は、いくつかのフレーズをフォーマットすることです。ネストされた を使用しPdfPTable
てデータをフォーマットしましたが、奇妙な間隔の問題が発生しています。これが私が直面している問題の例です:
ご覧のとおり、フレーズが 2 つしかない行は、行間に大きなギャップがある傾向があります。なぜこれが起こっているのか理解できます。上の行はテーブルを引き伸ばしています。テーブルを必要なだけ大きくし、大きくしない方法はありますか?
コード
価格コレクションの生成
私はこのスニペットで価格を作成しています:
Paragraph pricePara = new Paragraph();
pricePara.add(price);
pricePara.add(generateBreakLine());
pricePara.add(time);
pricePara.add(generateBreakLine());
allPrices.add(pricePara);
wheregenerateBreakLine()
は空のParagraph
オブジェクトを返します。
それらをセルに追加する
次のスニペットを使用してセルに追加します。
// 5 is just the amount of prices we can fit on one line.
PdfPTable pricesCellValue = new PdfPTable(elements.size() > 5 ? 5 : elements.size());
// Make it appear that the prices are just horizontal, as opposed to in a table.
pricesCellValue.getDefaultCell().setBorder(PdfPCell.NO_BORDER);
// Cycle through each price. Add to cell. Add cell to the table.
for (com.lowagie.text.Element elem : elements) {
PdfPCell cell = new PdfPCell((Paragraph) elem);
cell.setBorder(PdfPCell.NO_BORDER);
cell.setPadding(2);
pricesCellValue.addCell(cell);
}
return pricesCellValue;
上記のスニペットは、テーブルの周りのすべてのスペースを埋めるのではなく、テーブルが必要なだけの幅であることを確認できる場所だと思います。どうすればそれを行うことができますか?