[jboss-cvs] jboss-seam/src/pdf/org/jboss/seam/pdf/ui ...

Norman Richards norman.richards at jboss.com
Thu Jan 25 01:17:24 EST 2007


  User: nrichards
  Date: 07/01/25 01:17:24

  Modified:    src/pdf/org/jboss/seam/pdf/ui    ITextComponent.java
                        UIDocument.java
  Added:       src/pdf/org/jboss/seam/pdf/ui    UISignature.java
  Log:
  add signature field to acroform
  
  Revision  Changes    Path
  1.7       +1 -2      jboss-seam/src/pdf/org/jboss/seam/pdf/ui/ITextComponent.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: ITextComponent.java
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-seam/src/pdf/org/jboss/seam/pdf/ui/ITextComponent.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -b -r1.6 -r1.7
  --- ITextComponent.java	11 Jan 2007 05:32:06 -0000	1.6
  +++ ITextComponent.java	25 Jan 2007 06:17:23 -0000	1.7
  @@ -76,7 +76,6 @@
           }
       }
   
  -
       /**
        * find the first parent that is an itext component);
        */
  
  
  
  1.12      +9 -3      jboss-seam/src/pdf/org/jboss/seam/pdf/ui/UIDocument.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: UIDocument.java
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-seam/src/pdf/org/jboss/seam/pdf/ui/UIDocument.java,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -b -r1.11 -r1.12
  --- UIDocument.java	24 Jan 2007 06:09:59 -0000	1.11
  +++ UIDocument.java	25 Jan 2007 06:17:23 -0000	1.12
  @@ -18,6 +18,7 @@
   {
       public static final String COMPONENT_TYPE   = "org.jboss.seam.pdf.ui.UIDocument";
       
  +    DocWriter writer;
       Document document;
       ByteArrayOutputStream stream;
       String id;
  @@ -175,16 +176,17 @@
           id = store.newId();
           stream = new ByteArrayOutputStream();
                 
  +        
           try {
               switch (docType) {
               case PDF:
  -                PdfWriter.getInstance(document, stream);
  +                writer = PdfWriter.getInstance(document, stream);
                   break;
               case RTF:
  -                RtfWriter2.getInstance(document, stream);
  +                writer = RtfWriter2.getInstance(document, stream);
                   break;
               case HTML:
  -                HtmlWriter.getInstance(document, stream);
  +                writer = HtmlWriter.getInstance(document, stream);
                   break;
               }
               
  @@ -248,6 +250,10 @@
           Manager.instance().beforeRedirect();
       }
   
  +    public DocWriter getWriter() {
  +        return writer;
  +    }    
  +    
       private DocType docTypeForName(String typeName) {    
           if (typeName != null) {
               if (typeName.equalsIgnoreCase(DocType.PDF.name())) {
  
  
  
  1.1      date: 2007/01/25 06:17:23;  author: nrichards;  state: Exp;jboss-seam/src/pdf/org/jboss/seam/pdf/ui/UISignature.java
  
  Index: UISignature.java
  ===================================================================
  package org.jboss.seam.pdf.ui;
  
  import java.io.IOException;
  
  import javax.faces.context.FacesContext;
  
  import org.jboss.seam.pdf.ITextUtils;
  
  import com.lowagie.text.DocWriter;
  import com.lowagie.text.pdf.PdfAcroForm;
  import com.lowagie.text.pdf.PdfWriter;
  
  public class UISignature 
      extends ITextComponent 
  {
      String field;
      String size;
      
      public void setField(String field) {
          this.field = field;
      }
      
      public void setSize(String size) {
          this.size = size;
      }
      
      @Override
      public void createITextObject(FacesContext context) {}
  
      @Override
      public void removeITextObject() {}
      
      @Override
      public Object getITextObject() {       
          return null;
      }
  
      @Override
      public void handleAdd(Object other) {
          throw new RuntimeException("PDF signature does not accept children");
      }
  
      @Override
      public void encodeEnd(FacesContext context) throws IOException {              
          PdfWriter writer = findWriter();
          if (writer == null) {
              throw new RuntimeException("Cannot find PdfWriter - the document may not exist or may not be a pdf type");
          }
          
          PdfAcroForm form = writer.getAcroForm();   
  
          field = (String) valueBinding(context, "field", field);
          if (field == null) {
              throw new RuntimeException("signature field named is required");
          }
          
          size = (String) valueBinding(context, "size", size);
          if (size == null) {
              throw new RuntimeException("signature size is required");
          }
          float[] rect = ITextUtils.stringToFloatArray(size);
          if (rect.length != 4) {
              throw new RuntimeException("size must contain four numbers");
          }
          form.addSignature(field, rect[0], rect[1], rect[2], rect[3]);
          
          super.encodeEnd(context);
      }
  
      private PdfWriter findWriter() {
          UIDocument doc = (UIDocument) findITextParent(this, UIDocument.class);
          if (doc != null) {
              DocWriter writer = doc.getWriter();
             
              if (writer instanceof PdfWriter) {
                  return (PdfWriter) writer;
              }
          }   
          return null;
      }    
  
  }
  
  
  



More information about the jboss-cvs-commits mailing list