[
https://issues.apache.org/jira/browse/CAMEL-11976?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16235627#comment-16235627
]
ASF GitHub Bot commented on CAMEL-11976:
----------------------------------------
oscerd closed pull request #2073: CAMEL-11976: Align pdfbox versions to 2.0.6
URL: https://github.com/apache/camel/pull/2073
This is a PR merged from a forked repository.
As GitHub hides the original diff on merge, it is displayed below for
the sake of provenance:
As this is a foreign pull request (from a fork), the diff is supplied
below (as it won't show otherwise due to GitHub magic):
diff --git a/components/camel-fop/pom.xml b/components/camel-fop/pom.xml
index b3289378141..e4635515057 100644
--- a/components/camel-fop/pom.xml
+++ b/components/camel-fop/pom.xml
@@ -72,7 +72,7 @@
<artifactId>avalon-framework-impl</artifactId>
<version>${avalon-version}</version>
</dependency>
-
+
<!-- for testing -->
<dependency>
<groupId>org.apache.camel</groupId>
@@ -82,10 +82,21 @@
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>pdfbox</artifactId>
- <version>${pdfbox-version}</version>
<scope>test</scope>
</dependency>
-
+ <dependency>
+ <groupId>org.bouncycastle</groupId>
+ <artifactId>bcprov-jdk15on</artifactId>
+ <version>${bouncycastle-version}</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.bouncycastle</groupId>
+ <artifactId>bcmail-jdk15on</artifactId>
+ <version>${bouncycastle-version}</version>
+ <scope>test</scope>
+ </dependency>
+
<!-- Xalan Serializer dependencies are not -->
<!-- correctly imported from batik for tests -->
<!-- and as such they will fail. Must add to -->
@@ -96,7 +107,7 @@
<version>${xalan-version}</version>
<scope>test</scope>
</dependency>
-
+
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
diff --git
a/components/camel-fop/src/test/java/org/apache/camel/component/fop/FopComponentTest.java
b/components/camel-fop/src/test/java/org/apache/camel/component/fop/FopComponentTest.java
index 7111ac3637b..249e111d845 100644
---
a/components/camel-fop/src/test/java/org/apache/camel/component/fop/FopComponentTest.java
+++
b/components/camel-fop/src/test/java/org/apache/camel/component/fop/FopComponentTest.java
@@ -16,6 +16,7 @@
*/
package org.apache.camel.component.fop;
+import java.io.File;
import java.io.FileInputStream;
import org.apache.camel.EndpointInject;
@@ -36,7 +37,7 @@
@Produce(uri = "direct:start")
protected ProducerTemplate template;
-
+
@Override
@Before
public void setUp() throws Exception {
@@ -53,7 +54,7 @@ public void createPdfUsingXmlDataAndXsltTransformation()
throws Exception {
template.sendBody(inputStream);
resultEndpoint.assertIsSatisfied();
- PDDocument document = PDDocument.load("target/data/result.pdf");
+ PDDocument document = PDDocument.load(new
File("target/data/result.pdf"));
String pdfText = FopHelper.extractTextFrom(document);
assertTrue(pdfText.contains("Project")); //from xsl template
assertTrue(pdfText.contains("John Doe")); //from data xml
@@ -62,7 +63,7 @@ public void createPdfUsingXmlDataAndXsltTransformation()
throws Exception {
Exchange exchange = resultEndpoint.getReceivedExchanges().get(0);
assertEquals("Header value is lost!", "bar",
exchange.getIn().getHeader("foo"));
}
-
+
@Override
protected RouteBuilder createRouteBuilder() {
return new RouteBuilder() {
diff --git
a/components/camel-fop/src/test/java/org/apache/camel/component/fop/FopEndpointTest.java
b/components/camel-fop/src/test/java/org/apache/camel/component/fop/FopEndpointTest.java
index 884300ba98a..9805fccbebd 100644
---
a/components/camel-fop/src/test/java/org/apache/camel/component/fop/FopEndpointTest.java
+++
b/components/camel-fop/src/test/java/org/apache/camel/component/fop/FopEndpointTest.java
@@ -80,12 +80,15 @@ public void encryptPdfWithUserPassword() throws Exception {
Endpoint endpoint = context().getEndpoint("fop:pdf");
Producer producer = endpoint.createProducer();
Exchange exchange = new DefaultExchange(context);
- exchange.getIn().setHeader("CamelFop.Encrypt.userPassword", "secret");
+ final String password = "secret";
+ exchange.getIn().setHeader("CamelFop.Encrypt.userPassword", password);
exchange.getIn().setBody(FopHelper.decorateTextWithXSLFO("Test
Content"));
producer.process(exchange);
- PDDocument document = getDocumentFrom(exchange);
- assertTrue(document.isEncrypted());
+ try (InputStream inputStream =
exchange.getOut().getBody(InputStream.class)) {
+ PDDocument document = PDDocument.load(inputStream, password);
+ assertTrue(document.isEncrypted());
+ }
}
@Test
diff --git
a/components/camel-fop/src/test/java/org/apache/camel/component/fop/FopHelper.java
b/components/camel-fop/src/test/java/org/apache/camel/component/fop/FopHelper.java
index fee920c1eef..b016ec1530a 100644
---
a/components/camel-fop/src/test/java/org/apache/camel/component/fop/FopHelper.java
+++
b/components/camel-fop/src/test/java/org/apache/camel/component/fop/FopHelper.java
@@ -21,29 +21,14 @@
import java.io.Writer;
import org.apache.pdfbox.cos.COSName;
-import org.apache.pdfbox.exceptions.CryptographyException;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDDocumentInformation;
-import org.apache.pdfbox.pdmodel.encryption.BadSecurityHandlerException;
-import org.apache.pdfbox.pdmodel.encryption.DecryptionMaterial;
-import org.apache.pdfbox.pdmodel.encryption.StandardDecryptionMaterial;
-import org.apache.pdfbox.util.PDFTextStripper;
+import org.apache.pdfbox.text.PDFTextStripper;
public final class FopHelper {
private FopHelper() {
}
- //decryption requires additional libraries
- public static void decryptPDFN(PDDocument document, String password) throws
- IOException, CryptographyException, BadSecurityHandlerException {
- if (document.isEncrypted()) {
- DecryptionMaterial decryptionMaterial = new
StandardDecryptionMaterial(password);
- document.openProtection(decryptionMaterial);
- } else {
- throw new RuntimeException("Document not encrypted");
- }
- }
-
public static String extractTextFrom(PDDocument document) throws
IOException {
Writer output = new StringWriter();
PDFTextStripper stripper = new PDFTextStripper();
@@ -53,7 +38,7 @@ public static String extractTextFrom(PDDocument document)
throws IOException {
public static String getDocumentMetadataValue(PDDocument document, COSName
name) {
PDDocumentInformation info = document.getDocumentInformation();
- return info.getDictionary().getString(name);
+ return info.getCOSObject().getString(name);
}
public static String decorateTextWithXSLFO(String text) {
diff --git
a/components/camel-pdf/src/main/java/org/apache/camel/component/pdf/PdfConfiguration.java
b/components/camel-pdf/src/main/java/org/apache/camel/component/pdf/PdfConfiguration.java
index 066d8012442..a836540d6b4 100644
---
a/components/camel-pdf/src/main/java/org/apache/camel/component/pdf/PdfConfiguration.java
+++
b/components/camel-pdf/src/main/java/org/apache/camel/component/pdf/PdfConfiguration.java
@@ -45,14 +45,14 @@
private static final Map<String, PDRectangle> PAGE_MAP = new
HashMap<String, PDRectangle>();
static {
- PAGE_MAP.put(PAGE_SIZE_A0, PDPage.PAGE_SIZE_A0);
- PAGE_MAP.put(PAGE_SIZE_A1, PDPage.PAGE_SIZE_A1);
- PAGE_MAP.put(PAGE_SIZE_A2, PDPage.PAGE_SIZE_A2);
- PAGE_MAP.put(PAGE_SIZE_A3, PDPage.PAGE_SIZE_A3);
- PAGE_MAP.put(PAGE_SIZE_A4, PDPage.PAGE_SIZE_A4);
- PAGE_MAP.put(PAGE_SIZE_A5, PDPage.PAGE_SIZE_A5);
- PAGE_MAP.put(PAGE_SIZE_A6, PDPage.PAGE_SIZE_A6);
- PAGE_MAP.put(PAGE_SIZE_LETTER, PDPage.PAGE_SIZE_LETTER);
+ PAGE_MAP.put(PAGE_SIZE_A0, PDRectangle.A0);
+ PAGE_MAP.put(PAGE_SIZE_A1, PDRectangle.A1);
+ PAGE_MAP.put(PAGE_SIZE_A2, PDRectangle.A2);
+ PAGE_MAP.put(PAGE_SIZE_A3, PDRectangle.A3);
+ PAGE_MAP.put(PAGE_SIZE_A4, PDRectangle.A4);
+ PAGE_MAP.put(PAGE_SIZE_A5, PDRectangle.A5);
+ PAGE_MAP.put(PAGE_SIZE_A6, PDRectangle.A6);
+ PAGE_MAP.put(PAGE_SIZE_LETTER, PDRectangle.LETTER);
}
@UriPath(description = "Operation type")
@@ -69,7 +69,7 @@
@UriParam(defaultValue = "14")
private float fontSize = 14;
@UriParam(defaultValue = "PAGE_SIZE_A4", enums =
"PAGE_SIZE_A0,PAGE_SIZE_A1,PAGE_SIZE_A2,PAGE_SIZE_A3,PAGE_SIZE_A4,PAGE_SIZE_A5,PAGE_SIZE_A6,PAGE_SIZE_LETTER")
- private PDRectangle pageSize = PDPage.PAGE_SIZE_A4;
+ private PDRectangle pageSize = PDRectangle.A4;
@UriParam(defaultValue = "Helvetica")
private PDFont font = PDType1Font.HELVETICA;
@UriParam(defaultValue = "lineTermination")
@@ -169,7 +169,7 @@ public void setFont(PDFont font) {
}
public void setFont(String font) {
- setFont(PDType1Font.getStandardFont(font));
+ setFont(Standard14Fonts.getByName(font));
}
public TextProcessingFactory getTextProcessingFactory() {
diff --git
a/components/camel-pdf/src/main/java/org/apache/camel/component/pdf/PdfProducer.java
b/components/camel-pdf/src/main/java/org/apache/camel/component/pdf/PdfProducer.java
index be60aff6750..11b73130908 100644
---
a/components/camel-pdf/src/main/java/org/apache/camel/component/pdf/PdfProducer.java
+++
b/components/camel-pdf/src/main/java/org/apache/camel/component/pdf/PdfProducer.java
@@ -29,15 +29,11 @@
import org.apache.camel.component.pdf.text.TextProcessingAbstractFactory;
import org.apache.camel.component.pdf.text.WriteStrategy;
import org.apache.camel.impl.DefaultProducer;
-import org.apache.pdfbox.exceptions.COSVisitorException;
-import org.apache.pdfbox.exceptions.CryptographyException;
-import org.apache.pdfbox.exceptions.InvalidPasswordException;
import org.apache.pdfbox.pdmodel.PDDocument;
-import org.apache.pdfbox.pdmodel.encryption.BadSecurityHandlerException;
import org.apache.pdfbox.pdmodel.encryption.DecryptionMaterial;
import org.apache.pdfbox.pdmodel.encryption.ProtectionPolicy;
import org.apache.pdfbox.pdmodel.encryption.StandardProtectionPolicy;
-import org.apache.pdfbox.util.PDFTextStripper;
+import org.apache.pdfbox.text.PDFTextStripper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -83,7 +79,7 @@ public void process(Exchange exchange) throws Exception {
exchange.getOut().setBody(result);
}
- private Object doAppend(Exchange exchange) throws IOException,
BadSecurityHandlerException, CryptographyException, InvalidPasswordException,
COSVisitorException {
+ private Object doAppend(Exchange exchange) throws IOException {
LOG.debug("Got {} operation, going to append text to provided pdf.",
pdfConfiguration.getOperation());
String body = exchange.getIn().getBody(String.class);
PDDocument document =
exchange.getIn().getHeader(PDF_DOCUMENT_HEADER_NAME, PDDocument.class);
@@ -93,16 +89,6 @@ private Object doAppend(Exchange exchange) throws
IOException, BadSecurityHandle
}
if (document.isEncrypted()) {
- DecryptionMaterial decryptionMaterial =
exchange.getIn().getHeader(DECRYPTION_MATERIAL_HEADER_NAME,
- DecryptionMaterial.class);
- if (decryptionMaterial == null) {
- throw new IllegalArgumentException(String.format("%s header is
expected for %s operation "
- + "on encrypted document",
- DECRYPTION_MATERIAL_HEADER_NAME,
- pdfConfiguration.getOperation()));
- }
-
- document.openProtection(decryptionMaterial);
document.setAllSecurityToBeRemoved(true);
}
@@ -115,27 +101,16 @@ private Object doAppend(Exchange exchange) throws
IOException, BadSecurityHandle
return byteArrayOutputStream;
}
- private String doExtractText(Exchange exchange) throws IOException,
CryptographyException, InvalidPasswordException, BadSecurityHandlerException {
+ private String doExtractText(Exchange exchange) throws IOException {
LOG.debug("Got {} operation, going to extract text from provided
pdf.", pdfConfiguration.getOperation());
PDDocument document = exchange.getIn().getBody(PDDocument.class);
- if (document.isEncrypted()) {
- DecryptionMaterial decryptionMaterial =
exchange.getIn().getHeader(DECRYPTION_MATERIAL_HEADER_NAME,
- DecryptionMaterial.class);
- if (decryptionMaterial == null) {
- throw new IllegalArgumentException(String.format("%s header is
expected for %s operation "
- + "on encrypted document",
- DECRYPTION_MATERIAL_HEADER_NAME,
- pdfConfiguration.getOperation()));
- }
- document.openProtection(decryptionMaterial);
- }
PDFTextStripper pdfTextStripper = new PDFTextStripper();
return pdfTextStripper.getText(document);
}
- private OutputStream doCreate(Exchange exchange) throws IOException,
BadSecurityHandlerException, COSVisitorException {
+ private OutputStream doCreate(Exchange exchange) throws IOException {
LOG.debug("Got {} operation, going to create and write provided string
to pdf document.",
pdfConfiguration.getOperation());
String body = exchange.getIn().getBody(String.class);
@@ -148,7 +123,7 @@ private OutputStream doCreate(Exchange exchange) throws
IOException, BadSecurity
return byteArrayOutputStream;
}
- private void appendToPdfDocument(String text, PDDocument document,
ProtectionPolicy protectionPolicy) throws IOException,
BadSecurityHandlerException {
+ private void appendToPdfDocument(String text, PDDocument document,
ProtectionPolicy protectionPolicy) throws IOException {
Collection<String> words = splitStrategy.split(text);
Collection<String> lines = lineBuilderStrategy.buildLines(words);
writeStrategy.write(lines, document);
diff --git
a/components/camel-pdf/src/main/java/org/apache/camel/component/pdf/Standard14Fonts.java
b/components/camel-pdf/src/main/java/org/apache/camel/component/pdf/Standard14Fonts.java
new file mode 100644
index 00000000000..06c2f37aa60
--- /dev/null
+++
b/components/camel-pdf/src/main/java/org/apache/camel/component/pdf/Standard14Fonts.java
@@ -0,0 +1,59 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.pdf;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.pdfbox.pdmodel.font.PDType1Font;
+
+/**
+ * The 14 standard fonts by name. Created here because there is no way to get
a standard font by name in {@code pdfbox} 2.0
+ *
+ * @author <a href="https://github.com/ppalaga">Peter Palaga</a>
+ */
+public class Standard14Fonts {
+ private static final Map<String, PDType1Font> FONTS_BY_NAME = new
HashMap<>();
+ static
+ {
+ FONTS_BY_NAME.put(PDType1Font.TIMES_ROMAN.getBaseFont(),
PDType1Font.TIMES_ROMAN);
+ FONTS_BY_NAME.put(PDType1Font.TIMES_BOLD.getBaseFont(),
PDType1Font.TIMES_BOLD);
+ FONTS_BY_NAME.put(PDType1Font.TIMES_ITALIC.getBaseFont(),
PDType1Font.TIMES_ITALIC);
+ FONTS_BY_NAME.put(PDType1Font.TIMES_BOLD_ITALIC.getBaseFont(),
PDType1Font.TIMES_BOLD_ITALIC);
+ FONTS_BY_NAME.put(PDType1Font.HELVETICA.getBaseFont(),
PDType1Font.HELVETICA);
+ FONTS_BY_NAME.put(PDType1Font.HELVETICA_BOLD.getBaseFont(),
PDType1Font.HELVETICA_BOLD);
+ FONTS_BY_NAME.put(PDType1Font.HELVETICA_OBLIQUE.getBaseFont(),
PDType1Font.HELVETICA_OBLIQUE);
+ FONTS_BY_NAME.put(PDType1Font.HELVETICA_BOLD_OBLIQUE.getBaseFont(),
PDType1Font.HELVETICA_BOLD_OBLIQUE);
+ FONTS_BY_NAME.put(PDType1Font.COURIER.getBaseFont(),
PDType1Font.COURIER);
+ FONTS_BY_NAME.put(PDType1Font.COURIER_BOLD.getBaseFont(),
PDType1Font.COURIER_BOLD);
+ FONTS_BY_NAME.put(PDType1Font.COURIER_OBLIQUE.getBaseFont(),
PDType1Font.COURIER_OBLIQUE);
+ FONTS_BY_NAME.put(PDType1Font.COURIER_BOLD_OBLIQUE.getBaseFont(),
PDType1Font.COURIER_BOLD_OBLIQUE);
+ FONTS_BY_NAME.put(PDType1Font.SYMBOL.getBaseFont(),
PDType1Font.SYMBOL);
+ FONTS_BY_NAME.put(PDType1Font.ZAPF_DINGBATS.getBaseFont(),
PDType1Font.ZAPF_DINGBATS);
+ }
+
+ /**
+ * Get one of the 14 standard fonts by base font name.
+ *
+ * @param fontName the base font name, such as {@code "Helvetica"} or
{@code "Helvetica-Bold"}
+ * @return the {@link PDType1Font} or null, of the {@code fontName} is not
mapped to any font
+ */
+ public static PDType1Font getByName(String fontName) {
+ return FONTS_BY_NAME.get(fontName);
+ }
+
+}
diff --git
a/components/camel-pdf/src/main/java/org/apache/camel/component/pdf/text/DefaultWriteStrategy.java
b/components/camel-pdf/src/main/java/org/apache/camel/component/pdf/text/DefaultWriteStrategy.java
index 188d846d3b2..e5f3f7b7c30 100644
---
a/components/camel-pdf/src/main/java/org/apache/camel/component/pdf/text/DefaultWriteStrategy.java
+++
b/components/camel-pdf/src/main/java/org/apache/camel/component/pdf/text/DefaultWriteStrategy.java
@@ -22,7 +22,7 @@
import org.apache.camel.component.pdf.PdfConfiguration;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
-import org.apache.pdfbox.pdmodel.edit.PDPageContentStream;
+import org.apache.pdfbox.pdmodel.PDPageContentStream;
/**
* Writes given lines to PDF document. If document already contains some text
then new text will be appended
diff --git
a/components/camel-pdf/src/main/java/org/apache/camel/component/pdf/text/PdfUtils.java
b/components/camel-pdf/src/main/java/org/apache/camel/component/pdf/text/PdfUtils.java
index cc910f47cb1..2574f5d751d 100644
---
a/components/camel-pdf/src/main/java/org/apache/camel/component/pdf/text/PdfUtils.java
+++
b/components/camel-pdf/src/main/java/org/apache/camel/component/pdf/text/PdfUtils.java
@@ -26,11 +26,11 @@
private PdfUtils() { }
public static float getAverageFontHeight(PDFont font, float fontSize)
throws IOException {
- return font.getFontHeight("A".getBytes(), 0, 1) / PDF_PIXEL_SIZE *
fontSize;
+ return font.getBoundingBox().getHeight() / PDF_PIXEL_SIZE * fontSize;
}
public static float getFontHeightForString(String str, PDFont font, float
fontSize) throws IOException {
- return font.getFontHeight(str.getBytes(), 0, 1) / PDF_PIXEL_SIZE *
fontSize;
+ return font.getBoundingBox().getHeight() / PDF_PIXEL_SIZE * fontSize;
}
public static float getFontWidth(String str, PDFont font, float fontSize)
throws IOException {
diff --git
a/components/camel-pdf/src/test/java/org/apache/camel/component/pdf/PdfAppendTest.java
b/components/camel-pdf/src/test/java/org/apache/camel/component/pdf/PdfAppendTest.java
index 8269f9663e4..4ca5c0c6e5e 100644
---
a/components/camel-pdf/src/test/java/org/apache/camel/component/pdf/PdfAppendTest.java
+++
b/components/camel-pdf/src/test/java/org/apache/camel/component/pdf/PdfAppendTest.java
@@ -30,12 +30,13 @@
import org.apache.camel.test.junit4.CamelTestSupport;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
-import org.apache.pdfbox.pdmodel.edit.PDPageContentStream;
+import org.apache.pdfbox.pdmodel.PDPageContentStream;
+import org.apache.pdfbox.pdmodel.common.PDRectangle;
import org.apache.pdfbox.pdmodel.encryption.AccessPermission;
import org.apache.pdfbox.pdmodel.encryption.StandardDecryptionMaterial;
import org.apache.pdfbox.pdmodel.encryption.StandardProtectionPolicy;
import org.apache.pdfbox.pdmodel.font.PDType1Font;
-import org.apache.pdfbox.util.PDFTextStripper;
+import org.apache.pdfbox.text.PDFTextStripper;
import org.junit.Before;
import org.junit.Test;
@@ -58,7 +59,7 @@ public void testAppend() throws Exception {
final String originalText = "Test";
final String textToAppend = "Append";
PDDocument document = new PDDocument();
- PDPage page = new PDPage(PDPage.PAGE_SIZE_A4);
+ PDPage page = new PDPage(PDRectangle.A4);
document.addPage(page);
PDPageContentStream contentStream = new PDPageContentStream(document,
page);
contentStream.setFont(PDType1Font.HELVETICA, 12);
@@ -98,7 +99,7 @@ public void testAppendEncrypted() throws Exception {
final String originalText = "Test";
final String textToAppend = "Append";
PDDocument document = new PDDocument();
- PDPage page = new PDPage(PDPage.PAGE_SIZE_A4);
+ PDPage page = new PDPage(PDRectangle.A4);
document.addPage(page);
PDPageContentStream contentStream = new PDPageContentStream(document,
page);
contentStream.setFont(PDType1Font.HELVETICA, 12);
@@ -121,7 +122,7 @@ public void testAppendEncrypted() throws Exception {
document.save(output);
// Encryption happens after saving.
- PDDocument encryptedDocument = PDDocument.load(new
ByteArrayInputStream(output.toByteArray()));
+ PDDocument encryptedDocument = PDDocument.load(new
ByteArrayInputStream(output.toByteArray()), userPass);
Map<String, Object> headers = new HashMap<String, Object>();
headers.put(PdfHeaderConstants.PDF_DOCUMENT_HEADER_NAME,
encryptedDocument);
@@ -136,7 +137,7 @@ public boolean matches(Exchange exchange) {
Object body = exchange.getIn().getBody();
assertThat(body, instanceOf(ByteArrayOutputStream.class));
try {
- PDDocument doc = PDDocument.load(new
ByteArrayInputStream(((ByteArrayOutputStream) body).toByteArray()));
+ PDDocument doc = PDDocument.load(new
ByteArrayInputStream(((ByteArrayOutputStream) body).toByteArray()), userPass);
PDFTextStripper pdfTextStripper = new PDFTextStripper();
String text = pdfTextStripper.getText(doc);
assertEquals(2, doc.getNumberOfPages());
diff --git
a/components/camel-pdf/src/test/java/org/apache/camel/component/pdf/PdfCreationTest.java
b/components/camel-pdf/src/test/java/org/apache/camel/component/pdf/PdfCreationTest.java
index c74e1fb5bf7..07093f55e86 100644
---
a/components/camel-pdf/src/test/java/org/apache/camel/component/pdf/PdfCreationTest.java
+++
b/components/camel-pdf/src/test/java/org/apache/camel/component/pdf/PdfCreationTest.java
@@ -29,7 +29,7 @@
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.encryption.AccessPermission;
import org.apache.pdfbox.pdmodel.encryption.StandardProtectionPolicy;
-import org.apache.pdfbox.util.PDFTextStripper;
+import org.apache.pdfbox.text.PDFTextStripper;
import org.junit.Before;
import org.junit.Test;
@@ -93,9 +93,8 @@ public boolean matches(Exchange exchange) {
Object body = exchange.getIn().getBody();
assertThat(body, instanceOf(ByteArrayOutputStream.class));
try {
- PDDocument doc = PDDocument.load(new
ByteArrayInputStream(((ByteArrayOutputStream) body).toByteArray()));
+ PDDocument doc = PDDocument.load(new
ByteArrayInputStream(((ByteArrayOutputStream) body).toByteArray()), userPass);
assertTrue("Expected encrypted document",
doc.isEncrypted());
- doc.decrypt(userPass);
assertFalse("Printing should not be permitted",
doc.getCurrentAccessPermission().canPrint());
PDFTextStripper pdfTextStripper = new PDFTextStripper();
String text = pdfTextStripper.getText(doc);
diff --git
a/components/camel-pdf/src/test/java/org/apache/camel/component/pdf/PdfTextExtractionTest.java
b/components/camel-pdf/src/test/java/org/apache/camel/component/pdf/PdfTextExtractionTest.java
index 6d93d8a4ab6..9cc701917ed 100644
---
a/components/camel-pdf/src/test/java/org/apache/camel/component/pdf/PdfTextExtractionTest.java
+++
b/components/camel-pdf/src/test/java/org/apache/camel/component/pdf/PdfTextExtractionTest.java
@@ -27,7 +27,8 @@
import org.apache.camel.test.junit4.CamelTestSupport;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
-import org.apache.pdfbox.pdmodel.edit.PDPageContentStream;
+import org.apache.pdfbox.pdmodel.PDPageContentStream;
+import org.apache.pdfbox.pdmodel.common.PDRectangle;
import org.apache.pdfbox.pdmodel.encryption.AccessPermission;
import org.apache.pdfbox.pdmodel.encryption.StandardDecryptionMaterial;
import org.apache.pdfbox.pdmodel.encryption.StandardProtectionPolicy;
@@ -46,7 +47,7 @@
public void testExtractText() throws Exception {
final String expectedText = "Test string";
PDDocument document = new PDDocument();
- PDPage page = new PDPage(PDPage.PAGE_SIZE_A4);
+ PDPage page = new PDPage(PDRectangle.A4);
document.addPage(page);
PDPageContentStream contentStream = new PDPageContentStream(document,
page);
contentStream.setFont(PDType1Font.HELVETICA, 12);
@@ -82,7 +83,7 @@ public void testExtractTextFromEncrypted() throws Exception {
PDDocument document = new PDDocument();
final String expectedText = "Test string";
- PDPage page = new PDPage(PDPage.PAGE_SIZE_A4);
+ PDPage page = new PDPage(PDRectangle.A4);
document.addPage(page);
PDPageContentStream contentStream = new PDPageContentStream(document,
page);
contentStream.setFont(PDType1Font.HELVETICA, 12);
@@ -98,7 +99,7 @@ public void testExtractTextFromEncrypted() throws Exception {
document.save(output);
// Encryption happens after saving.
- PDDocument encryptedDocument = PDDocument.load(new
ByteArrayInputStream(output.toByteArray()));
+ PDDocument encryptedDocument = PDDocument.load(new
ByteArrayInputStream(output.toByteArray()), userPass);
template.sendBodyAndHeader("direct:start",
encryptedDocument,
diff --git a/parent/pom.xml b/parent/pom.xml
index 7c5878bd70f..61b5de8ee48 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -558,7 +558,8 @@
<pax-exam-version>4.9.2</pax-exam-version>
<pax-tiny-bundle-version>1.3.2</pax-tiny-bundle-version>
<pax-logging-version>1.8.6</pax-logging-version>
- <pdfbox-version>1.8.13</pdfbox-version>
+ <pdfbox18-version>1.8.13</pdfbox18-version>
+ <pdfbox-version>2.0.6</pdfbox-version>
<pgjdbc-ng-driver-version>0.7.1</pgjdbc-ng-driver-version>
<protobuf-version>3.3.0</protobuf-version>
<protobuf-guava-version>20.0</protobuf-guava-version>
@@ -4717,6 +4718,34 @@
<version>${maven-archetype-packaging-version}</version>
</dependency>
+
+ <!-- pdfbox -->
+ <dependency>
+ <groupId>org.apache.pdfbox</groupId>
+ <artifactId>jempbox</artifactId>
+ <version>${pdfbox18-version}</version><!-- because of Tika -->
+ </dependency>
+ <dependency>
+ <groupId>org.apache.pdfbox</groupId>
+ <artifactId>fontbox</artifactId>
+ <version>${pdfbox-version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.pdfbox</groupId>
+ <artifactId>pdfbox</artifactId>
+ <version>${pdfbox-version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.pdfbox</groupId>
+ <artifactId>pdfbox-tools</artifactId>
+ <version>${pdfbox-version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.pdfbox</groupId>
+ <artifactId>pdfbox-debugger</artifactId>
+ <version>${pdfbox-version}</version>
+ </dependency>
+
</dependencies>
</dependencyManagement>
diff --git a/platforms/karaf/features/src/main/resources/features.xml
b/platforms/karaf/features/src/main/resources/features.xml
index 6cbdbba678a..b14d60e1b3c 100644
--- a/platforms/karaf/features/src/main/resources/features.xml
+++ b/platforms/karaf/features/src/main/resources/features.xml
@@ -351,7 +351,7 @@
<bundle
dependency='true'>mvn:net.openhft/chronicle-map/${chronicle-map-version}</bundle>
<bundle
dependency='true'>mvn:net.openhft/chronicle-queue/${chronicle-queue-version}</bundle>
<bundle
dependency='true'>mvn:net.openhft/chronicle-engine/${chronicle-engine-version}</bundle>
- <bundle
dependency='true'>mvn:net.openhft/compiler/${openhft-compiler-version}</bundle>
+ <bundle
dependency='true'>mvn:net.openhft/compiler/${openhft-compiler-version}</bundle>
<bundle>mvn:org.apache.camel/camel-chronicle/${project.version}</bundle>
</feature>
<feature name='camel-chunk' version='${project.version}' resolver='(obr)'
start-level='50'>
@@ -837,7 +837,7 @@
<bundle
dependency='true'>wrap:mvn:com.auth0/java-jwt/${grpc-java-jwt-version}</bundle>
<bundle
dependency='true'>wrap:mvn:com.google.auth/google-auth-library-oauth2-http/${grpc-google-auth-library-version}</bundle>
<bundle
dependency='true'>wrap:mvn:com.google.auth/google-auth-library-credentials/${grpc-google-auth-library-version}</bundle>
- <bundle>mvn:org.apache.camel/camel-grpc/${project.version}</bundle>
+ <bundle>mvn:org.apache.camel/camel-grpc/${project.version}</bundle>
</feature>
<feature name='camel-gson' version='${project.version}' resolver='(obr)'
start-level='50'>
<feature version='${project.version}'>camel-core</feature>
@@ -1707,7 +1707,6 @@
<bundle
dependency='true'>mvn:org.bouncycastle/bcpkix-jdk15on/${bouncycastle-version}</bundle>
<bundle
dependency='true'>mvn:org.apache.pdfbox/pdfbox/${pdfbox-version}</bundle>
<bundle
dependency='true'>mvn:org.apache.pdfbox/fontbox/${pdfbox-version}</bundle>
- <bundle
dependency='true'>mvn:org.apache.pdfbox/jempbox/${pdfbox-version}</bundle>
<bundle>mvn:org.apache.camel/camel-pdf/${project.version}</bundle>
</feature>
<feature name='camel-pgevent' version='${project.version}' resolver='(obr)'
start-level='50'>
diff --git
a/platforms/spring-boot/spring-boot-dm/camel-spring-boot-dependencies/pom.xml
b/platforms/spring-boot/spring-boot-dm/camel-spring-boot-dependencies/pom.xml
index dca4625cfa3..8cac9afae17 100644
---
a/platforms/spring-boot/spring-boot-dm/camel-spring-boot-dependencies/pom.xml
+++
b/platforms/spring-boot/spring-boot-dm/camel-spring-boot-dependencies/pom.xml
@@ -3180,6 +3180,31 @@
<version>2.4.2</version>
</dependency>
<dependency>
+ <groupId>org.apache.pdfbox</groupId>
+ <artifactId>fontbox</artifactId>
+ <version>2.0.6</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.pdfbox</groupId>
+ <artifactId>jempbox</artifactId>
+ <version>1.8.13</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.pdfbox</groupId>
+ <artifactId>pdfbox</artifactId>
+ <version>2.0.6</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.pdfbox</groupId>
+ <artifactId>pdfbox-debugger</artifactId>
+ <version>2.0.6</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.pdfbox</groupId>
+ <artifactId>pdfbox-tools</artifactId>
+ <version>2.0.6</version>
+ </dependency>
+ <dependency>
<groupId>org.apache.ws.commons.axiom</groupId>
<artifactId>axiom-api</artifactId>
<version>1.2.14</version>
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]
> Align pdfbox versions to 2.0.6
> ------------------------------
>
> Key: CAMEL-11976
> URL: https://issues.apache.org/jira/browse/CAMEL-11976
> Project: Camel
> Issue Type: Bug
> Reporter: Peter Palaga
> Assignee: Peter Palaga
> Fix For: 2.21.0
>
>
> {{org.apache.pdfbox}} is currently used by the following components
> * {{camel-fop}} uses {{org.apache.pdfbox:pdfbox}} 1.8.13
> * {{camel-pdf}} uses {{org.apache.pdfbox:pdfbox}} 1.8.13
> * {{camel-tika}} transitively depends on
> ** {{org.apache.pdfbox:pdfbox}} 2.0.6
> ** {{org.apache.pdfbox:fontbox}} 2.0.6
> ** {{org.apache.pdfbox:pdfbox-tools}} 2.0.6
> ** {{org.apache.pdfbox:pdfbox-debugger}} 2.0.6
> ** and {{org.apache.pdfbox:jempbox}} 1.8.13 (!)
> Because pdfbox 2.0 is not backwards compatible with 1.8 we are not able to
> add Tika to WildFly Camel, where we already have {{camel-pdf}} and
> {{camel-fop}}.
> I propose to align all the above artifacts to 2.0.6, except for {{jempbox}}
> that has to stay on 1.8.13, because there is no {{jempbox}} in {{pdfbox}} 2.0.
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)