Rand hinzufügen, um pdf-Seite mit itext
dies ist mein Quellcode. warum bin ich nicht in der Lage, die Grenze zu meinem pdf-Seite auch nach der Aktivierung der Grenzen für alle Seiten? Ich habe eingestellt, Grenze und die Farbe auch noch, ich bin nicht in der Lage, die Grenze.
void create() throws DocumentException,IOException{
//step 1
Document document = new Document();
//step 2
PdfWriter writer=PdfWriter.getInstance(document, new FileOutputStream(RESULT));
document.setPageSize(PageSize.LETTER);
document.setMargins(36, 72, 108, 180);
document.setMarginMirroring(false);
//step 3
document.open();
//step 4
Rectangle rect= new Rectangle(36,108);
rect.enableBorderSide(1);
rect.enableBorderSide(2);
rect.enableBorderSide(4);
rect.enableBorderSide(8);
rect.setBorder(2);
rect.setBorderColor(BaseColor.BLACK);
document.add(rect);
Font font = new Font(Font.FontFamily.TIMES_ROMAN, 26, Font.UNDERLINE, BaseColor.BLACK);
Paragraph title= new Paragraph("CURRICULUM VITAE\n\n",font);
title.setAlignment(Element.ALIGN_CENTER);
document.add(title);
Font f1= new Font (Font.FontFamily.UNDEFINED, 13, Font.NORMAL, BaseColor.BLACK);
Paragraph info= new Paragraph("Name\n\nEmail\n\nContact Number",f1);
Paragraph addr= new Paragraph("Street\n\nCity\n\nPin",f1);
PdfPTable table = new PdfPTable(2);
table.setWidthPercentage(100);
table.spacingAfter();
PdfPCell cell = new PdfPCell(info);
cell.setHorizontalAlignment(Element.ALIGN_LEFT);
cell.disableBorderSide(Rectangle.BOX);
cell.setExtraParagraphSpace(1.5f);
table.addCell(cell);
cell = new PdfPCell(addr);
cell.setHorizontalAlignment(Element.ALIGN_RIGHT);
cell.disableBorderSide(Rectangle.BOX);
cell.setExtraParagraphSpace(1.5f);
table.addCell(cell);
document.add(table);
document.add(new Chunk("\n"));
document.add(new LineSeparator(2f,100,BaseColor.DARK_GRAY,Element.ALIGN_CENTER,-1f));
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie fix (1.) durch hinzufügen von:
Beachten Sie, dass ich entfernen würde, die
enableBorderSide()
Anrufe. Sie werden feststellen, dass Sie verwendet haben, diesetBorder()
Methode in die falsche Richtung.Fix (2.), Ich würde der Seite ein Ereignis. Beachten Sie, dass Sie nicht verwenden können
document.add()
in einem Seiten-event, also müssen Sie etwas tun, wie beschrieben in derDrawRectangle
Beispiel, dass geschrieben wurde, in der Antwort auf die Frage iText: PdfContentByte.rectangle(Rechteck), verhält sich nicht wie erwartetSie nicht definieren Sie die Seitengröße beim anlegen der
Document
Objekt, was bedeutet, dass iText verwendenPageSize.A4
. Ein paar Zeilen später, verwenden SiePageSize.LETTER
. Diese Werte sind unveränderlichRectangle
Objekte. Sie können erstellen Sie eine neueRectangle
anhand der Dimensionen/KoordinatenPageSize.A4
(oder in deinem Fall:PageSize.LETTER
). Erhalten Sie die Dimensionen mithilfe dergetWidth()
undgetHeight()
- Methode und die Koordinaten mit Hilfe vongetLeft()
,getBottom()
,getRight()
undgetTop()
.Rectangle
Sie verwenden möchten, um einen Rahmen zeichnen.document.newPage()
, aber in einigen Fällen iText beginnt eine neue Seite automatisch, wenn die Inhalte passen nicht auf der aktuellen Seite. Deshalb sollten Sie die Grenze in dieonEndPage()
- Methode der event-Seite.rectangle()
Methode, aber ich glaube nicht, dass ich die Frage verstehe. Sie sind bereits Sie eine Tabelle hinzufügen: ich sehetable.addCell()
Ihre Frage ein. Warum nicht definieren eine Grenze für die Zelle? Dann brauchen Sie sich nicht zu kümmern, indem es sich selbst.onEndPage()
Veranstaltung ist nur eine Frage der kopieren von code aus dem Beispiel, das ich erwähnt ( itextpdf.com/sandbox/objects/DrawRectangle ) in den Körper desonEndPage()
Methode.