Zentrieren des Ausrichtungsvorlagenelements in PdfPCell

Ich erstelle eine vertikale Liste von Monaten mit einer horizontalen Liste von Tagen in jedem Monat. Jedem Tag füge ich ein großes und farbiges Rechteck hinzu. Die Größe und Farbe ist abhängig von einem Wert aus einer DB-Abfrage.

ich benutzePdfPTable, PdfPCell undcbCreateTemplate bereitgestellt indiese Antwort

Alles andere funktioniert einwandfrei (die Größe des Rechtecks, die Farbe des Rechtecks), abgesehen von der Position des Rechtecks: Es wird immer auf 0,0 positioniert, obwohl ich die V & H-Positionierung festgelegt habe. Ein Auszug des Codes ist unten; Bitte beraten.

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);

Dies ist eine Grafik von dem, was gezeigt wird:

Es sollte Center / Center sein. Wo habe ich mich geirrt?

Dies ist der aktualisierte Codeteil unter Verwendung der akzeptierten Lösung:

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);

Antworten auf die Frage(1)

Ihre Antwort auf die Frage