diff options
Diffstat (limited to 'src/main')
| -rw-r--r-- | src/main/java/at/knowcenter/wag/egov/egiz/PdfAS.java | 40 | 
1 files changed, 22 insertions, 18 deletions
| diff --git a/src/main/java/at/knowcenter/wag/egov/egiz/PdfAS.java b/src/main/java/at/knowcenter/wag/egov/egiz/PdfAS.java index 1492791..da98c95 100644 --- a/src/main/java/at/knowcenter/wag/egov/egiz/PdfAS.java +++ b/src/main/java/at/knowcenter/wag/egov/egiz/PdfAS.java @@ -71,6 +71,7 @@ import com.lowagie.text.pdf.PdfReader;   * webapp, to perform signation and verification.
   * 
   * @author wprinz
 + * @author mruhmer
   */
  public abstract class PdfAS
  {
 @@ -381,18 +382,15 @@ public abstract class PdfAS    public static List findBlockInText(String text,
        SignatureTypeDefinition sig_type_def, boolean old_style)
    {
 -	  // FIXME[tknall]: AbsoluteTextSignature.java, method findEndOfValue(...) does not work properly for landscape documents because start_index of FoundKeys are not set correctly.
 -	  // Hint: Captions and values of landscape documents are separated with " \n" and not with " " only.
      Vector keys = sig_type_def.getRevertSortedKeys();
      Vector captions = sig_type_def.getRevertSortedCaptions();
      int last_index = text.length();
 -
      List found_keys = new ArrayList();
      for (int key_idx = 0; key_idx < keys.size(); key_idx++)
      {
        String key = (String) keys.get(key_idx);
 -
 +      //logger_.debug("Key="+key);
        if (old_style && key.equals(SignatureTypes.SIG_KZ))
        {
          // If separating the old style way - skip The "Kennzeichnung"
 @@ -404,10 +402,15 @@ public abstract class PdfAS        // int found_index = text.lastIndexOf(caption);
        // we're searching for captions that start at the beginning of the line.
 -      int found_index = text.lastIndexOf("\n" + caption) + 1; // the +1
 +      int found_index =text.lastIndexOf("\n" +caption) + 1;//text.lastIndexOf("\n" + caption) + 1; // the +1  text.lastIndexOf(caption) + 1; //
        // compensates the
        // \n
 -
 +      if (found_index == 0)
 +      {
 +    	  //try without /n
 +    	  found_index = text.lastIndexOf(caption);   
 +      }
 +      logger_.debug("found key:"+caption+" at index:"+found_index);    
        if (key.equals(SignatureTypes.SIG_ID))
        {
          if (found_index < 0 || found_index >= last_index)
 @@ -427,16 +430,16 @@ public abstract class PdfAS          }
          FoundKey fk = new FoundKey(key, caption, found_index);
 -        found_keys.add(fk);
 +        found_keys.add(fk);  
          last_index = found_index;
        }
      }
      sortFoundKeysDescendingly(found_keys);
 -
 +    
      boolean matched = checkThatOrderIsCorrectAndCorrectFoundKeys(found_keys, keys, old_style);
      // boolean found_required = checkFoundRequiredKeys(found_keys, old_style);
 -
 +    //logger_.debug("KKKKKKKKKKmatched="+matched);
      if (matched)
      {
        return found_keys;
 @@ -777,7 +780,7 @@ public abstract class PdfAS        String connector) throws NormalizeException, PDFDocumentException, SignatureException
    {
      String text_to_be_verified = signature_holder.getSignedText();
 -
 +    //logger_.debug("verify text_to_be_verified"+text_to_be_verified);
      SignatureObject so_to_be_verified = signature_holder.getSignatureObject();
      if (text_to_be_verified == null)
 @@ -830,7 +833,6 @@ public abstract class PdfAS        final String user_name, final String user_password) throws SignatureException, PDFDocumentException
    {
      logger_.info("User signed a document: " + user_name);
 -
      if (text_to_sign == null)
      {
        throw new SignatureException(301, "Signature can not be produced. Text is null.");
 @@ -901,7 +903,7 @@ public abstract class PdfAS        final String user_name, final String user_password, TablePos pos) throws PresentableException
    {
      Signator signator = SignatorFactory.createSignator(algorithm);
 -
 +    
      IncrementalUpdateInformation iui = signator.prepareSign(pdf, signature_type, pos, ConnectorFactory.needsSIG_ID(connector));
      iui.signed_signature_object = sign(iui.document_text, signature_type, connector, user_name, user_password);
 @@ -947,9 +949,9 @@ public abstract class PdfAS    {
      ByteArrayInputStream bais = new ByteArrayInputStream(pdf, 0, length);
      String raw_document_text = TextualSignature.extractTextTextual(bais);
 -
 +    //logger_.info("extractNormalizedTextTextual raw_document_text="+raw_document_text);
      String document_text = normalizeText(raw_document_text);
 -
 +    logger_.info("extractNormalizedTextTextual document_text ="+document_text);
      return document_text;
    }
 @@ -1043,7 +1045,7 @@ public abstract class PdfAS    public static PositioningInstruction adjustSignatureTableandCalculatePosition(
        final byte[] pdf, PdfPTable pdf_table, TablePos pos) throws PDFDocumentException
    {
 -  //first check pageinstruction in TablePos-object
 +    //first check pageinstruction in TablePos-object
  	//new,auto,absolut
  	PdfReader reader = readInPdfDocument(pdf);
  	//get pages of currentdocument
 @@ -1061,6 +1063,8 @@ public abstract class PdfAS  	boolean make_new_page = pos.isNewPage();
      //getPagedimensions
      Rectangle psize = reader.getPageSizeWithRotation(page);
 +    int page_rotation = reader.getPageRotation(page);
 +    
      float page_width = psize.width();
      float page_height = psize.height();
      //now we can calculate x-position
 @@ -1110,7 +1114,7 @@ public abstract class PdfAS      //up to here no checks have to be made if Tablesize and Pagesize are fit 
      //Now we have to getfreespace in page and reguard footerline 
      float footer_line = pos.getFooterLine();
 -    float pre_page_length = PDFUtilities.calculatePageLength(pdf, page-1, page_height-footer_line);
 +    float pre_page_length = PDFUtilities.calculatePageLength(pdf, page-1, page_height-footer_line, page_rotation);
      if (pre_page_length == Float.NEGATIVE_INFINITY)
      {
      	//we do have an empty page or nothing in area above footerline
 @@ -1155,7 +1159,7 @@ public abstract class PdfAS    /**
     * Sets the width of the table according to the layout of the document and
     * calculates the y position where the PDFPTable should be placed.
 -   * 
 +   * @deprecated
     * @param pdf
     *          The PDF document.
     * @param pdf_table
 @@ -1205,7 +1209,7 @@ public abstract class PdfAS     * This algorithm tries to position the table between the end of the text and
     * the footer line.
     * </p>
 -   * 
 +   * @deprecated
     * @param pdf
     *          The PDF document.
     * @param pdf_table
 | 
