使用itext将边框添加到pdf页面

时间:2014-07-11 08:08:08

标签: java pdf pdf-generation itext

这是我的源代码。为什么即使为所有方面启用边框后,我也无法为我的pdf页面添加边框?我设置了边框及其颜色,但我无法添加边框。

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

2 个答案:

答案 0 :(得分:1)

  1. 您没有定义边框宽度。
  2. 您只需添加一次边框。如果您希望边框出现在每个页面上怎么办?
  3. 您可以通过添加:

    来修复(1.)
    rect.setBorder(Rectangle.BOX);
    rect.setBorderWidth(2);
    

    请注意,我会删除enableBorderSide()来电。您会注意到您以错误的方式使用了setBorder()方法。

    要修复(2.),我会使用页面事件。请注意,您无法在页面事件中使用document.add(),因此您必须执行DrawRectangle示例中所述的回答问题{{3} }}

    在创建Document对象时,您没有定义页面大小,这意味着iText将使用PageSize.A4。稍后几行,您使用PageSize.LETTER。这些值是不可变的Rectangle个对象。您可以使用Rectangle的维度/坐标(或在您的情况下:PageSize.A4)创建新的PageSize.LETTER。您可以使用getWidth()getHeight()方法以及使用getLeft()getBottom()getRight()getTop()的坐标来获取维度。

答案 1 :(得分:1)

    Rectangle rect= new Rectangle(577,825,18,15); // you can resize rectangle 
     rect.enableBorderSide(1);
     rect.enableBorderSide(2);
     rect.enableBorderSide(4);
     rect.enableBorderSide(8);
     rect.setBorderColor(BaseColor.BLACK);
     rect.setBorderWidth(1);
     document.add(rect);