0

環境

私はしばらくの間、動的 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オブジェクトを生成します。

4

1 に答える 1

0

PdfPTable最後のセルでネストされた を使用して、各 の配置をフォーマットしましたPhrase。夢のような作品!

于 2013-08-08T14:58:10.137 に答える