環境
私はしばらくの間、動的 PDF 生成に取り組んできましたが、最終的な要件に出くわしました。悲しいかな、それは悪夢です。iTextライブラリのバージョン 2.1.7を使用しています。
私は基本的に、一番上の行のような書式設定を取得しようとしています (ペイントでモックアップしました)。他の列は今のところこんな感じですが、うまく並べるのに苦労しています!
コード
各色分けされたブロックを生成するために使用されるコードは次のとおりです。
String currentPrice = p.getPrice();
String timeStr = p.getTime();
Chunk price = new Chunk(currentPrice);
Chunk time = (Chunk) generatePdfElement("Timestamp", timeStr);
if (priceDbl > lastPrice) {
// set color to blue.
price.setBackground(WebColors.getRGBColor("#7777FF"));
time.setBackground(WebColors.getRGBColor("#7777FF"));
} else if (priceDbl < lastPrice) {
// set to red.
price.setBackground(WebColors.getRGBColor("#FF0000"));
time.setBackground(WebColors.getRGBColor("#FF0000"));
}
Paragraph pricePara = new Paragraph();
pricePara.add(price);
pricePara.add(generateBreakLine());
pricePara.add(time);
pricePara.add(generateBreakLine());
// Add the new price data to the list of all the prices for this cell.
allPrices.add(pricePara);
allPrices
次に段落に追加され、セルに挿入されます。
Paragraph pricesCellValue = new Paragraph();
pricesCellValue.addAll(allPrices);
PdfPCell pricesCell = new PdfPCell(pricesCellValue);
pricesCell.setBackgroundColor(WebColors.getRGBColor(getRowStr()));
selectionsTable.addCell(pricesCell);
// Add each cell to the table to create the row.
私が試したアプローチ
各 から最後のブレークラインを削除するという明白な方法を試しましたChunk
。これは機能しませんでした。それぞれがより近くにあるにもかかわらず、まったく同じように見えましChunk
た。
Paragraph
また、 からに変更してみましPhrase
た。つまり、コードは次のようになります。
Phrase pricePara = new Phrase();
pricePara.add(price);
pricePara.add(generateBreakLine());
pricePara.add(time);
//pricePara.add(generateBreakLine());
// Add the new price data to the list of all the prices for this cell.
allPrices.add(pricePara);
そして、これが結果でした:
だから今、私はアイデアから新鮮です!この分野で iText に関する提案や経験がある人はいますか?
編集
わかりやすくするためにgenerateBreakLine()
、新しい空のParagraph
オブジェクトを生成します。