/**
*
* All holders of the document so far including the block itself are extracted. * If at least one has been found it is checked that this one doesn't belong to * a previous block. *
** Note that the KZ is not explicitely checked here, so this algorithm will find * all blocks. *
** Note that it will not find old style blocks as they don't have the SIG_KZ. *
* * @author wprinz */ public class TextualVerificator_1_0_0 implements Verificator { /** * The Pdf-AS ID of this Verificator. */ public static final PdfASID MY_ID = new PdfASID(SignatorFactory.VENDOR, SignatorFactory.TYPE_TEXTUAL, SignatorFactory.VERSION_1_0_0); /** * The logger definition. */ private static final Logger logger_ = ConfigLogger.getLogger(TextualVerificator_1_0_0.class); /** * Default constructor. */ public TextualVerificator_1_0_0() { // Default constructor. } /** * @see at.knowcenter.wag.egov.egiz.framework.Verificator#parseBlock(byte[], * at.knowcenter.wag.exactparser.parsing.results.FooterParseResult, int) */ public List parseBlock(byte[] pdf, FooterParseResult block, int start_of_whole_block) throws PresentableException { String block_text = PdfAS.extractNormalizedTextTextual(pdf, block.next_index); logger_.debug("Scanning block:"); //List signature_holders = PdfAS.extractSignatureHoldersTextual(block_text, false); List signature_holders = AbsoluteTextSignature.extractSignatureHoldersFromText(block_text); logger_.debug(": end of Scanning block"); // logger_.debug("signature_holders = " + signature_holders.size()); if (signature_holders.isEmpty()) { return signature_holders; } List text_holder_candidates = null; if (start_of_whole_block > 0) { text_holder_candidates = new ArrayList(); String prev_text = PdfAS.extractNormalizedTextTextual(pdf, start_of_whole_block); logger_.debug("Scanning prev block:"); //List prev_signature_holders = PdfAS.extractSignatureHoldersTextual(prev_text, false); List prev_signature_holders = AbsoluteTextSignature.extractSignatureHoldersFromText(prev_text); logger_.debug(": end of Scanning prev block"); // logger_.debug("prev_signature_holders = " + // prev_signature_holders.size()); for (int i = prev_signature_holders.size(); i < signature_holders.size(); i++) { SignatureHolder holder = (SignatureHolder) signature_holders.get(i); text_holder_candidates.add(holder); } } else { logger_.debug("there is no prev - so all found signatures are possible candidates."); text_holder_candidates = signature_holders; } List text_holders = new ArrayList(); for (int i = 0; i < text_holder_candidates.size(); i++) { SignatureHolder holder = (SignatureHolder) text_holder_candidates.get(i); if (!holder.getSignatureObject().isTextual()) { logger_.debug("Skipping found signature block because it's not textual."); continue; } text_holders.add(holder); } return text_holders; } }