You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ac...@apache.org on 2023/08/29 07:45:51 UTC
[camel] branch main updated: CAMEL-19796 - camel-pdf - Upgrade to pdfbox 3.x (#11227)
This is an automated email from the ASF dual-hosted git repository.
acosentino pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/main by this push:
new 0411058c51b CAMEL-19796 - camel-pdf - Upgrade to pdfbox 3.x (#11227)
0411058c51b is described below
commit 0411058c51b4183767aa75e484ee30f64a2a81a1
Author: Andrea Cosentino <an...@gmail.com>
AuthorDate: Tue Aug 29 09:45:42 2023 +0200
CAMEL-19796 - camel-pdf - Upgrade to pdfbox 3.x (#11227)
* CAMEL-19796 - camel-pdf - Upgrade to pdfbox 3.x
Signed-off-by: Andrea Cosentino <an...@gmail.com>
* CAMEL-19796 - camel-fop - Upgrade to pdfbox 3.x
Signed-off-by: Andrea Cosentino <an...@gmail.com>
* Regen
Signed-off-by: Andrea Cosentino <an...@gmail.com>
---------
Signed-off-by: Andrea Cosentino <an...@gmail.com>
---
.../org/apache/camel/catalog/components/pdf.json | 2 +-
.../camel/component/fop/FopComponentTest.java | 3 +-
.../camel/component/fop/FopEndpointTest.java | 6 ++-
.../org/apache/camel/component/pdf/pdf.json | 2 +-
.../camel/component/pdf/PdfConfiguration.java | 15 +++---
.../camel/component/pdf/Standard14Fonts.java | 60 ----------------------
.../pdf/text/DefaultLineBuilderStrategy.java | 4 +-
.../component/pdf/text/DefaultWriteStrategy.java | 10 ++--
.../apache/camel/component/pdf/PdfAppendTest.java | 16 ++++--
.../camel/component/pdf/PdfCreationTest.java | 10 ++--
.../camel/component/pdf/PdfTextExtractionTest.java | 10 ++--
.../ROOT/pages/camel-4x-upgrade-guide-4_1.adoc | 6 +++
.../endpoint/dsl/PdfEndpointBuilderFactory.java | 2 +-
parent/pom.xml | 2 +-
14 files changed, 58 insertions(+), 90 deletions(-)
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/pdf.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/pdf.json
index 0ba759ba3b5..18499dbc195 100644
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/pdf.json
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/pdf.json
@@ -32,7 +32,7 @@
},
"properties": {
"operation": { "index": 0, "kind": "path", "displayName": "Operation", "group": "producer", "label": "", "required": true, "type": "object", "javaType": "org.apache.camel.component.pdf.PdfOperation", "enum": [ "create", "append", "extractText" ], "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.pdf.PdfConfiguration", "configurationField": "pdfConfiguration", "description": "Operation type" },
- "font": { "index": 1, "kind": "parameter", "displayName": "Font", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "enum": [ "Courier", "Courier-Bold", "Courier-Oblique", "Courier-BoldOblique", "Helvetica", "Helvetica-Bold", "Helvetica-Oblique", "Helvetica-BoldOblique", "Times-Roman", "Times-Bold", "Times-Italic", "Times-BoldItalic", "Symbol", "ZapfDingbats" ], "deprecated": false, "autowired": false, "secret": false, "defaultValu [...]
+ "font": { "index": 1, "kind": "parameter", "displayName": "Font", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "enum": [ "COURIER", "COURIER_BOLD", "COURIER_OBLIQUE", "COURIER_BOLD_OBLIQUE", "HELVETICA", "HELVETICA_BOLD", "HELVETICA_OBLIQUE", "HELVETICA_BOLD_OBLIQUE", "TIMES_ROMAN", "TIMES_BOLD", "TIMES_ITALIC", "TIMES_BOLD_ITALIC", "SYMBOL", "ZAPF_DINGBATS" ], "deprecated": false, "autowired": false, "secret": false, "default [...]
"fontSize": { "index": 2, "kind": "parameter", "displayName": "Font Size", "group": "producer", "label": "", "required": false, "type": "number", "javaType": "float", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 14.0, "configurationClass": "org.apache.camel.component.pdf.PdfConfiguration", "configurationField": "pdfConfiguration", "description": "Font size in pixels" },
"marginBottom": { "index": 3, "kind": "parameter", "displayName": "Margin Bottom", "group": "producer", "label": "", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 20, "configurationClass": "org.apache.camel.component.pdf.PdfConfiguration", "configurationField": "pdfConfiguration", "description": "Margin bottom in pixels" },
"marginLeft": { "index": 4, "kind": "parameter", "displayName": "Margin Left", "group": "producer", "label": "", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 20, "configurationClass": "org.apache.camel.component.pdf.PdfConfiguration", "configurationField": "pdfConfiguration", "description": "Margin left in pixels" },
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 d3ebf31f8a4..fa3ad9d5d9f 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
@@ -26,6 +26,7 @@ import org.apache.camel.ProducerTemplate;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.mock.MockEndpoint;
import org.apache.camel.test.junit5.CamelTestSupport;
+import org.apache.pdfbox.Loader;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
@@ -69,7 +70,7 @@ public class FopComponentTest extends CamelTestSupport {
template.sendBody(inputStream);
resultEndpoint.assertIsSatisfied();
- PDDocument document = PDDocument.load(new File("target/data/result.pdf"));
+ PDDocument document = Loader.loadPDF(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
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 b57b0670252..f0cca89bd76 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
@@ -24,7 +24,9 @@ import org.apache.camel.Exchange;
import org.apache.camel.Producer;
import org.apache.camel.support.DefaultExchange;
import org.apache.camel.test.junit5.CamelTestSupport;
+import org.apache.pdfbox.Loader;
import org.apache.pdfbox.cos.COSName;
+import org.apache.pdfbox.io.RandomAccessReadBuffer;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.junit.jupiter.api.Test;
@@ -124,7 +126,7 @@ public class FopEndpointTest extends CamelTestSupport {
producer.process(exchange);
try (InputStream inputStream = exchange.getMessage().getBody(InputStream.class)) {
- PDDocument document = PDDocument.load(inputStream, password);
+ PDDocument document = Loader.loadPDF(new RandomAccessReadBuffer(inputStream), password);
assertTrue(document.isEncrypted());
}
}
@@ -150,6 +152,6 @@ public class FopEndpointTest extends CamelTestSupport {
private PDDocument getDocumentFrom(Exchange exchange) throws IOException {
InputStream inputStream = exchange.getMessage().getBody(InputStream.class);
- return PDDocument.load(inputStream);
+ return Loader.loadPDF(new RandomAccessReadBuffer(inputStream));
}
}
diff --git a/components/camel-pdf/src/generated/resources/org/apache/camel/component/pdf/pdf.json b/components/camel-pdf/src/generated/resources/org/apache/camel/component/pdf/pdf.json
index 0ba759ba3b5..18499dbc195 100644
--- a/components/camel-pdf/src/generated/resources/org/apache/camel/component/pdf/pdf.json
+++ b/components/camel-pdf/src/generated/resources/org/apache/camel/component/pdf/pdf.json
@@ -32,7 +32,7 @@
},
"properties": {
"operation": { "index": 0, "kind": "path", "displayName": "Operation", "group": "producer", "label": "", "required": true, "type": "object", "javaType": "org.apache.camel.component.pdf.PdfOperation", "enum": [ "create", "append", "extractText" ], "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.pdf.PdfConfiguration", "configurationField": "pdfConfiguration", "description": "Operation type" },
- "font": { "index": 1, "kind": "parameter", "displayName": "Font", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "enum": [ "Courier", "Courier-Bold", "Courier-Oblique", "Courier-BoldOblique", "Helvetica", "Helvetica-Bold", "Helvetica-Oblique", "Helvetica-BoldOblique", "Times-Roman", "Times-Bold", "Times-Italic", "Times-BoldItalic", "Symbol", "ZapfDingbats" ], "deprecated": false, "autowired": false, "secret": false, "defaultValu [...]
+ "font": { "index": 1, "kind": "parameter", "displayName": "Font", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "enum": [ "COURIER", "COURIER_BOLD", "COURIER_OBLIQUE", "COURIER_BOLD_OBLIQUE", "HELVETICA", "HELVETICA_BOLD", "HELVETICA_OBLIQUE", "HELVETICA_BOLD_OBLIQUE", "TIMES_ROMAN", "TIMES_BOLD", "TIMES_ITALIC", "TIMES_BOLD_ITALIC", "SYMBOL", "ZAPF_DINGBATS" ], "deprecated": false, "autowired": false, "secret": false, "default [...]
"fontSize": { "index": 2, "kind": "parameter", "displayName": "Font Size", "group": "producer", "label": "", "required": false, "type": "number", "javaType": "float", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 14.0, "configurationClass": "org.apache.camel.component.pdf.PdfConfiguration", "configurationField": "pdfConfiguration", "description": "Font size in pixels" },
"marginBottom": { "index": 3, "kind": "parameter", "displayName": "Margin Bottom", "group": "producer", "label": "", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 20, "configurationClass": "org.apache.camel.component.pdf.PdfConfiguration", "configurationField": "pdfConfiguration", "description": "Margin bottom in pixels" },
"marginLeft": { "index": 4, "kind": "parameter", "displayName": "Margin Left", "group": "producer", "label": "", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 20, "configurationClass": "org.apache.camel.component.pdf.PdfConfiguration", "configurationField": "pdfConfiguration", "description": "Margin left in pixels" },
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 e3f72d6dc89..82237ea3114 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
@@ -24,7 +24,6 @@ import org.apache.camel.spi.UriParam;
import org.apache.camel.spi.UriParams;
import org.apache.camel.spi.UriPath;
import org.apache.pdfbox.pdmodel.common.PDRectangle;
-import org.apache.pdfbox.pdmodel.font.PDFont;
import static org.apache.camel.component.pdf.PdfPageSizeConstant.PAGE_SIZE_A0;
import static org.apache.camel.component.pdf.PdfPageSizeConstant.PAGE_SIZE_A1;
@@ -68,11 +67,11 @@ public class PdfConfiguration {
private float fontSize = 14;
@UriParam(defaultValue = "A4", enums = "LETTER,LEGAL,A0,A1,A2,A3,A4,A5,A6")
private String pageSize = PAGE_SIZE_A4;
- @UriParam(defaultValue = "Helvetica", enums = "Courier,Courier-Bold,Courier-Oblique,Courier-BoldOblique,"
- + "Helvetica,Helvetica-Bold,Helvetica-Oblique,Helvetica-BoldOblique,"
- + "Times-Roman,Times-Bold,Times-Italic,Times-BoldItalic,"
- + "Symbol,ZapfDingbats")
- private String font = "Helvetica";
+ @UriParam(defaultValue = "HELVETICA", enums = "COURIER,COURIER_BOLD,COURIER_OBLIQUE,COURIER_BOLD_OBLIQUE,"
+ + "HELVETICA,HELVETICA_BOLD,HELVETICA_OBLIQUE,HELVETICA_BOLD_OBLIQUE,"
+ + "TIMES_ROMAN,TIMES_BOLD,TIMES_ITALIC,TIMES_BOLD_ITALIC,"
+ + "SYMBOL,ZAPF_DINGBATS")
+ private String font = "HELVETICA";
@UriParam(defaultValue = "lineTermination")
private TextProcessingFactory textProcessingFactory = TextProcessingFactory.lineTermination;
@@ -154,8 +153,8 @@ public class PdfConfiguration {
this.pageSize = pageSize;
}
- public PDFont getFont() {
- return Standard14Fonts.getByName(font);
+ public String getFont() {
+ return font;
}
/**
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
deleted file mode 100644
index acc564175a8..00000000000
--- a/components/camel-pdf/src/main/java/org/apache/camel/component/pdf/Standard14Fonts.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * 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
- */
-public final 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);
- }
-
- private Standard14Fonts() {
- }
-
- /**
- * 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/DefaultLineBuilderStrategy.java b/components/camel-pdf/src/main/java/org/apache/camel/component/pdf/text/DefaultLineBuilderStrategy.java
index 9c810ba10d6..5d39efe82da 100644
--- a/components/camel-pdf/src/main/java/org/apache/camel/component/pdf/text/DefaultLineBuilderStrategy.java
+++ b/components/camel-pdf/src/main/java/org/apache/camel/component/pdf/text/DefaultLineBuilderStrategy.java
@@ -23,6 +23,8 @@ import java.util.LinkedList;
import org.apache.camel.component.pdf.PdfConfiguration;
import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.pdfbox.pdmodel.font.PDType1Font;
+import org.apache.pdfbox.pdmodel.font.Standard14Fonts;
import static org.apache.camel.component.pdf.PdfConstants.MIN_CONTENT_WIDTH;
@@ -106,7 +108,7 @@ public class DefaultLineBuilderStrategy implements LineBuilderStrategy {
private boolean isLineFitInLineWidth(String currentLine, float allowedLineWidth) throws IOException {
float fontWidth = PdfUtils.getFontWidth(
currentLine,
- pdfConfiguration.getFont(),
+ new PDType1Font(Standard14Fonts.FontName.valueOf(pdfConfiguration.getFont())),
pdfConfiguration.getFontSize());
return fontWidth <= allowedLineWidth;
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 5613126f706..3dd7639024b 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
@@ -23,6 +23,8 @@ import org.apache.camel.component.pdf.PdfConfiguration;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDPageContentStream;
+import org.apache.pdfbox.pdmodel.font.PDType1Font;
+import org.apache.pdfbox.pdmodel.font.Standard14Fonts;
/**
* Writes given lines to PDF document. If document already contains some text then new text will be appended to new
@@ -42,8 +44,9 @@ public class DefaultWriteStrategy implements WriteStrategy {
document.addPage(page);
float x = pdfConfiguration.getMarginLeft();
float y = page.getMediaBox().getHeight() - pdfConfiguration.getMarginTop();
- float averageFontHeight = PdfUtils.getAverageFontHeight(pdfConfiguration.getFont(),
- pdfConfiguration.getFontSize());
+ float averageFontHeight
+ = PdfUtils.getAverageFontHeight(new PDType1Font(Standard14Fonts.FontName.valueOf(pdfConfiguration.getFont())),
+ pdfConfiguration.getFontSize());
float lineSpacing = averageFontHeight * 2;
PDPageContentStream contentStream = initializeContentStream(document, page);
@@ -75,7 +78,8 @@ public class DefaultWriteStrategy implements WriteStrategy {
private PDPageContentStream initializeContentStream(PDDocument document, PDPage page) throws IOException {
PDPageContentStream contentStream = new PDPageContentStream(document, page);
- contentStream.setFont(pdfConfiguration.getFont(), pdfConfiguration.getFontSize());
+ contentStream.setFont(new PDType1Font(Standard14Fonts.FontName.valueOf(pdfConfiguration.getFont())),
+ pdfConfiguration.getFontSize());
return contentStream;
}
}
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 425007565b3..612631ae9aa 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
@@ -29,6 +29,8 @@ import org.apache.camel.RuntimeCamelException;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.mock.MockEndpoint;
import org.apache.camel.test.junit5.CamelTestSupport;
+import org.apache.pdfbox.Loader;
+import org.apache.pdfbox.io.RandomAccessReadBuffer;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDPageContentStream;
@@ -37,6 +39,7 @@ 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.pdmodel.font.Standard14Fonts;
import org.apache.pdfbox.text.PDFTextStripper;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
@@ -65,7 +68,7 @@ public class PdfAppendTest extends CamelTestSupport {
PDPage page = new PDPage(PDRectangle.A4);
document.addPage(page);
PDPageContentStream contentStream = new PDPageContentStream(document, page);
- contentStream.setFont(PDType1Font.HELVETICA, 12);
+ contentStream.setFont(new PDType1Font(Standard14Fonts.FontName.HELVETICA), 12);
contentStream.beginText();
contentStream.newLineAtOffset(20, 400);
contentStream.showText(originalText);
@@ -81,7 +84,8 @@ public class PdfAppendTest extends CamelTestSupport {
Object body = exchange.getIn().getBody();
assertThat(body, instanceOf(ByteArrayOutputStream.class));
try {
- PDDocument doc = PDDocument.load(new ByteArrayInputStream(((ByteArrayOutputStream) body).toByteArray()));
+ PDDocument doc = Loader.loadPDF(
+ new RandomAccessReadBuffer(new ByteArrayInputStream(((ByteArrayOutputStream) body).toByteArray())));
PDFTextStripper pdfTextStripper = new PDFTextStripper();
String text = pdfTextStripper.getText(doc);
assertEquals(2, doc.getNumberOfPages());
@@ -105,7 +109,7 @@ public class PdfAppendTest extends CamelTestSupport {
PDPage page = new PDPage(PDRectangle.A4);
document.addPage(page);
PDPageContentStream contentStream = new PDPageContentStream(document, page);
- contentStream.setFont(PDType1Font.HELVETICA, 12);
+ contentStream.setFont(new PDType1Font(Standard14Fonts.FontName.HELVETICA), 12);
contentStream.beginText();
contentStream.newLineAtOffset(20, 400);
contentStream.showText(originalText);
@@ -125,7 +129,8 @@ public class PdfAppendTest extends CamelTestSupport {
document.save(output);
// Encryption happens after saving.
- PDDocument encryptedDocument = PDDocument.load(new ByteArrayInputStream(output.toByteArray()), userPass);
+ PDDocument encryptedDocument
+ = Loader.loadPDF(new RandomAccessReadBuffer(new ByteArrayInputStream(output.toByteArray())), userPass);
Map<String, Object> headers = new HashMap<>();
headers.put(PdfHeaderConstants.PDF_DOCUMENT_HEADER_NAME, encryptedDocument);
@@ -141,7 +146,8 @@ public class PdfAppendTest extends CamelTestSupport {
assertThat(body, instanceOf(ByteArrayOutputStream.class));
try {
PDDocument doc
- = PDDocument.load(new ByteArrayInputStream(((ByteArrayOutputStream) body).toByteArray()), userPass);
+ = Loader.loadPDF(new RandomAccessReadBuffer(
+ 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 ff598989ccf..efcd87c3674 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
@@ -27,6 +27,8 @@ import org.apache.camel.RuntimeCamelException;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.mock.MockEndpoint;
import org.apache.camel.test.junit5.CamelTestSupport;
+import org.apache.pdfbox.Loader;
+import org.apache.pdfbox.io.RandomAccessReadBuffer;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.encryption.AccessPermission;
import org.apache.pdfbox.pdmodel.encryption.StandardProtectionPolicy;
@@ -63,7 +65,8 @@ public class PdfCreationTest extends CamelTestSupport {
Object body = exchange.getIn().getBody();
assertThat(body, instanceOf(ByteArrayOutputStream.class));
try {
- PDDocument doc = PDDocument.load(new ByteArrayInputStream(((ByteArrayOutputStream) body).toByteArray()));
+ PDDocument doc = Loader.loadPDF(
+ new RandomAccessReadBuffer(new ByteArrayInputStream(((ByteArrayOutputStream) body).toByteArray())));
PDFTextStripper pdfTextStripper = new PDFTextStripper();
String text = pdfTextStripper.getText(doc);
assertEquals(1, doc.getNumberOfPages());
@@ -99,7 +102,8 @@ public class PdfCreationTest extends CamelTestSupport {
assertThat(body, instanceOf(ByteArrayOutputStream.class));
try {
PDDocument doc
- = PDDocument.load(new ByteArrayInputStream(((ByteArrayOutputStream) body).toByteArray()), userPass);
+ = Loader.loadPDF(new RandomAccessReadBuffer(
+ new ByteArrayInputStream(((ByteArrayOutputStream) body).toByteArray())), userPass);
assertTrue(doc.isEncrypted(), "Expected encrypted document");
assertFalse(doc.getCurrentAccessPermission().canPrint(), "Printing should not be permitted");
PDFTextStripper pdfTextStripper = new PDFTextStripper();
@@ -121,7 +125,7 @@ public class PdfCreationTest extends CamelTestSupport {
@Override
public void configure() {
from("direct:start")
- .to("pdf:create?fontSize=6&font=Courier&pageSize=PAGE_SIZE_A1")
+ .to("pdf:create?fontSize=6&font=COURIER&pageSize=PAGE_SIZE_A1")
.to("mock:result");
}
};
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 3cca2bf5824..e49900da615 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
@@ -25,6 +25,8 @@ import org.apache.camel.Predicate;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.mock.MockEndpoint;
import org.apache.camel.test.junit5.CamelTestSupport;
+import org.apache.pdfbox.Loader;
+import org.apache.pdfbox.io.RandomAccessReadBuffer;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDPageContentStream;
@@ -33,6 +35,7 @@ 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.pdmodel.font.Standard14Fonts;
import org.junit.jupiter.api.Test;
import static org.hamcrest.MatcherAssert.assertThat;
@@ -51,7 +54,7 @@ public class PdfTextExtractionTest extends CamelTestSupport {
PDPage page = new PDPage(PDRectangle.A4);
document.addPage(page);
PDPageContentStream contentStream = new PDPageContentStream(document, page);
- contentStream.setFont(PDType1Font.HELVETICA, 12);
+ contentStream.setFont(new PDType1Font(Standard14Fonts.FontName.HELVETICA), 12);
contentStream.beginText();
contentStream.newLineAtOffset(20, 400);
contentStream.showText(expectedText);
@@ -87,7 +90,7 @@ public class PdfTextExtractionTest extends CamelTestSupport {
PDPage page = new PDPage(PDRectangle.A4);
document.addPage(page);
PDPageContentStream contentStream = new PDPageContentStream(document, page);
- contentStream.setFont(PDType1Font.HELVETICA, 12);
+ contentStream.setFont(new PDType1Font(Standard14Fonts.FontName.HELVETICA), 12);
contentStream.beginText();
contentStream.newLineAtOffset(20, 400);
contentStream.showText(expectedText);
@@ -100,7 +103,8 @@ public class PdfTextExtractionTest extends CamelTestSupport {
document.save(output);
// Encryption happens after saving.
- PDDocument encryptedDocument = PDDocument.load(new ByteArrayInputStream(output.toByteArray()), userPass);
+ PDDocument encryptedDocument
+ = Loader.loadPDF(new RandomAccessReadBuffer(new ByteArrayInputStream(output.toByteArray())), userPass);
template.sendBodyAndHeader("direct:start",
encryptedDocument,
diff --git a/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_1.adoc b/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_1.adoc
index ab28a6834b1..e4d2b6eae8f 100644
--- a/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_1.adoc
+++ b/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_1.adoc
@@ -93,3 +93,9 @@ Should be changed to
from("direct:start")
.to("aws2-sns://mytopic?subject=mySubject&autoCreateTopic=true&subscribeSNStoSQS=true&queueArn=arn:aws:sqs:xxxxx")
----
+
+=== camel-pdf
+
+The Camel-PDF component has been updated to Apache PDFBox 3.0.0 and the font parameter is now defined through the following enum values: COURIER,COURIER_BOLD,COURIER_OBLIQUE,COURIER_BOLD_OBLIQUE, HELVETICA,HELVETICA_BOLD,HELVETICA_OBLIQUE,HELVETICA_BOLD_OBLIQUE,TIMES_ROMAN,TIMES_BOLD,TIMES_ITALIC,TIMES_BOLD_ITALIC,SYMBOL and ZAPF_DINGBATS
+
+
diff --git a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/PdfEndpointBuilderFactory.java b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/PdfEndpointBuilderFactory.java
index 2cfd710fa81..d40b3db9af0 100644
--- a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/PdfEndpointBuilderFactory.java
+++ b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/PdfEndpointBuilderFactory.java
@@ -46,7 +46,7 @@ public interface PdfEndpointBuilderFactory {
*
* The option is a: <code>java.lang.String</code> type.
*
- * Default: Helvetica
+ * Default: HELVETICA
* Group: producer
*
* @param font the value to set
diff --git a/parent/pom.xml b/parent/pom.xml
index fd501fb6b5f..6b7a787cdbe 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -375,7 +375,7 @@
<paho-version>1.2.5</paho-version>
<parquet-common-version>1.13.1</parquet-common-version>
<parquet-avro-version>1.13.1</parquet-avro-version>
- <pdfbox-version>2.0.29</pdfbox-version>
+ <pdfbox-version>3.0.0</pdfbox-version>
<pgjdbc-driver-version>42.6.0</pgjdbc-driver-version>
<pgjdbc-ng-driver-version>0.8.9</pgjdbc-ng-driver-version>
<picocli-version>4.7.4</picocli-version>