Gewusst wie: zeichnen Sie ein gefülltes Rechteck in PDFBox?
Gewusst wie: zeichnen Sie ein gefülltes Rechteck mit PDFBox?
Ich finde nicht die richtige Funktion des PDFBox-API-Dokumentation.
Ich will zeichnen Sie ein gefülltes Rechteck unter der ersten Zeile der Tabelle:
public static void drawTable(PDPage page, PDPageContentStream contentStream,
float y, float margin,
String[][] content) throws IOException {
final int rows = content.length;
final int cols = content[0].length;
final float firstRowHeight = 160f;
final float rowHeight = 20f;
final float colWidth = 15f; //tableWidth/(float)cols;
final float tableWidth = colWidth * cols; //page.findMediaBox().getWidth()-(2*margin);
final float tableHeight = rowHeight * rows + firstRowHeight - rowHeight;
final float cellMargin= 5f;
/*PDRectangle rectangle = new PDRectangle();
rectangle.setLowerLeftX(10);
rectangle.setLowerLeftY(10);
rectangle.setUpperRightX(10);
rectangle.setUpperRightY(10);
page.setMediaBox(rectangle);
page.setCropBox(rectangle);*/
//draw the rows
float nexty = y ;
for (int i = 0; i <= rows; i++) {
contentStream.drawLine(margin,nexty,margin+tableWidth,nexty);
if (i<=0) {
nexty-= firstRowHeight;
} else {
nexty-= rowHeight;
}
}
//draw the columns
float nextx = margin;
for (int i = 0; i <= cols; i++) {
contentStream.drawLine(nextx,y,nextx,y-tableHeight);
nextx += colWidth;
}
//now add the text
contentStream.setFont(PDType1Font.HELVETICA_BOLD,8);
float textx = margin+cellMargin;
float texty = y-15;
//int o = content.length;
for(int i = 0; i < content.length; i++){
for(int j = 0 ; j < content[i].length; j++){
String text = content[i][j];
contentStream.beginText();
if (i<=0) {
contentStream.moveTextPositionByAmount(textx,texty-140);
contentStream.setTextRotation(90*Math.PI*0.25,textx+5,texty-140);
} else {
contentStream.moveTextPositionByAmount(textx,texty);
contentStream.setTextRotation(90*Math.PI*0.25,textx+5,texty-3);
}
contentStream.drawString(text);
contentStream.endText();
textx += colWidth;
}
if (i<=0) {
texty-=firstRowHeight;
} else {
texty-=rowHeight;
}
textx = margin+cellMargin;
}
}
InformationsquelleAutor Matti Kiviharju | 2013-05-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es eine Methode namens fillRect in PDPageContentStream dass der trick funktioniert.
InformationsquelleAutor Simon Bengtsson
Dies ist, wie Sie können, zeichnen Sie ein Rechteck in PDFBox 2:
Verwenden Sie es wie diese:
InformationsquelleAutor Matthias Braun