6

各月の日付の水平リストを使用して、月の垂直リストを作成しています。毎日、サイズと色の付いた長方形を追加しています。サイズと色は、db クエリの値に依存します。

を使用してPdfPTableおりPdfPCellこの回答cbCreateTemplateで提供されています

長方形の位置を除いて、他のすべて (長方形のサイズ、長方形の色) は正常に機能します。V と H の配置を設定した (と思う) にもかかわらず、常に 0,0 に配置されます。コードの抜粋を以下に示します。お知らせ下さい。

int Severity = args.getPLR().get(i).getItems().get(j).getItems().get(itemIndex).getSeverity();
Severity = Severity + 5; //plump up, so that max (10) should fill the cell
PdfPCell cell = new PdfPCell();
cell.setPadding(0);
template = cb.createTemplate(Severity, Severity);
template.setLineWidth(0.5f);
template.rectangle(0, 0, Severity, Severity);
//we should switch the color
//based on the Severity
switch ((Severity-5)) {
    case 0:
        template.setColorFill(Color.GREEN);
        break;
    case 1:
        template.setColorFill(Color.GREEN);
        break;
    case 2:
        template.setColorFill(Color.YELLOW);
        break;
    case 3:
        template.setColorFill(Color.YELLOW);
        break;
    case 4:
        template.setColorFill(Color.YELLOW);
        break;
    case 5:
        template.setColorFill(Color.ORANGE);
        break;
    case 6:
        template.setColorFill(Color.ORANGE);
        break;
    case 7:
        template.setColorFill(Color.ORANGE);
        break;
    case 8:
        template.setColorFill(Color.RED);
        break;
    case 9:
        template.setColorFill(Color.RED);
        break;
    case 10:
        template.setColorFill(Color.RED);
        break;
}
template.fill();
img = Image.getInstance(template);        
chunk = new Chunk(img, 0f, 0f);
cell.addElement(chunk);
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
painTable.addCell(cell);

これは、表示される内容のグラフィックです。 中央/中央に配置する必要があります

センター/センターである必要があります。どこで間違ったのですか?

これは、受け入れられたソリューションを使用して更新されたコード部分です。

img = Image.getInstance(template);        
chunk = new Chunk(img, 0f, 0f);
Phrase severityChunk = new Phrase(chunk);
PdfPCell cell = new PdfPCell(severityChunk);
cell.setPadding(0);
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
painTable.addCell(cell);
4

2 に答える 2

11

とを混ぜtext modeていcomposite modeます。

PdfPCellテキストモードのみの作品のレベルに設定された配置プロパティ。複合モードに切り替えると (addElement()メソッドを使用して切り替えます)、iText はセルに定義された配置を無視し、セルのコンテンツに定義された配置を優先します。

テキスト モードでは、すべてのコンテンツが同じ配置になります。複合モードでは、配置が異なるさまざまな要素を使用できます。

さまざまなオプションがあります。を入れてChunkParagraphセルの代わりに段落の配置を定義できます。Phraseチャンクを含むを使用して、テキスト モードでセルを作成できます。Imageチャンクなどを使用せずにでセルを作成することさえ可能かもしれません...

これはすべて、私が書いた本「iText in Action」で説明されています。

于 2012-09-25T09:56:27.580 に答える