2012-08-02 38 views
0

我创建了一个PDF内部的表。我设法通过听取PdfPCellEvent创建所选单元格字段:使PdfField可见

cell.setCellEvent(new PdfPCellEvent() { 
     @Override 
     public void cellLayout(PdfPCell pdfPCell, 
           Rectangle rectangle, 
           PdfContentByte[] canvas) { 
     PdfContentByte pcb = canvas[canvas.length - 1]; 
     PdfWriter writer = pcb.getPdfWriter(); 

     PdfFormField field = PdfFormField.createTextField(writer, false, false, 3); 
     field.setName("quantity " + hashCode()); 
     field.setFieldFlags(PdfFormField.FF_EDIT); 
     Rectangle rect = new Rectangle(rectangle.getLeft() + 5, rectangle.getTop() - 5, 
        rectangle.getLeft() + rectangle.getWidth() - 5, 
        rectangle.getTop() - rectangle.getHeight() + 5); 
     field.setWidget(rect, PdfAnnotation.HIGHLIGHT_OUTLINE); 
     field.setFieldFlags(PdfAnnotation.FLAGS_PRINT); 

     writer.addAnnotation(field); 
     writer.flush(); 
     } 
    } ); 

它工作正常,只要将文本输入的字段关注。但是一旦该领域失去重点,内容就会消失。如果我再次将焦点设置到该字段,则会重新显示数据。

我的问题是:为了使PdfFormField中的文本保持打印状态,我需要做些什么?

有一个样本PDF浏览:http://qr.sertal.ch/output.pdf

感谢你的帮助。

回答

0

我从iText邮件列表中得到了答案。本书中描述的添加表单字段的方式已被弃用。这里是新的方式,这工作得很好:我最多的问题与景观页面上的定向

cell.setCellEvent(new PdfPCellEvent() { 
     @Override 
     public void cellLayout(PdfPCell pdfPCell, 
           Rectangle rectangle, 
           PdfContentByte[] canvas) { 
     PdfContentByte pcb = canvas[canvas.length - 1]; 
     PdfWriter writer = pcb.getPdfWriter(); 

     Rectangle rect = new Rectangle(rectangle.getLeft() + 5, rectangle.getTop() - 5, 
        rectangle.getLeft() + rectangle.getWidth() - 5, 
        rectangle.getTop() - rectangle.getHeight() + 5); 
     TextField field = new TextField(writer, rectangle, "quantity " + hashCode()); 
     field.setRotation(A4.rotate().getRotation()); 
     try { 
      writer.addAnnotation(field.getTextField()); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } catch (DocumentException e) { 
      e.printStackTrace(); 
     } 
     writer.flush(); 

     pcb.rectangle(rect); 
     } 
    }); 

,直到我发现,你可以设置字段的旋转。