diff options
7 files changed, 56 insertions, 112 deletions
diff --git a/pdf-as-pdfbox-3/src/main/kotlin/at/gv/egiz/pdfas/lib/impl/pdfbox3/Placeholder.kt b/pdf-as-pdfbox-3/src/main/kotlin/at/gv/egiz/pdfas/lib/impl/pdfbox3/Placeholder.kt index 705eb1fa..873b0ccd 100644 --- a/pdf-as-pdfbox-3/src/main/kotlin/at/gv/egiz/pdfas/lib/impl/pdfbox3/Placeholder.kt +++ b/pdf-as-pdfbox-3/src/main/kotlin/at/gv/egiz/pdfas/lib/impl/pdfbox3/Placeholder.kt @@ -17,6 +17,7 @@ import com.google.zxing.ReaderException import com.google.zxing.client.j2se.BufferedImageLuminanceSource import com.google.zxing.common.HybridBinarizer import org.apache.pdfbox.contentstream.PDFStreamEngine +import org.apache.pdfbox.contentstream.operator.Operator import org.apache.pdfbox.contentstream.operator.OperatorProcessor import org.apache.pdfbox.cos.COSBase import org.apache.pdfbox.cos.COSName @@ -254,9 +255,9 @@ object PDFBoxPlaceholderExtractor : PlaceholderExtractor { yieldAll((1..Int.MAX_VALUE).asSequence().map { i -> "${baseName}_${i}"}) }.first { !seenPlaceholderNames.contains(it) } - override fun processOperator(operation: String, arguments: List<COSBase>) { + override fun processOperator(operator: Operator, arguments: List<COSBase>) { run { - if (operation != "Do") return@run + if (operator.name != "Do") return@run val objectName = arguments[0] as COSName val xObject = resources.getXObject(objectName) if (xObject !is PDImageXObject) return@run @@ -308,7 +309,7 @@ object PDFBoxPlaceholderExtractor : PlaceholderExtractor { logger.debug("Found placeholder: {}", signaturePlaceholderData) placeholders.add(signaturePlaceholderData) } - super.processOperator(operation, arguments) + super.processOperator(operator, arguments) } } diff --git a/pdf-as-pdfbox-3/src/test/kotlin/at/gv/egiz/pdfas/lib/impl/pdfbox3/SignVerifyTest.kt b/pdf-as-pdfbox-3/src/test/java/at/gv/egiz/pdfas/lib/impl/pdfbox3/SignVerifyTest.kt index 500b15ed..500b15ed 100644 --- a/pdf-as-pdfbox-3/src/test/kotlin/at/gv/egiz/pdfas/lib/impl/pdfbox3/SignVerifyTest.kt +++ b/pdf-as-pdfbox-3/src/test/java/at/gv/egiz/pdfas/lib/impl/pdfbox3/SignVerifyTest.kt diff --git a/pdf-as-pdfbox-3/src/test/kotlin/at/gv/egiz/pdfas/lib/impl/sign/pdfbox3/PDFBoxPlaceholderExtractorTest.java b/pdf-as-pdfbox-3/src/test/java/at/gv/egiz/pdfas/lib/impl/sign/pdfbox3/PDFBoxPlaceholderExtractorTest.java index e766c385..e766c385 100644 --- a/pdf-as-pdfbox-3/src/test/kotlin/at/gv/egiz/pdfas/lib/impl/sign/pdfbox3/PDFBoxPlaceholderExtractorTest.java +++ b/pdf-as-pdfbox-3/src/test/java/at/gv/egiz/pdfas/lib/impl/sign/pdfbox3/PDFBoxPlaceholderExtractorTest.java diff --git a/pdf-as-pdfbox-3/src/test/kotlin/at/gv/egiz/pdfas/lib/impl/sign/pdfbox3/SignatureFieldsAndPlaceHolderExtractorTest.java b/pdf-as-pdfbox-3/src/test/java/at/gv/egiz/pdfas/lib/impl/sign/pdfbox3/SignatureFieldsAndPlaceHolderExtractorTest.java index e1a7f09b..bdf5b760 100644 --- a/pdf-as-pdfbox-3/src/test/kotlin/at/gv/egiz/pdfas/lib/impl/sign/pdfbox3/SignatureFieldsAndPlaceHolderExtractorTest.java +++ b/pdf-as-pdfbox-3/src/test/java/at/gv/egiz/pdfas/lib/impl/sign/pdfbox3/SignatureFieldsAndPlaceHolderExtractorTest.java @@ -5,13 +5,15 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; -import org.apache.pdfbox.pdmodel.PDDocument; +import at.gv.egiz.pdfas.lib.impl.pdfbox3.PDFBoxPlaceholderExtractor; +import lombok.SneakyThrows; +import lombok.val; +import org.apache.pdfbox.Loader; import org.junit.Assert; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.JUnit4; -import at.gv.egiz.pdfas.lib.impl.pdfbox2.placeholder.SignatureFieldsAndPlaceHolderExtractor; import at.gv.egiz.pdfas.lib.impl.placeholder.SignaturePlaceholderData; @RunWith(JUnit4.class) @@ -27,156 +29,148 @@ public class SignatureFieldsAndPlaceHolderExtractorTest { } @Test - public void notSigned(){ + public void notSigned() { SignaturePlaceholderData result = getNextSignaturePlaceHolder(getPath("new_qr_2-2.pdf")); - Assert.assertEquals("Image5",result.getPlaceholderName()); + Assert.assertEquals("Image5", result.getPlaceholderName()); } + @Test - public void signedOnce(){ + public void signedOnce() { SignaturePlaceholderData result = getNextSignaturePlaceHolder(getPath("new_qr_2_signed.pdf")); - Assert.assertEquals("Image8",result.getPlaceholderName()); + Assert.assertEquals("Image8", result.getPlaceholderName()); } + @Test - public void signedTwice(){ + public void signedTwice() { SignaturePlaceholderData result = getNextSignaturePlaceHolder(getPath("new_qr_2_signed_signed.pdf")); - Assert.assertEquals(null,result); + Assert.assertEquals(null, result); } + @Test - public void signedThrice(){ + public void signedThrice() { SignaturePlaceholderData result = getNextSignaturePlaceHolder(getPath("new_qr_2_signed_signed_signed.pdf")); - Assert.assertEquals(null,result); + Assert.assertEquals(null, result); } @Test - public void noPlaceHolder(){ + public void noPlaceHolder() { SignaturePlaceholderData result = getNextSignaturePlaceHolder(getPath("manySignFields.pdf")); - Assert.assertEquals(null,result); + Assert.assertEquals(null, result); } - + @Test public void firstQrCodeOnUnsignedDoc() { SignaturePlaceholderData result = getNextSignaturePlaceHolder(getPath("new_qr_2-2.pdf")); - Assert.assertEquals("Image5",result.getPlaceholderName()); - + Assert.assertEquals("Image5", result.getPlaceholderName()); + } - + @Test - public void subsequentCalls(){ + public void subsequentCalls() { SignaturePlaceholderData result = getNextSignaturePlaceHolder(getPath("new_qr_2_signed_signed_signed.pdf")); - Assert.assertEquals(null,result); + Assert.assertEquals(null, result); result = getNextSignaturePlaceHolder(getPath("new_qr_2_signed.pdf")); - Assert.assertEquals("Image8",result.getPlaceholderName()); + Assert.assertEquals("Image8", result.getPlaceholderName()); result = getNextSignaturePlaceHolder(getPath("new_qr_2-2.pdf")); - Assert.assertEquals("Image5",result.getPlaceholderName()); + Assert.assertEquals("Image5", result.getPlaceholderName()); result = getNextSignaturePlaceHolder(getPath("new_qr_2-2.pdf")); - Assert.assertEquals("Image5",result.getPlaceholderName()); + Assert.assertEquals("Image5", result.getPlaceholderName()); result = getNextSignaturePlaceHolder(getPath("new_qr_2-2.pdf")); - Assert.assertEquals("Image5",result.getPlaceholderName()); + Assert.assertEquals("Image5", result.getPlaceholderName()); result = getNextSignaturePlaceHolder(getPath("new_qr_2_signed.pdf")); - Assert.assertEquals("Image8",result.getPlaceholderName()); + Assert.assertEquals("Image8", result.getPlaceholderName()); result = getNextSignaturePlaceHolder(getPath("new_qr_2_signed_signed_signed.pdf")); - Assert.assertEquals(null,result); + Assert.assertEquals(null, result); result = getNextSignaturePlaceHolder(getPath("new_qr_2-2.pdf")); - Assert.assertEquals("Image5",result.getPlaceholderName()); + Assert.assertEquals("Image5", result.getPlaceholderName()); result = getNextSignaturePlaceHolder(getPath("new_qr_2_signed.pdf")); - Assert.assertEquals("Image8",result.getPlaceholderName()); + Assert.assertEquals("Image8", result.getPlaceholderName()); } + @Test - public void notSignedAndNoFields(){ + public void notSignedAndNoFields() { List<String> result = getPlaceHolders(getPath("new_qr_2-2.pdf")); List<String> expectedResult = new ArrayList<>(); - Assert.assertEquals(expectedResult,result); + Assert.assertEquals(expectedResult, result); } @Test - public void notSignedFields(){ + public void notSignedFields() { List<String> result = getPlaceHolders(getPath("manySignFields.pdf")); List<String> expectedResult = Arrays.asList("Signature_0", "Signature_1", "Signature_2", "Signature_3", "Signature_4", "Signature_5", "Signature_6", "Signature_7"); - Assert.assertEquals(expectedResult,result); + Assert.assertEquals(expectedResult, result); } @Test - public void signedOncePosition4FieldTest(){ + public void signedOncePosition4FieldTest() { List<String> result = getPlaceHolders(getPath("manySignFields_signed4.pdf")); List<String> expectedResult = Arrays.asList("Signature_0", "Signature_1", "Signature_2", "Signature_3", "Signature_5", "Signature_6", "Signature_7"); - Assert.assertEquals(expectedResult,result); + Assert.assertEquals(expectedResult, result); } @Test - public void multipleCallsFieldTest(){ + public void multipleCallsFieldTest() { List<String> result = getPlaceHolders(getPath("manySignFields_signed4.pdf")); List<String> expectedResult = Arrays.asList("Signature_0", "Signature_1", "Signature_2", "Signature_3", "Signature_5", "Signature_6", "Signature_7"); - Assert.assertEquals(expectedResult,result); + Assert.assertEquals(expectedResult, result); result = getPlaceHolders(getPath("manySignFields_signed4.pdf")); expectedResult = Arrays.asList("Signature_0", "Signature_1", "Signature_2", "Signature_3", "Signature_5", "Signature_6", "Signature_7"); - Assert.assertEquals(expectedResult,result); + Assert.assertEquals(expectedResult, result); result = getPlaceHolders(getPath("manySignFields.pdf")); expectedResult = Arrays.asList("Signature_0", "Signature_1", "Signature_2", "Signature_3", "Signature_4", "Signature_5", "Signature_6", "Signature_7"); - Assert.assertEquals(expectedResult,result); + Assert.assertEquals(expectedResult, result); result = getPlaceHolders(getPath("manySignFields.pdf")); expectedResult = Arrays.asList("Signature_0", "Signature_1", "Signature_2", "Signature_3", "Signature_4", "Signature_5", "Signature_6", "Signature_7"); - Assert.assertEquals(expectedResult,result); + Assert.assertEquals(expectedResult, result); result = getPlaceHolders(getPath("manySignFields_signed4.pdf")); expectedResult = Arrays.asList("Signature_0", "Signature_1", "Signature_2", "Signature_3", "Signature_5", "Signature_6", "Signature_7"); - Assert.assertEquals(expectedResult,result); + Assert.assertEquals(expectedResult, result); result = getPlaceHolders(getPath("manySignFields_signed4.pdf")); expectedResult = Arrays.asList("Signature_0", "Signature_1", "Signature_2", "Signature_3", "Signature_5", "Signature_6", "Signature_7"); - Assert.assertEquals(expectedResult,result); + Assert.assertEquals(expectedResult, result); result = getPlaceHolders(getPath("manySignFields.pdf")); expectedResult = Arrays.asList("Signature_0", "Signature_1", "Signature_2", "Signature_3", "Signature_4", "Signature_5", "Signature_6", "Signature_7"); - Assert.assertEquals(expectedResult,result); + Assert.assertEquals(expectedResult, result); } + @SneakyThrows private static List<String> getPlaceHolders(String filePath) { - try { - PDDocument doc = PDDocument.load(new File(filePath)); - List<String> results = SignatureFieldsAndPlaceHolderExtractor.findEmptySignatureFields(doc); -// System.out.println(filePath + ": " + result); - return results; - } catch (Throwable e) { - e.printStackTrace(); + try (val doc = Loader.loadPDF(new File(filePath))) { + return PDFBoxPlaceholderExtractor.findEmptySignatureFields(doc); } - return null; } + @SneakyThrows public static SignaturePlaceholderData getNextSignaturePlaceHolder(String filePath) { - try { - PDDocument doc = PDDocument.load(new File(filePath)); - SignaturePlaceholderData result = - SignatureFieldsAndPlaceHolderExtractor.getNextUnusedSignaturePlaceHolder(doc); -// System.out.println(filePath + ": " + result); - return result; - } catch (Throwable e) { - e.printStackTrace(); + try (val doc = Loader.loadPDF(new File(filePath))) { + return PDFBoxPlaceholderExtractor.getNextUnusedSignaturePlaceholder(doc); } - return null; } - } diff --git a/pdf-as-pdfbox-3/src/test/kotlin/at/gv/egiz/pdfas/lib/impl/verify/pdfbox3/PDFBox2To3Test.kt b/pdf-as-pdfbox-3/src/test/java/at/gv/egiz/pdfas/lib/impl/verify/pdfbox3/PDFBox2To3Test.kt index 847018c4..847018c4 100644 --- a/pdf-as-pdfbox-3/src/test/kotlin/at/gv/egiz/pdfas/lib/impl/verify/pdfbox3/PDFBox2To3Test.kt +++ b/pdf-as-pdfbox-3/src/test/java/at/gv/egiz/pdfas/lib/impl/verify/pdfbox3/PDFBox2To3Test.kt diff --git a/pdf-as-pdfbox-3/src/test/kotlin/at/gv/egiz/pdfas/lib/impl/sign/pdfbox3/TTFFontTest.java b/pdf-as-pdfbox-3/src/test/kotlin/at/gv/egiz/pdfas/lib/impl/sign/pdfbox3/TTFFontTest.java deleted file mode 100644 index ce395785..00000000 --- a/pdf-as-pdfbox-3/src/test/kotlin/at/gv/egiz/pdfas/lib/impl/sign/pdfbox3/TTFFontTest.java +++ /dev/null @@ -1,46 +0,0 @@ -package at.gv.egiz.pdfas.lib.impl.sign.pdfbox3; - -import java.io.File; -import java.util.Iterator; -import java.util.List; - -import org.apache.pdfbox.cos.COSBase; -import org.apache.pdfbox.cos.COSDictionary; -import org.apache.pdfbox.cos.COSName; -import org.apache.pdfbox.cos.COSObject; -import org.apache.pdfbox.pdmodel.PDDocument; - -public class TTFFontTest { - - public static void main(String[] args) { - try { - PDDocument doc = PDDocument.load(new File("/home/afitzek/Downloads/pdf_groesse/willenserklaerung_signedByUser.pdf")); - - List<COSObject> cosObjects = doc.getDocument().getObjectsByType(COSName.FONT); - - Iterator<COSObject> cosObjectIt = cosObjects.iterator(); - - while(cosObjectIt.hasNext()) { - COSObject cosObject = cosObjectIt.next(); - COSBase subType = ((COSDictionary)cosObject.getObject()).getItem(COSName.SUBTYPE); - COSBase baseFont = ((COSDictionary)cosObject.getObject()).getItem(COSName.BASE_FONT); - COSBase aTest = ((COSDictionary)cosObject.getObject()).getItem(COSName.A); - - System.out.println(aTest); - - if(subType.equals(COSName.TRUE_TYPE)) { - System.out.println("Object Number: " + cosObject.getObjectNumber() + - subType.toString()); - System.out.println(" BaseFont: " + baseFont.toString()); - } - - - } - - - } catch(Throwable e) { - e.printStackTrace(); - } - } - -} diff --git a/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/config/PdfAsWebSpringConfiguration.java b/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/config/PdfAsWebSpringConfiguration.java index 631247e2..2a64307a 100644 --- a/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/config/PdfAsWebSpringConfiguration.java +++ b/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/config/PdfAsWebSpringConfiguration.java @@ -15,9 +15,4 @@ public class PdfAsWebSpringConfiguration { @Value("${pdf-as-web.conf}") @Getter @NonNull String pdfAsWebConfPath; - - /** then also add pdf-as-web.properties itself as a spring property source (so it supplements application.properties) */ - @Configuration - @PropertySource("file:${pdf-as-web.conf}") - public static class AsSpringPropertySource {} } |
