Class AbstractPdfExtractor
java.lang.Object
de.frankmuenster.mahoe.pdfextractor.AbstractPdfExtractor
- Direct Known Subclasses:
SantanderPdfExtractor
,TargoBankPdfExtractor
Der Abstracter PDFExtractor. Konkrete auf die Bank angepasste Extraktoren
müssen von dieser Klasse abgeleitet werden.
- Author:
- Frank Münster
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected List<PdfEintrag>
List of effective dates for entriesprotected org.apache.pdfbox.pdmodel.PDDocument
Das PDF Documentprotected final String
Die Kreditkartennummerprotected int
Last with transactionsprotected static final int
Threshold PDFBox value for keeping one word in one line.protected static final int
Threshold PDFBox value for keeping 2 words in one line.protected final NumberFormat
Dezimalformatierer des Saldosprotected String
Date of the bank statementprotected static final String
The delimiter in the return string from the PDFBox extraction separating the positions and description values.protected static final int
Ein extrahiertes Wort muss genau 3 Felder haben: PosX, PosY und das eigentliche Wort. -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotected
AbstractPdfExtractor
(byte[] byteArray, String kartenNummer) Constructs a new extractor with a byte array for teh given card number.protected
AbstractPdfExtractor
(InputStream inputStream, String kartenNummer) Abstracter Konstruktor mit Angabe des PDF inputStreams und der Kartennummer. -
Method Summary
Modifier and TypeMethodDescriptionprotected abstract void
addYear
(List<PdfEintrag> entries) Adds the year to each entry as this is might be not enclosed in the PDF bank statement entries.void
close()
Schließt das PDF Dokumentprotected abstract AbstractBankPDFPage
Liefert die PDFPage der geraden Seiten des Auszugs.protected abstract AbstractBankPDFPage
Liefert die PDFPage der ersten Seite des Auszugs.protected abstract AbstractBankPDFPage
Liefert die PDFPage der ungeraden Seiten des Auszugs.protected List<PdfEintrag>
getBeschreibungen
(AbstractBankPDFPage textAreas) Read all transaction description and removes found text after the endprotected List<PdfEintrag>
getBetraege
(AbstractBankPDFPage textAreas) Liefert die Beträge der Umsä auf dem PDFgetBic
(AbstractBankPDFPage textAreas) Liefert die BIC des PDF-Auszugesprotected List<PdfEintrag>
getBuchungsDaten
(AbstractBankPDFPage textAreas) Inspects the page to retrieve all transaction booking dates.Extracts all entries from the PDF bank statement and returns them in as a PdfBuchung list.protected List<PdfEintrag>
getFremdwaehrungen
(AbstractBankPDFPage textAreas) Liefert die Fremdwährungen.protected List<PdfEintrag>
getFremdwaehrungsBetraege
(AbstractBankPDFPage textAreas) Liefert den Fremdwährungbetrag.getIban
(AbstractBankPDFPage textAreas) Liefert die IBAN des PDF-Auszugesprotected String
getKarteninhaber
(AbstractBankPDFPage textAreas) Liefert den Karteninhaber des PDF-Auszugesprotected String
getKartenkonto
(AbstractBankPDFPage textAreas) Liefert das Kartenkonto des PDF-Auszugesprotected abstract int
Liefert die letzte Seite mit Umsätzenprotected abstract NumberFormat
Liefert das NumberFormat zum Parsen des Saldos.protected String
getRechungsDatum
(AbstractBankPDFPage textAreas) Retrieves a 'standard' date, thus a single word date without any spaces.
Can be overwritten in case the date something else.protected BigDecimal
getSaldo
(AbstractBankPDFPage textAreas) Liefert das Saldo des Auszugesprotected abstract AbstractTransactionCreator
Liefert den konkreten TransactionCreator der Bank.protected abstract void
removeAnnotations
(List<PdfEintrag> eintragsListe) Hier kann eine konkrete Implementierung noch Änderungen an der anderen Listen vornehmen.protected abstract void
removeAnnotationsBookingDates
(List<PdfEintrag> buchungenDatum) Hier kann eine konkrete Implementierung noch Änderungen an der Liste der Buchungsdaten vornehmen.protected abstract void
reOrder
(List<PdfBuchung> buchungen) Here a concrete implementation can add an order mechanism to the transaction list before the saldo is calculated.
-
Field Details
-
MAX_ONE_WORD
protected static final int MAX_ONE_WORDThreshold PDFBox value for keeping one word in one line.- See Also:
-
MAX_TWO_WORD
protected static final int MAX_TWO_WORDThreshold PDFBox value for keeping 2 words in one line.- See Also:
-
WORT_DELIMITER
The delimiter in the return string from the PDFBox extraction separating the positions and description values.- See Also:
-
WORT_INFO_LENGTH
protected static final int WORT_INFO_LENGTHEin extrahiertes Wort muss genau 3 Felder haben: PosX, PosY und das eigentliche Wort.- See Also:
-
rechungsDatum
Date of the bank statement -
buchungsDaten
List of effective dates for entries -
numFormat
Dezimalformatierer des Saldos -
document
protected org.apache.pdfbox.pdmodel.PDDocument documentDas PDF Document -
kartenNummer
Die Kreditkartennummer -
lastPage
protected int lastPageLast with transactions
-
-
Constructor Details
-
AbstractPdfExtractor
Constructs a new extractor with a byte array for teh given card number.- Parameters:
byteArray
-kartenNummer
-
-
AbstractPdfExtractor
Abstracter Konstruktor mit Angabe des PDF inputStreams und der Kartennummer. Sollte von der konkreten Implementierung aufgerufen werden.- Parameters:
inputStream
- das PDF als inputStream.kartenNummer
- die Kartennummer gegen die das PDF geprüft wird.
-
-
Method Details
-
close
public void close()Schließt das PDF Dokument -
getBic
Liefert die BIC des PDF-Auszuges- Parameters:
textAreas
- die Textarea in der die BIC-Position definiert ist.- Returns:
- die BIC
-
getExtract
Extracts all entries from the PDF bank statement and returns them in as a PdfBuchung list.- Returns:
- a List of PdfBuchung with all found entries.
- Throws:
InvalidCardNumberException
-
getIban
Liefert die IBAN des PDF-Auszuges- Parameters:
textAreas
- die Textarea in der die IBAN-Position definiert ist.- Returns:
- die IBAN
-
addYear
Adds the year to each entry as this is might be not enclosed in the PDF bank statement entries.- Parameters:
entries
-
-
getBankPdfPageEven
Liefert die PDFPage der geraden Seiten des Auszugs. Muss von der Unterklasse implementiert werden.- Returns:
- die AbstractBankPDFPage der geraden Seiten des Auszugs
- Throws:
IOException
-
getBankPdfPageFirst
Liefert die PDFPage der ersten Seite des Auszugs. Muss von der Unterklasse implementiert werden.- Returns:
- die AbstractBankPDFPage der ersten Seite des Auszugs
- Throws:
IOException
-
getBankPdfPageOdd
Liefert die PDFPage der ungeraden Seiten des Auszugs. Muss von der Unterklasse implementiert werden.- Returns:
- die AbstractBankPDFPage der ungeraden Seiten des Auszugs
- Throws:
IOException
-
getBeschreibungen
Read all transaction description and removes found text after the end- Parameters:
textAreas
- the area to extract the transaction description region from- Returns:
- a list with all found transaction description
-
getBetraege
Liefert die Beträge der Umsä auf dem PDF- Parameters:
textAreas
- die TextAre ader Beträge.- Returns:
- Liefert die Beträge
-
getBuchungsDaten
Inspects the page to retrieve all transaction booking dates.- Parameters:
textAreas
- the TextStripperArea to inspect- Returns:
- a list of
PdfEintrag>
with all found booking dates
-
getFremdwaehrungen
Liefert die Fremdwährungen. Kann von Unterklassen überschrieben werden.- Parameters:
textAreas
- Der Textbereich mit den Fremdwährungen.- Returns:
- List mit allen gefundenen Fremdwährungen
-
getFremdwaehrungsBetraege
Liefert den Fremdwährungbetrag. Kann von Unterklassen überschrieben werden.- Parameters:
textAreas
- Der Textbereich mit den Fremdwährungsbeträgen.- Returns:
- List mit allen gefundenen Fremdwährungsbeträgen
-
getKarteninhaber
Liefert den Karteninhaber des PDF-Auszuges- Parameters:
textAreas
- die TextArea mit dem Karteninhaber- Returns:
- dde Karteninhaber des PDF-Auszuges
-
getKartenkonto
Liefert das Kartenkonto des PDF-Auszuges- Parameters:
textAreas
- die TextArea mit der Kartenkonto- Returns:
- das Kartenkonto des PDF-Auszuges
-
getLastPage
Liefert die letzte Seite mit Umsätzen- Returns:
- die letzte Seite mit Umsätzen
- Throws:
IOException
-
getNumberFormat
Liefert das NumberFormat zum Parsen des Saldos. Muss von der Unterklasse implementiert werden.- Returns:
- das NumberFormat zum Parsen des Saldos
-
getRechungsDatum
Retrieves a 'standard' date, thus a single word date without any spaces.
Can be overwritten in case the date something else.- Parameters:
textAreas
-- Returns:
- the parsed invoice date
- Throws:
PdfExtractorException
- in case the date cannot be parsed
-
getSaldo
Liefert das Saldo des Auszuges- Parameters:
textAreas
- die textArea mit dem Saldo- Returns:
- das Saldo
-
getTransactionCreator
Liefert den konkreten TransactionCreator der Bank. Muss von der Unterklasse implementiert werden.- Returns:
- der konkreten TransactionCreator der Bank
-
removeAnnotations
Hier kann eine konkrete Implementierung noch Änderungen an der anderen Listen vornehmen. Zum Beispiel Kommentare/Werbung entfernen.- Parameters:
eintragsListe
-
-
removeAnnotationsBookingDates
Hier kann eine konkrete Implementierung noch Änderungen an der Liste der Buchungsdaten vornehmen. Zum Beispiel Kommentare/Werbung entfernen.- Parameters:
buchungenDatum
-
-
reOrder
Here a concrete implementation can add an order mechanism to the transaction list before the saldo is calculated. IMPORTANT: The newest transaction must be on top due to saldo calculation.- Parameters:
buchungen
-
-