You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xmlgraphics.apache.org by ss...@apache.org on 2025/10/01 11:47:14 UTC
(xmlgraphics-fop-pdf-images) branch main updated: Close all PDDocument in tests
This is an automated email from the ASF dual-hosted git repository.
ssteiner pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/xmlgraphics-fop-pdf-images.git
The following commit(s) were added to refs/heads/main by this push:
new dd04a2b Close all PDDocument in tests
dd04a2b is described below
commit dd04a2b486d276f8e8b94642dac09af2353683f3
Author: Simon Steiner <ss...@apache.org>
AuthorDate: Wed Oct 1 12:45:53 2025 +0100
Close all PDDocument in tests
---
.../render/pdf/StructureTreeMergerTestCase.java | 132 +++---
.../fop/render/pdf/TaggedPDFConductorTestCase.java | 38 +-
.../pdf/pdfbox/DocumentRootModifierTestCase.java | 24 +-
.../pdfbox/FOPPDFSingleMultiByteFontTestCase.java | 413 ++++++++++---------
.../fop/render/pdf/pdfbox/FontMergeTestCase.java | 66 ++-
.../pdf/pdfbox/ImageConverterPDF2AFPTestCase.java | 28 +-
.../pdf/pdfbox/ImageConverterPDF2G2DTestCase.java | 97 +++--
.../render/pdf/pdfbox/PDFBoxAdapterTestCase.java | 452 +++++++++++----------
.../fop/render/pdf/pdfbox/PDFRotateTestCase.java | 46 ++-
.../fop/render/pdf/pdfbox/PDFWriterTestCase.java | 12 +-
.../pdf/pdfbox/PageParentTreeFinderTestCase.java | 92 ++---
.../render/pdf/pdfbox/PreloaderPDFTestCase.java | 5 +-
12 files changed, 703 insertions(+), 702 deletions(-)
diff --git a/test/java/org/apache/fop/render/pdf/StructureTreeMergerTestCase.java b/test/java/org/apache/fop/render/pdf/StructureTreeMergerTestCase.java
index 155d674..0338aab 100644
--- a/test/java/org/apache/fop/render/pdf/StructureTreeMergerTestCase.java
+++ b/test/java/org/apache/fop/render/pdf/StructureTreeMergerTestCase.java
@@ -74,58 +74,58 @@ public class StructureTreeMergerTestCase {
@Test
public void testCopyStructure() throws IOException {
- PDDocument doc = PDFBoxAdapterTestCase.load(LINK);
- PDPage srcPage = doc.getPage(0);
- PageParentTreeFinder finder = new PageParentTreeFinder(srcPage);
- COSArray markedContentParents = finder.getPageParentTreeArray(doc);
- PDFStructElem elem = new PDFStructElem();
- elem.setObjectNumber(2);
- adapter = new PDFBoxAdapter(pdfPage, new HashMap<>(), new HashMap<>(), new HashMap<>(), new HashMap<>(),
- new DefaultEventBroadcaster());
- adapter.setCurrentMCID(1);
- PDFLogicalStructureHandler handler = setUpPDFLogicalStructureHandler();
- StructureTreeMerger merger = new StructureTreeMerger(elem, handler, adapter, srcPage);
- merger.copyStructure(markedContentParents);
- PDFArray array = handler.getPageParentTree();
- checkMarkedContentsParentsForLinkTest(array);
- PDFStructElem first = (PDFStructElem)array.get(0);
- checkParentForLinkTest(first, 0);
- doc.close();
+ try (PDDocument doc = PDFBoxAdapterTestCase.load(LINK)) {
+ PDPage srcPage = doc.getPage(0);
+ PageParentTreeFinder finder = new PageParentTreeFinder(srcPage);
+ COSArray markedContentParents = finder.getPageParentTreeArray(doc);
+ PDFStructElem elem = new PDFStructElem();
+ elem.setObjectNumber(2);
+ adapter = new PDFBoxAdapter(pdfPage, new HashMap<>(), new HashMap<>(), new HashMap<>(), new HashMap<>(),
+ new DefaultEventBroadcaster());
+ adapter.setCurrentMCID(1);
+ PDFLogicalStructureHandler handler = setUpPDFLogicalStructureHandler();
+ StructureTreeMerger merger = new StructureTreeMerger(elem, handler, adapter, srcPage);
+ merger.copyStructure(markedContentParents);
+ PDFArray array = handler.getPageParentTree();
+ checkMarkedContentsParentsForLinkTest(array);
+ PDFStructElem first = (PDFStructElem) array.get(0);
+ checkParentForLinkTest(first, 0);
+ }
}
@Test
public void testNullEntriesInParentTree() throws IOException {
- PDDocument doc = PDFBoxAdapterTestCase.load(LINK);
- PDPage srcPage = doc.getPage(0);
- PageParentTreeFinder finder = new PageParentTreeFinder(srcPage);
- COSArray markedContentParents = finder.getPageParentTreeArray(doc);
- markedContentParents.add(0, null);
- PDFStructElem elem = new PDFStructElem();
- elem.setObjectNumber(2);
- adapter = new PDFBoxAdapter(pdfPage, new HashMap<>(), new HashMap<>(), new HashMap<>(), new HashMap<>(),
- new DefaultEventBroadcaster());
- PDFLogicalStructureHandler handler = setUpPDFLogicalStructureHandler();
- StructureTreeMerger merger = new StructureTreeMerger(elem, handler, adapter, srcPage);
- merger.copyStructure(markedContentParents);
- PDFArray array = handler.getPageParentTree();
- Assert.assertNull(array.get(0));
- doc.close();
+ try (PDDocument doc = PDFBoxAdapterTestCase.load(LINK)) {
+ PDPage srcPage = doc.getPage(0);
+ PageParentTreeFinder finder = new PageParentTreeFinder(srcPage);
+ COSArray markedContentParents = finder.getPageParentTreeArray(doc);
+ markedContentParents.add(0, null);
+ PDFStructElem elem = new PDFStructElem();
+ elem.setObjectNumber(2);
+ adapter = new PDFBoxAdapter(pdfPage, new HashMap<>(), new HashMap<>(), new HashMap<>(), new HashMap<>(),
+ new DefaultEventBroadcaster());
+ PDFLogicalStructureHandler handler = setUpPDFLogicalStructureHandler();
+ StructureTreeMerger merger = new StructureTreeMerger(elem, handler, adapter, srcPage);
+ merger.copyStructure(markedContentParents);
+ PDFArray array = handler.getPageParentTree();
+ Assert.assertNull(array.get(0));
+ }
}
@Test
public void testOBJRCorrectPosition() throws IOException {
- PDDocument doc = PDFBoxAdapterTestCase.load(MissingOBJR);
- PDPage srcPage = doc.getPage(0);
- PageParentTreeFinder finder = new PageParentTreeFinder(srcPage);
- COSArray markedContentParents = finder.getPageParentTreeArray(doc);
- PDFStructElem elem = new PDFStructElem();
- elem.setObjectNumber(2);
- adapter = new PDFBoxAdapter(pdfPage, new HashMap<>(), new HashMap<>(), new HashMap<>(), new HashMap<>(),
- new DefaultEventBroadcaster());
- PDFLogicalStructureHandler handler = setUpPDFLogicalStructureHandler();
- StructureTreeMerger merger = new StructureTreeMerger(elem, handler, adapter, srcPage);
- merger.copyStructure(markedContentParents);
- doc.close();
+ try (PDDocument doc = PDFBoxAdapterTestCase.load(MissingOBJR)) {
+ PDPage srcPage = doc.getPage(0);
+ PageParentTreeFinder finder = new PageParentTreeFinder(srcPage);
+ COSArray markedContentParents = finder.getPageParentTreeArray(doc);
+ PDFStructElem elem = new PDFStructElem();
+ elem.setObjectNumber(2);
+ adapter = new PDFBoxAdapter(pdfPage, new HashMap<>(), new HashMap<>(), new HashMap<>(), new HashMap<>(),
+ new DefaultEventBroadcaster());
+ PDFLogicalStructureHandler handler = setUpPDFLogicalStructureHandler();
+ StructureTreeMerger merger = new StructureTreeMerger(elem, handler, adapter, srcPage);
+ merger.copyStructure(markedContentParents);
+ }
// PDFArray array = handler.getPageParentTree();
// PDFStructElem kid = (PDFStructElem)array.get(0);
@@ -192,30 +192,30 @@ public class StructureTreeMergerTestCase {
@Test
public void testCheckNullCOSObject() throws IOException {
- PDDocument doc = PDFBoxAdapterTestCase.load(BrokenLink);
- PDPage srcPage = doc.getPage(0);
- PageParentTreeFinder finder = new PageParentTreeFinder(srcPage);
- COSArray markedContentParents = finder.getPageParentTreeArray(doc);
- COSObject nullObj = new COSObject(null);
+ try (PDDocument doc = PDFBoxAdapterTestCase.load(BrokenLink)) {
+ PDPage srcPage = doc.getPage(0);
+ PageParentTreeFinder finder = new PageParentTreeFinder(srcPage);
+ COSArray markedContentParents = finder.getPageParentTreeArray(doc);
+ COSObject nullObj = new COSObject(null);
// nullObj.setObjectNumber(100);
// nullObj.setGenerationNumber(0);
- PDFStructElem elem = new PDFStructElem();
- elem.setObjectNumber(2);
- COSObject parent = (COSObject)markedContentParents.get(1);
- COSDictionary dict = (COSDictionary) parent.getObject();
- COSArray kids = (COSArray) dict.getDictionaryObject(COSName.K);
- COSDictionary kid = (COSDictionary) kids.get(1);
- kid.setItem(COSName.OBJ, nullObj);
- adapter = new PDFBoxAdapter(pdfPage, new HashMap<>(), new HashMap<>(), new HashMap<>(), new HashMap<>(),
- new DefaultEventBroadcaster());
- PDFLogicalStructureHandler handler = setUpPDFLogicalStructureHandler();
- StructureTreeMerger merger = new StructureTreeMerger(elem, handler, adapter, srcPage);
- merger.copyStructure(markedContentParents);
- PDFArray array = handler.getPageParentTree();
- PDFStructElem parentElem = (PDFStructElem)array.get(1);
- PDFDictionary objrDict = (PDFDictionary) parentElem.getKids().get(1);
- Assert.assertNull(objrDict.get("Obj"));
- doc.close();
+ PDFStructElem elem = new PDFStructElem();
+ elem.setObjectNumber(2);
+ COSObject parent = (COSObject) markedContentParents.get(1);
+ COSDictionary dict = (COSDictionary) parent.getObject();
+ COSArray kids = (COSArray) dict.getDictionaryObject(COSName.K);
+ COSDictionary kid = (COSDictionary) kids.get(1);
+ kid.setItem(COSName.OBJ, nullObj);
+ adapter = new PDFBoxAdapter(pdfPage, new HashMap<>(), new HashMap<>(), new HashMap<>(), new HashMap<>(),
+ new DefaultEventBroadcaster());
+ PDFLogicalStructureHandler handler = setUpPDFLogicalStructureHandler();
+ StructureTreeMerger merger = new StructureTreeMerger(elem, handler, adapter, srcPage);
+ merger.copyStructure(markedContentParents);
+ PDFArray array = handler.getPageParentTree();
+ PDFStructElem parentElem = (PDFStructElem) array.get(1);
+ PDFDictionary objrDict = (PDFDictionary) parentElem.getKids().get(1);
+ Assert.assertNull(objrDict.get("Obj"));
+ }
}
@Test
diff --git a/test/java/org/apache/fop/render/pdf/TaggedPDFConductorTestCase.java b/test/java/org/apache/fop/render/pdf/TaggedPDFConductorTestCase.java
index 381eee2..d91ed20 100644
--- a/test/java/org/apache/fop/render/pdf/TaggedPDFConductorTestCase.java
+++ b/test/java/org/apache/fop/render/pdf/TaggedPDFConductorTestCase.java
@@ -95,14 +95,14 @@ public class TaggedPDFConductorTestCase {
private void runConductor(String pdf, PDFStructElem elem) throws IOException {
setUp();
- PDDocument doc = PDFBoxAdapterTestCase.load(pdf);
- PDPage srcPage = doc.getPage(0);
- elem.setObjectNumber(2);
- PDFBoxAdapter adapter = new PDFBoxAdapter(pdfPage, new HashMap<>(), new HashMap<>(), new HashMap<>(),
- new HashMap<>(), new DefaultEventBroadcaster());
- PDFLogicalStructureHandler handler = setUpPDFLogicalStructureHandler();
- new TaggedPDFConductor(elem, handler, srcPage, adapter).handleLogicalStructure(doc);
- doc.close();
+ try (PDDocument doc = PDFBoxAdapterTestCase.load(pdf)) {
+ PDPage srcPage = doc.getPage(0);
+ elem.setObjectNumber(2);
+ PDFBoxAdapter adapter = new PDFBoxAdapter(pdfPage, new HashMap<>(), new HashMap<>(), new HashMap<>(),
+ new HashMap<>(), new DefaultEventBroadcaster());
+ PDFLogicalStructureHandler handler = setUpPDFLogicalStructureHandler();
+ new TaggedPDFConductor(elem, handler, srcPage, adapter).handleLogicalStructure(doc);
+ }
}
private void setUp() {
@@ -194,18 +194,18 @@ public class TaggedPDFConductorTestCase {
private PDFLogicalStructureHandler runConductorForHandler(String pdf, PDFStructElem elem,
PDFStructElem[] textElements) throws IOException {
setUp();
- PDDocument doc = PDFBoxAdapterTestCase.load(pdf);
- PDPage srcPage = doc.getPage(0);
- elem.setObjectNumber(2);
- PDFBoxAdapter adapter = new PDFBoxAdapter(pdfPage, new HashMap<>(), new HashMap<>(), new HashMap<>(),
- new HashMap<>(), new DefaultEventBroadcaster());
- PDFLogicalStructureHandler handler = setUpPDFLogicalStructureHandler();
- for (PDFStructElem textElement : textElements) {
- handler.addTextContentItem(textElement);
+ try (PDDocument doc = PDFBoxAdapterTestCase.load(pdf)) {
+ PDPage srcPage = doc.getPage(0);
+ elem.setObjectNumber(2);
+ PDFBoxAdapter adapter = new PDFBoxAdapter(pdfPage, new HashMap<>(), new HashMap<>(), new HashMap<>(),
+ new HashMap<>(), new DefaultEventBroadcaster());
+ PDFLogicalStructureHandler handler = setUpPDFLogicalStructureHandler();
+ for (PDFStructElem textElement : textElements) {
+ handler.addTextContentItem(textElement);
+ }
+ new TaggedPDFConductor(elem, handler, srcPage, adapter).handleLogicalStructure(doc);
+ return handler;
}
- new TaggedPDFConductor(elem, handler, srcPage, adapter).handleLogicalStructure(doc);
- doc.close();
- return handler;
}
private static String getParentTreeContentsAsString(PDFLogicalStructureHandler logicalStructureHandler) {
diff --git a/test/java/org/apache/fop/render/pdf/pdfbox/DocumentRootModifierTestCase.java b/test/java/org/apache/fop/render/pdf/pdfbox/DocumentRootModifierTestCase.java
index 3baee31..a6c26f4 100644
--- a/test/java/org/apache/fop/render/pdf/pdfbox/DocumentRootModifierTestCase.java
+++ b/test/java/org/apache/fop/render/pdf/pdfbox/DocumentRootModifierTestCase.java
@@ -78,18 +78,18 @@ public class DocumentRootModifierTestCase {
Assert.assertEquals(test, expected);
- PDDocument doc = PDFBoxAdapterTestCase.load(CLASSMAP);
- COSDictionary temp = doc.getDocumentCatalog().getStructureTreeRoot().getCOSObject();
- PDFDictionary classMap = new PDFDictionary();
- PDFDictionary inner = new PDFDictionary();
- inner.put("StartIndent", 0);
- classMap.put("Normal2", inner);
- structTreeRoot.put("ClassMap", classMap);
- modifier.structTreeRootEntriesToCopy(temp);
- structTreeRoot = pdfDoc.getRoot().getStructTreeRoot();
- PDFDictionary testDict = (PDFDictionary)structTreeRoot.get("ClassMap");
- Assert.assertNotNull(testDict.get("Normal2"));
- doc.close();
+ try (PDDocument doc = PDFBoxAdapterTestCase.load(CLASSMAP)) {
+ COSDictionary temp = doc.getDocumentCatalog().getStructureTreeRoot().getCOSObject();
+ PDFDictionary classMap = new PDFDictionary();
+ PDFDictionary inner = new PDFDictionary();
+ inner.put("StartIndent", 0);
+ classMap.put("Normal2", inner);
+ structTreeRoot.put("ClassMap", classMap);
+ modifier.structTreeRootEntriesToCopy(temp);
+ structTreeRoot = pdfDoc.getRoot().getStructTreeRoot();
+ PDFDictionary testDict = (PDFDictionary) structTreeRoot.get("ClassMap");
+ Assert.assertNotNull(testDict.get("Normal2"));
+ }
}
}
diff --git a/test/java/org/apache/fop/render/pdf/pdfbox/FOPPDFSingleMultiByteFontTestCase.java b/test/java/org/apache/fop/render/pdf/pdfbox/FOPPDFSingleMultiByteFontTestCase.java
index 1312f78..df165cb 100644
--- a/test/java/org/apache/fop/render/pdf/pdfbox/FOPPDFSingleMultiByteFontTestCase.java
+++ b/test/java/org/apache/fop/render/pdf/pdfbox/FOPPDFSingleMultiByteFontTestCase.java
@@ -90,141 +90,138 @@ public class FOPPDFSingleMultiByteFontTestCase {
@Test
public void testCFF() throws Exception {
- PDDocument doc = PDFBoxAdapterTestCase.load(FontMergeTestCase.CFF1);
- FOPPDFSingleByteFont sbfont = new FOPPDFSingleByteFont(getFont(doc, "R11"),
- "MyriadPro-Regular_Type1f0encstdcs", new DefaultEventBroadcaster(), params);
-
- Assert.assertTrue(Arrays.asList(sbfont.getEncoding().getCharNameMap()).contains("bracketright"));
- Assert.assertTrue(!Arrays.asList(sbfont.getEncoding().getCharNameMap()).contains("A"));
- Assert.assertTrue(!Arrays.toString(sbfont.getEncoding().getUnicodeCharMap()).contains("A"));
- Assert.assertEquals(sbfont.mapChar('A'), 0);
- Assert.assertEquals(sbfont.getWidths().length, 28);
- Assert.assertEquals(sbfont.getFirstChar(), 87);
- Assert.assertEquals(sbfont.getLastChar(), 114);
-
- PDDocument doc2 = PDFBoxAdapterTestCase.load(FontMergeTestCase.CFF2);
- String name = sbfont.addFont(getFont(doc2, "R11"));
- Assert.assertTrue(name.contains("MyriadPro"));
-
- Assert.assertEquals(sbfont.getFontName(), "MyriadPro-Regular_Type1f0encstdcs");
- Assert.assertEquals(sbfont.getEncodingName(), "WinAnsiEncoding");
- Assert.assertEquals(sbfont.mapChar('W'), 'W');
- String x = IOUtils.toString(sbfont.getInputStream(), StandardCharsets.UTF_8);
- Assert.assertTrue(x, x.contains("Adobe Systems"));
- Assert.assertEquals(sbfont.getEncoding().getName(), "FOPPDFEncoding");
- Assert.assertTrue(Arrays.asList(sbfont.getEncoding().getCharNameMap()).contains("A"));
- Assert.assertEquals(sbfont.getWidths().length, 65);
- Assert.assertEquals(sbfont.getFirstChar(), 50);
- Assert.assertEquals(sbfont.getLastChar(), 114);
-
- Assert.assertEquals(sbfont.addFont(getFont(doc2, "R13")), null);
-
- doc.close();
- doc2.close();
+ try (PDDocument doc = PDFBoxAdapterTestCase.load(FontMergeTestCase.CFF1)) {
+ FOPPDFSingleByteFont sbfont = new FOPPDFSingleByteFont(getFont(doc, "R11"),
+ "MyriadPro-Regular_Type1f0encstdcs", new DefaultEventBroadcaster(), params);
+
+ Assert.assertTrue(Arrays.asList(sbfont.getEncoding().getCharNameMap()).contains("bracketright"));
+ Assert.assertTrue(!Arrays.asList(sbfont.getEncoding().getCharNameMap()).contains("A"));
+ Assert.assertTrue(!Arrays.toString(sbfont.getEncoding().getUnicodeCharMap()).contains("A"));
+ Assert.assertEquals(sbfont.mapChar('A'), 0);
+ Assert.assertEquals(sbfont.getWidths().length, 28);
+ Assert.assertEquals(sbfont.getFirstChar(), 87);
+ Assert.assertEquals(sbfont.getLastChar(), 114);
+
+ try (PDDocument doc2 = PDFBoxAdapterTestCase.load(FontMergeTestCase.CFF2)) {
+ String name = sbfont.addFont(getFont(doc2, "R11"));
+ Assert.assertTrue(name.contains("MyriadPro"));
+
+ Assert.assertEquals(sbfont.getFontName(), "MyriadPro-Regular_Type1f0encstdcs");
+ Assert.assertEquals(sbfont.getEncodingName(), "WinAnsiEncoding");
+ Assert.assertEquals(sbfont.mapChar('W'), 'W');
+ String x = IOUtils.toString(sbfont.getInputStream(), StandardCharsets.UTF_8);
+ Assert.assertTrue(x, x.contains("Adobe Systems"));
+ Assert.assertEquals(sbfont.getEncoding().getName(), "FOPPDFEncoding");
+ Assert.assertTrue(Arrays.asList(sbfont.getEncoding().getCharNameMap()).contains("A"));
+ Assert.assertEquals(sbfont.getWidths().length, 65);
+ Assert.assertEquals(sbfont.getFirstChar(), 50);
+ Assert.assertEquals(sbfont.getLastChar(), 114);
+
+ Assert.assertEquals(sbfont.addFont(getFont(doc2, "R13")), null);
+ }
+ }
}
@Test
public void testCFF2() throws Exception {
- PDDocument doc = PDFBoxAdapterTestCase.load(FontMergeTestCase.CFF3);
- FOPPDFSingleByteFont sbfont = new FOPPDFSingleByteFont(getFont(doc, "T1_0"),
- "Myriad_Pro_Type1f0encf1cs", new DefaultEventBroadcaster(), params);
- Assert.assertTrue(Arrays.asList(sbfont.getEncoding().getCharNameMap()).contains("uni004E"));
- Assert.assertEquals(sbfont.getFontName(), "Myriad_Pro_Type1f0encf1cs");
- Assert.assertEquals(sbfont.getEncodingName(), null);
- byte[] is = IOUtils.toByteArray(sbfont.getInputStream());
-
- CFFParser p = new CFFParser();
- CFFFont ff = p.parse(new RandomAccessReadBuffer(is)).get(0);
- Assert.assertEquals(ff.getName(), "MNEACN+Myriad_Pro");
+ try (PDDocument doc = PDFBoxAdapterTestCase.load(FontMergeTestCase.CFF3)) {
+ FOPPDFSingleByteFont sbfont = new FOPPDFSingleByteFont(getFont(doc, "T1_0"),
+ "Myriad_Pro_Type1f0encf1cs", new DefaultEventBroadcaster(), params);
+ Assert.assertTrue(Arrays.asList(sbfont.getEncoding().getCharNameMap()).contains("uni004E"));
+ Assert.assertEquals(sbfont.getFontName(), "Myriad_Pro_Type1f0encf1cs");
+ Assert.assertEquals(sbfont.getEncodingName(), null);
+ byte[] is = IOUtils.toByteArray(sbfont.getInputStream());
+
+ CFFParser p = new CFFParser();
+ CFFFont ff = p.parse(new RandomAccessReadBuffer(is)).get(0);
+ Assert.assertEquals(ff.getName(), "MNEACN+Myriad_Pro");
// Assert.assertEquals(ff.getCharset().getEntries().get(0).getSID(), 391);
-
- doc.close();
+ }
}
@Test
public void testTTCID() throws Exception {
- PDDocument doc = PDFBoxAdapterTestCase.load(FontMergeTestCase.TTCID1);
- final String font = "ArialMT_Type0";
- FOPPDFMultiByteFont mbfont = new FOPPDFMultiByteFont(getFont(doc, "C2_0"), font,
- new DefaultEventBroadcaster());
- mbfont.addFont(getFont(doc, "C2_0"));
- Assert.assertEquals(mbfont.mapChar('t'), 85);
-
- PDDocument doc2 = PDFBoxAdapterTestCase.load(FontMergeTestCase.TTCID2);
- String name = mbfont.addFont(getFont(doc2, "C2_0"));
- Assert.assertEquals(name, font);
- Assert.assertEquals(mbfont.getFontName(), font);
- byte[] is = IOUtils.toByteArray(mbfont.getInputStream());
- Assert.assertEquals(is.length, 59168);
- doc.close();
- doc2.close();
+ try (PDDocument doc = PDFBoxAdapterTestCase.load(FontMergeTestCase.TTCID1)) {
+ final String font = "ArialMT_Type0";
+ FOPPDFMultiByteFont mbfont = new FOPPDFMultiByteFont(getFont(doc, "C2_0"), font,
+ new DefaultEventBroadcaster());
+ mbfont.addFont(getFont(doc, "C2_0"));
+ Assert.assertEquals(mbfont.mapChar('t'), 85);
+
+ try (PDDocument doc2 = PDFBoxAdapterTestCase.load(FontMergeTestCase.TTCID2)) {
+ String name = mbfont.addFont(getFont(doc2, "C2_0"));
+ Assert.assertEquals(name, font);
+ Assert.assertEquals(mbfont.getFontName(), font);
+ byte[] is = IOUtils.toByteArray(mbfont.getInputStream());
+ Assert.assertEquals(is.length, 59168);
+ }
+ }
}
@Test
public void testTTSubset() throws Exception {
final String font = "TimesNewRomanPSMT_TrueType";
- PDDocument doc = PDFBoxAdapterTestCase.load(FontMergeTestCase.TTSubset1);
- FOPPDFSingleByteFont mbfont = new FOPPDFSingleByteFont(getFont(doc, "R9"), font,
- new DefaultEventBroadcaster(), params);
- mbfont.addFont(getFont(doc, "R9"));
+ try (PDDocument doc = PDFBoxAdapterTestCase.load(FontMergeTestCase.TTSubset1)) {
+ FOPPDFSingleByteFont mbfont = new FOPPDFSingleByteFont(getFont(doc, "R9"), font,
+ new DefaultEventBroadcaster(), params);
+ mbfont.addFont(getFont(doc, "R9"));
// Assert.assertEquals(mbfont.mapChar('t'), 116);
- PDDocument doc2 = PDFBoxAdapterTestCase.load(FontMergeTestCase.TTSubset2);
- String name = mbfont.addFont(getFont(doc2, "R9"));
- Assert.assertEquals(name, font);
- Assert.assertEquals(mbfont.getFontName(), font);
- byte[] is = IOUtils.toByteArray(mbfont.getInputStream());
- Assert.assertEquals(is.length, 41104);
-
- TrueTypeFont trueTypeFont = new TTFParser().parse(new RandomAccessReadBuffer(is));
- TTFTable ttfTable = trueTypeFont.getTableMap().get("cmap");
- ByteArrayInputStream bis = new ByteArrayInputStream(is);
- bis.skip(ttfTable.getOffset() + 21);
- Assert.assertEquals(bis.read(), 4); //subtableFormat
-
- doc.close();
- doc2.close();
+ try (PDDocument doc2 = PDFBoxAdapterTestCase.load(FontMergeTestCase.TTSubset2)) {
+ String name = mbfont.addFont(getFont(doc2, "R9"));
+ Assert.assertEquals(name, font);
+ Assert.assertEquals(mbfont.getFontName(), font);
+ byte[] is = IOUtils.toByteArray(mbfont.getInputStream());
+ Assert.assertEquals(is.length, 41104);
+
+ TrueTypeFont trueTypeFont = new TTFParser().parse(new RandomAccessReadBuffer(is));
+ TTFTable ttfTable = trueTypeFont.getTableMap().get("cmap");
+ ByteArrayInputStream bis = new ByteArrayInputStream(is);
+ bis.skip(ttfTable.getOffset() + 21);
+ Assert.assertEquals(bis.read(), 4); //subtableFormat
+ }
+ }
}
@Test
public void testType1Subset() throws Exception {
- PDDocument doc = PDFBoxAdapterTestCase.load(FontMergeTestCase.Type1Subset1);
- FOPPDFSingleByteFont mbfont = new FOPPDFSingleByteFont(getFont(doc, "F15"), "",
- new DefaultEventBroadcaster(), params);
- mbfont.addFont(getFont(doc, "F15"));
- PDDocument doc2 = PDFBoxAdapterTestCase.load(FontMergeTestCase.Type1Subset2);
- mbfont.addFont(getFont(doc2, "F15"));
- Type1Font f = Type1Font.createWithPFB(mbfont.getInputStream());
- Set<String> csDict = new TreeSet<String>(f.getCharStringsDict().keySet());
- Assert.assertEquals(csDict.toString(), "[.notdef, a, d, e, hyphen, l, m, n, p, s, space, t, two, x]");
- Assert.assertEquals(f.getSubrsArray().size(), 518);
- Assert.assertEquals(f.getFamilyName(), "Verdana");
- doc.close();
- doc2.close();
+ try (PDDocument doc = PDFBoxAdapterTestCase.load(FontMergeTestCase.Type1Subset1)) {
+ FOPPDFSingleByteFont mbfont = new FOPPDFSingleByteFont(getFont(doc, "F15"), "",
+ new DefaultEventBroadcaster(), params);
+ mbfont.addFont(getFont(doc, "F15"));
+ try (PDDocument doc2 = PDFBoxAdapterTestCase.load(FontMergeTestCase.Type1Subset2)) {
+ mbfont.addFont(getFont(doc2, "F15"));
+ Type1Font f = Type1Font.createWithPFB(mbfont.getInputStream());
+ Set<String> csDict = new TreeSet<String>(f.getCharStringsDict().keySet());
+ Assert.assertEquals(csDict.toString(), "[.notdef, a, d, e, hyphen, l, m, n, p, s, space, t, two, x]");
+ Assert.assertEquals(f.getSubrsArray().size(), 518);
+ Assert.assertEquals(f.getFamilyName(), "Verdana");
+ }
+ }
}
@Test
public void testHadMappingOperations() throws IOException {
- PDDocument pdf = PDFBoxAdapterTestCase.load(FontMergeTestCase.TTCID1);
- COSDictionary font = getFont(pdf, "C2_0");
- font.removeItem(COSName.TO_UNICODE);
- FOPPDFMultiByteFont multiByteFont = new FOPPDFMultiByteFont(font, null, new DefaultEventBroadcaster());
- Assert.assertTrue(multiByteFont.hadMappingOperations());
- pdf.close();
+ try (PDDocument doc = PDFBoxAdapterTestCase.load(FontMergeTestCase.TTCID1)) {
+ COSDictionary font = getFont(doc, "C2_0");
+ font.removeItem(COSName.TO_UNICODE);
+ FOPPDFMultiByteFont multiByteFont = new FOPPDFMultiByteFont(font, null, new DefaultEventBroadcaster());
+ Assert.assertTrue(multiByteFont.hadMappingOperations());
+ }
}
@Test
public void testMappingNotFound() throws IOException {
- PDDocument pdf = PDFBoxAdapterTestCase.load(FontMergeTestCase.TTCID1);
- final COSDictionary fontDict = getFont(pdf, "C2_0");
- MyFOPPDFMultiByteFont multiByteFont = new MyFOPPDFMultiByteFont(fontDict, null);
- PDType0Font font = (PDType0Font) multiByteFont.getFontContainer().getFont();
- GlyphTable glyphTable = ((PDCIDFontType2)font.getDescendantFont()).getTrueTypeFont().getGlyph();
- glyphTable.setGlyphs(
- new GlyphData[((PDCIDFontType2) font.getDescendantFont()).getTrueTypeFont().getNumberOfGlyphs() - 1]);
- IOException ex = Assert.assertThrows(IOException.class, () -> multiByteFont.addFont(fontDict));
- Assert.assertEquals(ex.getMessage(), "Mapping not found in glyphData");
- pdf.close();
+ try (PDDocument doc = PDFBoxAdapterTestCase.load(FontMergeTestCase.TTCID1)) {
+ final COSDictionary fontDict = getFont(doc, "C2_0");
+ MyFOPPDFMultiByteFont multiByteFont = new MyFOPPDFMultiByteFont(fontDict, null);
+ PDType0Font font = (PDType0Font) multiByteFont.getFontContainer().getFont();
+ GlyphTable glyphTable = ((PDCIDFontType2) font.getDescendantFont()).getTrueTypeFont().getGlyph();
+ glyphTable.setGlyphs(new GlyphData[
+ ((PDCIDFontType2) font.getDescendantFont()).getTrueTypeFont().getNumberOfGlyphs() - 1]);
+ IOException ex = Assert.assertThrows(IOException.class, () -> multiByteFont.addFont(fontDict));
+ Assert.assertEquals(ex.getMessage(), "Mapping not found in glyphData");
+ }
}
private static class MyFOPPDFMultiByteFont extends FOPPDFMultiByteFont {
@@ -259,40 +256,40 @@ public class FOPPDFSingleMultiByteFontTestCase {
@Test
public void testCmapFormat() throws Exception {
- PDDocument doc = PDFBoxAdapterTestCase.load(FontMergeTestCase.TTSubset10);
- FOPPDFSingleByteFont sbfont = new FOPPDFSingleByteFont(getFont(doc, "F1"), "test",
- new DefaultEventBroadcaster(), params);
- byte[] bytes = IOUtils.toByteArray(sbfont.getInputStream());
- TrueTypeFont trueTypeFont = new TTFParser().parse(new RandomAccessReadBuffer(bytes));
- CmapTable ttfTable = (CmapTable) trueTypeFont.getTableMap().get("cmap");
- Assert.assertEquals(ttfTable.getCmaps()[0].getPlatformId(), 0);
- Assert.assertEquals(ttfTable.getCmaps()[1].getPlatformId(), 1);
- Assert.assertEquals(ttfTable.getCmaps()[2].getPlatformId(), 3);
- ByteArrayInputStream bis = new ByteArrayInputStream(bytes);
- bis.skip(ttfTable.getOffset() + 29);
- Assert.assertEquals(bis.read(), 12); //subtableFormat
- bis.skip(14);
- bis.skip(34 * 12);
- DataInputStream dis = new DataInputStream(bis);
- Assert.assertEquals(dis.readShort(), 4); //subtableFormat
- dis.skip(2 * 6);
- dis.skip(39 * 2); //endCode
- Assert.assertEquals(dis.readShort(), (short)0xFFFF);
- dis.skip(2); //reservedPad
- dis.skip(39 * 2); //startCode
- Assert.assertEquals(dis.readShort(), (short)0xFFFF);
- dis.skip(39 * 2); //idDelta
- Assert.assertEquals(dis.readShort(), 0);
- dis.skip(39 * 2); //idRangeOffsets
- Assert.assertEquals(dis.readShort(), 0);
- Assert.assertEquals(dis.readShort(), 4); //subtableFormat
- dis.skip(2 * 6);
- dis.skip(2 * 36); //endCode
- Assert.assertEquals(dis.readShort(), (short)0xFFFF);
- dis.skip(2); //reservedPad
- dis.skip(2 * 36); //startCode
- Assert.assertEquals(dis.readShort(), (short)0xFFFF);
- doc.close();
+ try (PDDocument doc = PDFBoxAdapterTestCase.load(FontMergeTestCase.TTSubset10)) {
+ FOPPDFSingleByteFont sbfont = new FOPPDFSingleByteFont(getFont(doc, "F1"), "test",
+ new DefaultEventBroadcaster(), params);
+ byte[] bytes = IOUtils.toByteArray(sbfont.getInputStream());
+ TrueTypeFont trueTypeFont = new TTFParser().parse(new RandomAccessReadBuffer(bytes));
+ CmapTable ttfTable = (CmapTable) trueTypeFont.getTableMap().get("cmap");
+ Assert.assertEquals(ttfTable.getCmaps()[0].getPlatformId(), 0);
+ Assert.assertEquals(ttfTable.getCmaps()[1].getPlatformId(), 1);
+ Assert.assertEquals(ttfTable.getCmaps()[2].getPlatformId(), 3);
+ ByteArrayInputStream bis = new ByteArrayInputStream(bytes);
+ bis.skip(ttfTable.getOffset() + 29);
+ Assert.assertEquals(bis.read(), 12); //subtableFormat
+ bis.skip(14);
+ bis.skip(34 * 12);
+ DataInputStream dis = new DataInputStream(bis);
+ Assert.assertEquals(dis.readShort(), 4); //subtableFormat
+ dis.skip(2 * 6);
+ dis.skip(39 * 2); //endCode
+ Assert.assertEquals(dis.readShort(), (short) 0xFFFF);
+ dis.skip(2); //reservedPad
+ dis.skip(39 * 2); //startCode
+ Assert.assertEquals(dis.readShort(), (short) 0xFFFF);
+ dis.skip(39 * 2); //idDelta
+ Assert.assertEquals(dis.readShort(), 0);
+ dis.skip(39 * 2); //idRangeOffsets
+ Assert.assertEquals(dis.readShort(), 0);
+ Assert.assertEquals(dis.readShort(), 4); //subtableFormat
+ dis.skip(2 * 6);
+ dis.skip(2 * 36); //endCode
+ Assert.assertEquals(dis.readShort(), (short) 0xFFFF);
+ dis.skip(2); //reservedPad
+ dis.skip(2 * 36); //startCode
+ Assert.assertEquals(dis.readShort(), (short) 0xFFFF);
+ }
}
@Test
@@ -307,72 +304,70 @@ public class FOPPDFSingleMultiByteFontTestCase {
@Test
public void testTTMergeGlyphs() throws IOException {
- PDDocument doc = PDFBoxAdapterTestCase.load(FontMergeTestCase.TTSubset3);
- FOPPDFSingleByteFont sbFont = new FOPPDFSingleByteFont(getFont(doc, "F1"), "ArialMT_TrueTypecidcmap1",
- new DefaultEventBroadcaster(), params);
- PDDocument doc2 = PDFBoxAdapterTestCase.load(FontMergeTestCase.TTSubset5);
- sbFont.addFont(getFont(doc2, "F1"));
- doc.close();
- doc2.close();
- TrueTypeFont trueTypeFont = new TTFParser().parse(new RandomAccessReadBuffer(sbFont.getInputStream()));
- List<Integer> contours = new ArrayList<>();
- for (int i = 0; i < trueTypeFont.getNumberOfGlyphs(); i++) {
- GlyphData glyphData = trueTypeFont.getGlyph().getGlyph(i);
- contours.add((int)glyphData.getNumberOfContours());
+ try (PDDocument doc = PDFBoxAdapterTestCase.load(FontMergeTestCase.TTSubset3)) {
+ FOPPDFSingleByteFont sbFont = new FOPPDFSingleByteFont(getFont(doc, "F1"), "ArialMT_TrueTypecidcmap1",
+ new DefaultEventBroadcaster(), params);
+ try (PDDocument doc2 = PDFBoxAdapterTestCase.load(FontMergeTestCase.TTSubset5)) {
+ sbFont.addFont(getFont(doc2, "F1"));
+ }
+ TrueTypeFont trueTypeFont = new TTFParser().parse(new RandomAccessReadBuffer(sbFont.getInputStream()));
+ List<Integer> contours = new ArrayList<>();
+ for (int i = 0; i < trueTypeFont.getNumberOfGlyphs(); i++) {
+ GlyphData glyphData = trueTypeFont.getGlyph().getGlyph(i);
+ contours.add((int)glyphData.getNumberOfContours());
+ }
+ Assert.assertEquals(contours, Arrays.asList(2, 4, 2, 3, 1, 3));
}
- Assert.assertEquals(contours, Arrays.asList(2, 4, 2, 3, 1, 3));
}
@Test
public void testPerformance() throws IOException {
- PDDocument doc = PDFBoxAdapterTestCase.load(FontMergeTestCase.TTSubset3);
- final int[] calls = {0};
- FOPPDFSingleByteFont mbfont = new FOPPDFSingleByteFont(getFont(doc, "F1"),
- "ArialMT_TrueTypecidcmap2", new DefaultEventBroadcaster(), params) {
- protected void readCmapEntry(Map.Entry<Integer, Integer> entry, TrueTypeFont ttfont,
- MergeTTFonts.Cmap tempCmap,
- Map<Integer, Integer> oldToNewGIMapPerFont) throws IOException {
- super.readCmapEntry(entry, ttfont, tempCmap, oldToNewGIMapPerFont);
- calls[0]++;
+ try (PDDocument doc = PDFBoxAdapterTestCase.load(FontMergeTestCase.TTSubset3)) {
+ final int[] calls = {0};
+ FOPPDFSingleByteFont mbfont = new FOPPDFSingleByteFont(getFont(doc, "F1"),
+ "ArialMT_TrueTypecidcmap2", new DefaultEventBroadcaster(), params) {
+ protected void readCmapEntry(Map.Entry<Integer, Integer> entry, TrueTypeFont ttfont,
+ MergeTTFonts.Cmap tempCmap,
+ Map<Integer, Integer> oldToNewGIMapPerFont) throws IOException {
+ super.readCmapEntry(entry, ttfont, tempCmap, oldToNewGIMapPerFont);
+ calls[0]++;
+ }
+ };
+ try (PDDocument doc2 = PDFBoxAdapterTestCase.load(FontMergeTestCase.TTSubset5)) {
+ mbfont.addFont(getFont(doc2, "F1"));
}
- };
- PDDocument doc2 = PDFBoxAdapterTestCase.load(FontMergeTestCase.TTSubset5);
- mbfont.addFont(getFont(doc2, "F1"));
- doc.close();
- doc2.close();
- Assert.assertEquals(calls[0], 512);
+ Assert.assertEquals(calls[0], 512);
+ }
}
@Test
public void testNoEOFOnValidation() throws IOException {
- PDDocument doc = PDFBoxAdapterTestCase.load(FontMergeTestCase.TTSubset1);
- PDDocument doc2 = PDFBoxAdapterTestCase.load(FontMergeTestCase.TTSubset5);
- PDFBoxEventProducer eventProducer = mock(PDFBoxEventProducer.class);
- FOPPDFSingleByteFont sbFont = new FOPPDFSingleByteFont(getFont(doc, "R11"), "QOYQBZ+TimesNewRomanPSMT",
- getEventBroadcaster(eventProducer), params);
- sbFont.addFont(getFont(doc2, "F1"));
- doc.close();
- doc2.close();
- sbFont.getInputStream();
- verifyNoEvents(eventProducer);
+ try (PDDocument doc = PDFBoxAdapterTestCase.load(FontMergeTestCase.TTSubset1)) {
+ try (PDDocument doc2 = PDFBoxAdapterTestCase.load(FontMergeTestCase.TTSubset5)) {
+ PDFBoxEventProducer eventProducer = mock(PDFBoxEventProducer.class);
+ FOPPDFSingleByteFont sbFont = new FOPPDFSingleByteFont(getFont(doc, "R11"), "QOYQBZ+TimesNewRomanPSMT",
+ getEventBroadcaster(eventProducer), params);
+ sbFont.addFont(getFont(doc2, "F1"));
+ sbFont.getInputStream();
+ verifyNoEvents(eventProducer);
+ }
+ }
}
@Test
public void testValidationMultiByteFont() throws IOException {
- PDDocument doc = PDFBoxAdapterTestCase.load("ttsubset11.pdf");
- PDDocument doc2 = PDFBoxAdapterTestCase.load("ttsubset12.pdf");
-
- PDFBoxEventProducer eventProducer = mock(PDFBoxEventProducer.class);
-
- FOPPDFMultiByteFont sbFont = new FOPPDFMultiByteFont(getFont(doc, "C2_0"), "CIDFont+F2",
- getEventBroadcaster(eventProducer));
- sbFont.addFont(getFont(doc2, "C2_1"));
+ try (PDDocument doc = PDFBoxAdapterTestCase.load("ttsubset11.pdf")) {
+ try (PDDocument doc2 = PDFBoxAdapterTestCase.load("ttsubset12.pdf")) {
- doc.close();
- doc2.close();
+ PDFBoxEventProducer eventProducer = mock(PDFBoxEventProducer.class);
- sbFont.getInputStream();
- verifyNoEvents(eventProducer);
+ FOPPDFMultiByteFont sbFont = new FOPPDFMultiByteFont(getFont(doc, "C2_0"), "CIDFont+F2",
+ getEventBroadcaster(eventProducer));
+ sbFont.addFont(getFont(doc2, "C2_1"));
+ sbFont.getInputStream();
+ verifyNoEvents(eventProducer);
+ }
+ }
}
@Test
@@ -454,19 +449,19 @@ public class FOPPDFSingleMultiByteFontTestCase {
}
private Map<Integer, GlyphData> getGlyphs(String pdf, String fontName) throws IOException {
- PDDocument doc = PDFBoxAdapterTestCase.load(pdf);
- PDTrueTypeFont font = (PDTrueTypeFont) doc.getPage(0).getResources().getFont(COSName.getPDFName(fontName));
- TrueTypeFont ttf = font.getTrueTypeFont();
- Map<Integer, GlyphData> glyphs = new HashMap<>();
- for (Map.Entry<Integer, Integer> entry : FOPPDFSingleByteFont.getCharacterCodeToGlyphId(
- ttf.getCmap().getCmaps()[0]).entrySet()) {
- GlyphData glyph = ttf.getGlyph().getGlyph(entry.getValue());
- if (glyph.getNumberOfContours() != 0) {
- glyphs.put(entry.getKey(), glyph);
+ try (PDDocument doc = PDFBoxAdapterTestCase.load(pdf)) {
+ PDTrueTypeFont font = (PDTrueTypeFont) doc.getPage(0).getResources().getFont(COSName.getPDFName(fontName));
+ TrueTypeFont ttf = font.getTrueTypeFont();
+ Map<Integer, GlyphData> glyphs = new HashMap<>();
+ for (Map.Entry<Integer, Integer> entry : FOPPDFSingleByteFont.getCharacterCodeToGlyphId(
+ ttf.getCmap().getCmaps()[0]).entrySet()) {
+ GlyphData glyph = ttf.getGlyph().getGlyph(entry.getValue());
+ if (glyph.getNumberOfContours() != 0) {
+ glyphs.put(entry.getKey(), glyph);
+ }
}
+ return glyphs;
}
- doc.close();
- return glyphs;
}
@Test
@@ -496,14 +491,14 @@ public class FOPPDFSingleMultiByteFontTestCase {
FOPPDFSingleByteFont sbFont = null;
PDFBoxEventProducer eventProducer = mock(PDFBoxEventProducer.class);
for (Map.Entry<String, String> entry : pdfs.entrySet()) {
- PDDocument doc = PDFBoxAdapterTestCase.load(entry.getKey());
- if (sbFont == null) {
- sbFont = new FOPPDFSingleByteFont(getFont(doc, entry.getValue()), fontName,
- getEventBroadcaster(eventProducer), new PDFMergeFontsParams(remap));
- } else {
- sbFont.addFont(getFont(doc, entry.getValue()));
+ try (PDDocument doc = PDFBoxAdapterTestCase.load(entry.getKey())) {
+ if (sbFont == null) {
+ sbFont = new FOPPDFSingleByteFont(getFont(doc, entry.getValue()), fontName,
+ getEventBroadcaster(eventProducer), new PDFMergeFontsParams(remap));
+ } else {
+ sbFont.addFont(getFont(doc, entry.getValue()));
+ }
}
- doc.close();
}
InputStream is = sbFont.getInputStream();
verifyNoEvents(eventProducer);
diff --git a/test/java/org/apache/fop/render/pdf/pdfbox/FontMergeTestCase.java b/test/java/org/apache/fop/render/pdf/pdfbox/FontMergeTestCase.java
index d786010..37e21b2 100644
--- a/test/java/org/apache/fop/render/pdf/pdfbox/FontMergeTestCase.java
+++ b/test/java/org/apache/fop/render/pdf/pdfbox/FontMergeTestCase.java
@@ -94,25 +94,24 @@ public class FontMergeTestCase {
protected static final String TYPE0CFF = "type0cff.pdf";
protected static String writeText(FontInfo fi, String pdf) throws IOException {
- PDDocument doc = PDFBoxAdapterTestCase.load(pdf);
- PDPage page = doc.getPage(0);
- AffineTransform pageAdjust = new AffineTransform();
- String c = (String) PDFBoxAdapterTestCase.getPDFBoxAdapter(true, false)
- .createStreamFromPDFBoxPage(doc, page, pdf, pageAdjust, fi, new Rectangle(), new AffineTransform());
- doc.close();
- return c;
+ try (PDDocument doc = PDFBoxAdapterTestCase.load(pdf)) {
+ PDPage page = doc.getPage(0);
+ AffineTransform pageAdjust = new AffineTransform();
+ return (String) PDFBoxAdapterTestCase.getPDFBoxAdapter(true, false)
+ .createStreamFromPDFBoxPage(doc, page, pdf, pageAdjust, fi, new Rectangle(), new AffineTransform());
+ }
}
@Test
public void testMergeFontsAndFormXObject() throws IOException {
- PDDocument doc = PDFBoxAdapterTestCase.load(PDFBoxAdapterTestCase.IMAGE);
- PDPage page = doc.getPage(0);
- AffineTransform pageAdjust = new AffineTransform();
- RuntimeException ex = Assert.assertThrows(RuntimeException.class, () ->
- PDFBoxAdapterTestCase.getPDFBoxAdapter(true, true).createStreamFromPDFBoxPage(
- doc, page, PDFBoxAdapterTestCase.IMAGE, pageAdjust, new FontInfo(), new Rectangle(), pageAdjust));
- doc.close();
- assertEquals(ex.getMessage(), "merge-fonts and form-xobject can't both be enabled");
+ try (PDDocument doc = PDFBoxAdapterTestCase.load(PDFBoxAdapterTestCase.IMAGE)) {
+ PDPage page = doc.getPage(0);
+ AffineTransform pageAdjust = new AffineTransform();
+ RuntimeException ex = Assert.assertThrows(RuntimeException.class, () ->
+ PDFBoxAdapterTestCase.getPDFBoxAdapter(true, true).createStreamFromPDFBoxPage(doc,
+ page, PDFBoxAdapterTestCase.IMAGE, pageAdjust, new FontInfo(), new Rectangle(), pageAdjust));
+ assertEquals(ex.getMessage(), "merge-fonts and form-xobject can't both be enabled");
+ }
}
@Test
@@ -208,12 +207,12 @@ public class FontMergeTestCase {
Map<Integer, PDFArray> pageNumbers = new HashMap<Integer, PDFArray>();
PDFBoxAdapter adapter = new PDFBoxAdapter(pdfpage, new HashMap<>(), new HashMap<>(), pageNumbers,
new HashMap<>(), new DefaultEventBroadcaster());
- PDDocument doc = PDFBoxAdapterTestCase.load(XFORM);
- PDPage page = doc.getPage(0);
- AffineTransform pageAdjust = new AffineTransform();
- Rectangle r = new Rectangle(0, 1650, 842000, 595000);
- adapter.createStreamFromPDFBoxPage(doc, page, "key", pageAdjust, new FontInfo(), r, pageAdjust);
- doc.close();
+ try (PDDocument doc = PDFBoxAdapterTestCase.load(XFORM)) {
+ PDPage page = doc.getPage(0);
+ AffineTransform pageAdjust = new AffineTransform();
+ Rectangle r = new Rectangle(0, 1650, 842000, 595000);
+ adapter.createStreamFromPDFBoxPage(doc, page, "key", pageAdjust, new FontInfo(), r, pageAdjust);
+ }
ByteArrayOutputStream bos = new ByteArrayOutputStream();
pdfdoc.output(bos);
Assert.assertFalse(bos.toString(StandardCharsets.UTF_8.name()).contains("/W 5 /H 5 /BPC 8 /CS /RGB ID ÿÿÿ"));
@@ -229,19 +228,18 @@ public class FontMergeTestCase {
@Test
public void testMergeTT() throws IOException {
- PDDocument doc = PDFBoxAdapterTestCase.load(TYPE0TT);
- PDType0Font type0Font = (PDType0Font) doc.getPage(0).getResources().getFont(COSName.getPDFName("C2_0"));
- PDCIDFontType2 ttf = (PDCIDFontType2) type0Font.getDescendantFont();
- InputStream originalData = ttf.getTrueTypeFont().getOriginalData();
- byte[] originalDataBytes = IOUtils.toByteArray(originalData);
- doc.close();
-
- MergeTTFonts mergeTTFonts = new MergeTTFonts(null);
- Map<Integer, Integer> map = new HashMap<Integer, Integer>();
- map.put(0, 0);
- mergeTTFonts.readFont(new ByteArrayInputStream(originalDataBytes), null, null, map, true);
- byte[] mergedData = mergeTTFonts.getMergedFontSubset();
- Assert.assertArrayEquals(mergedData, originalDataBytes);
+ try (PDDocument doc = PDFBoxAdapterTestCase.load(TYPE0TT)) {
+ PDType0Font type0Font = (PDType0Font) doc.getPage(0).getResources().getFont(COSName.getPDFName("C2_0"));
+ PDCIDFontType2 ttf = (PDCIDFontType2) type0Font.getDescendantFont();
+ InputStream originalData = ttf.getTrueTypeFont().getOriginalData();
+ byte[] originalDataBytes = IOUtils.toByteArray(originalData);
+ MergeTTFonts mergeTTFonts = new MergeTTFonts(null);
+ Map<Integer, Integer> map = new HashMap<Integer, Integer>();
+ map.put(0, 0);
+ mergeTTFonts.readFont(new ByteArrayInputStream(originalDataBytes), null, null, map, true);
+ byte[] mergedData = mergeTTFonts.getMergedFontSubset();
+ Assert.assertArrayEquals(mergedData, originalDataBytes);
+ }
}
@Test
diff --git a/test/java/org/apache/fop/render/pdf/pdfbox/ImageConverterPDF2AFPTestCase.java b/test/java/org/apache/fop/render/pdf/pdfbox/ImageConverterPDF2AFPTestCase.java
index 9392fab..ae70652 100644
--- a/test/java/org/apache/fop/render/pdf/pdfbox/ImageConverterPDF2AFPTestCase.java
+++ b/test/java/org/apache/fop/render/pdf/pdfbox/ImageConverterPDF2AFPTestCase.java
@@ -34,19 +34,19 @@ import org.apache.xmlgraphics.image.loader.impl.ImageRawStream;
public class ImageConverterPDF2AFPTestCase {
@Test
public void testConverter() throws Exception {
- PDDocument orgdoc = PDFBoxAdapterTestCase.load(PDFBoxAdapterTestCase.ANNOT);
- String orgPage = IOUtils.toString(orgdoc.getPage(1).getContents(), StandardCharsets.UTF_8);
- Assert.assertEquals(orgdoc.getNumberOfPages(), 2);
- ImageInfo info = new ImageInfo("x.pdf#page=2", ImagePDF.MIME_PDF);
- ImagePDF imagePDF = new ImagePDF(info, orgdoc);
- ImageConverterPDF2AFP converter = new ImageConverterPDF2AFP();
- ImageRawStream stream = (ImageRawStream) converter.convert(imagePDF, null);
- PDDocument doc = Loader.loadPDF(new RandomAccessReadBuffer(stream.createInputStream()));
- PDPage page = doc.getPage(0);
- Assert.assertEquals(orgPage, IOUtils.toString(page.getContents(), StandardCharsets.UTF_8));
- Assert.assertEquals(doc.getNumberOfPages(), 1);
- Assert.assertEquals(stream.getMimeType(), ImagePDF.MIME_PDF);
- orgdoc.close();
- doc.close();
+ try (PDDocument orgdoc = PDFBoxAdapterTestCase.load(PDFBoxAdapterTestCase.ANNOT)) {
+ String orgPage = IOUtils.toString(orgdoc.getPage(1).getContents(), StandardCharsets.UTF_8);
+ Assert.assertEquals(orgdoc.getNumberOfPages(), 2);
+ ImageInfo info = new ImageInfo("x.pdf#page=2", ImagePDF.MIME_PDF);
+ ImagePDF imagePDF = new ImagePDF(info, orgdoc);
+ ImageConverterPDF2AFP converter = new ImageConverterPDF2AFP();
+ ImageRawStream stream = (ImageRawStream) converter.convert(imagePDF, null);
+ try (PDDocument doc = Loader.loadPDF(new RandomAccessReadBuffer(stream.createInputStream()))) {
+ PDPage page = doc.getPage(0);
+ Assert.assertEquals(orgPage, IOUtils.toString(page.getContents(), StandardCharsets.UTF_8));
+ Assert.assertEquals(doc.getNumberOfPages(), 1);
+ Assert.assertEquals(stream.getMimeType(), ImagePDF.MIME_PDF);
+ }
+ }
}
}
diff --git a/test/java/org/apache/fop/render/pdf/pdfbox/ImageConverterPDF2G2DTestCase.java b/test/java/org/apache/fop/render/pdf/pdfbox/ImageConverterPDF2G2DTestCase.java
index 79ef06f..7585873 100644
--- a/test/java/org/apache/fop/render/pdf/pdfbox/ImageConverterPDF2G2DTestCase.java
+++ b/test/java/org/apache/fop/render/pdf/pdfbox/ImageConverterPDF2G2DTestCase.java
@@ -66,37 +66,35 @@ public class ImageConverterPDF2G2DTestCase {
}
private boolean pdfToPS(String pdf, String font) throws IOException, ImageException {
- PDDocument doc = PDFBoxAdapterTestCase.load(pdf);
- MyLazyFont lazyFont = new MyLazyFont();
- pdfToPS(doc, pdf, font, lazyFont);
- return lazyFont.font.fontUsed;
+ try (PDDocument doc = PDFBoxAdapterTestCase.load(pdf)) {
+ MyLazyFont lazyFont = new MyLazyFont();
+ pdfToPS(doc, pdf, font, lazyFont);
+ return lazyFont.font.fontUsed;
+ }
}
private void pdfToPS(String pdf, LazyFont lazyFont) throws IOException, ImageException {
- PDDocument doc = PDFBoxAdapterTestCase.load(pdf);
- pdfToPS(doc, pdf, "NewsMinIWA-Th", lazyFont);
+ try (PDDocument doc = PDFBoxAdapterTestCase.load(pdf)) {
+ pdfToPS(doc, pdf, "NewsMinIWA-Th", lazyFont);
+ }
}
private String pdfToPS(PDDocument doc, String pdf, String font, LazyFont lazyFont)
throws IOException, ImageException {
- try {
- ImageConverterPDF2G2D i = new ImageConverterPDF2G2D();
- ImageInfo imgi = new ImageInfo(pdf, "b");
- org.apache.xmlgraphics.image.loader.Image img = new ImagePDF(imgi, doc);
- ImageGraphics2D ig = (ImageGraphics2D) i.convert(img, null);
- GeneralGraphics2DImagePainter g = (GeneralGraphics2DImagePainter) ig.getGraphics2DImagePainter();
- g.addFallbackFont(font, lazyFont);
- ByteArrayOutputStream stream = new ByteArrayOutputStream();
- PSPDFGraphics2D g2d = (PSPDFGraphics2D)
- g.getGraphics(true, new PDFBoxAdapterTestCase.FOPPSGeneratorImpl(stream));
- Rectangle2D rect = new Rectangle2D.Float(0, 0, 100, 100);
- GraphicContext gc = new GraphicContext();
- g2d.setGraphicContext(gc);
- g.paint(g2d, rect);
- return stream.toString(StandardCharsets.UTF_8.name());
- } finally {
- doc.close();
- }
+ ImageConverterPDF2G2D i = new ImageConverterPDF2G2D();
+ ImageInfo imgi = new ImageInfo(pdf, "b");
+ org.apache.xmlgraphics.image.loader.Image img = new ImagePDF(imgi, doc);
+ ImageGraphics2D ig = (ImageGraphics2D) i.convert(img, null);
+ GeneralGraphics2DImagePainter g = (GeneralGraphics2DImagePainter) ig.getGraphics2DImagePainter();
+ g.addFallbackFont(font, lazyFont);
+ ByteArrayOutputStream stream = new ByteArrayOutputStream();
+ PSPDFGraphics2D g2d = (PSPDFGraphics2D)
+ g.getGraphics(true, new PDFBoxAdapterTestCase.FOPPSGeneratorImpl(stream));
+ Rectangle2D rect = new Rectangle2D.Float(0, 0, 100, 100);
+ GraphicContext gc = new GraphicContext();
+ g2d.setGraphicContext(gc);
+ g.paint(g2d, rect);
+ return stream.toString(StandardCharsets.UTF_8.name());
}
static class MyLazyFont extends LazyFont {
@@ -122,36 +120,37 @@ public class ImageConverterPDF2G2DTestCase {
@Test
public void testPDFToImage() throws IOException, ImageException {
- PDDocument doc = PDFBoxAdapterTestCase.load(FONTSNOTEMBEDDED);
- ImageInfo imgi = new ImageInfo(FONTSNOTEMBEDDED, "b");
- org.apache.xmlgraphics.image.loader.Image img = new ImagePDF(imgi, doc);
- ImageConverterPDF2G2D imageConverterPDF2G2D = new ImageConverterPDF2G2D();
- ImageGraphics2D fopGraphics2D = (ImageGraphics2D) imageConverterPDF2G2D.convert(img, null);
- BufferedImage image = new BufferedImage(100, 100, BufferedImage.TYPE_INT_ARGB);
- Graphics2D graphics2D = image.createGraphics();
- fopGraphics2D.getGraphics2DImagePainter().paint(graphics2D, new Rectangle(0, 0, 1000, 1000));
- doc.close();
- Assert.assertEquals(graphics2D.getTransform().getScaleX(), 1.63, 0);
+ try (PDDocument doc = PDFBoxAdapterTestCase.load(FONTSNOTEMBEDDED)) {
+ ImageInfo imgi = new ImageInfo(FONTSNOTEMBEDDED, "b");
+ org.apache.xmlgraphics.image.loader.Image img = new ImagePDF(imgi, doc);
+ ImageConverterPDF2G2D imageConverterPDF2G2D = new ImageConverterPDF2G2D();
+ ImageGraphics2D fopGraphics2D = (ImageGraphics2D) imageConverterPDF2G2D.convert(img, null);
+ BufferedImage image = new BufferedImage(100, 100, BufferedImage.TYPE_INT_ARGB);
+ Graphics2D graphics2D = image.createGraphics();
+ fopGraphics2D.getGraphics2DImagePainter().paint(graphics2D, new Rectangle(0, 0, 1000, 1000));
+ Assert.assertEquals(graphics2D.getTransform().getScaleX(), 1.63, 0);
+ }
}
@Test
public void testCheckImageMask() throws IOException, ImageException {
String pdf = FontMergeTestCase.CFFCID1;
- PDDocument doc = PDFBoxAdapterTestCase.load(pdf);
- COSStream cosStream = new COSStream();
- OutputStream outputStream = cosStream.createOutputStream();
- outputStream.write("/Fm0 Do\n".getBytes(StandardCharsets.UTF_8));
- outputStream.close();
- PDStream pdStream = new PDStream(cosStream);
- doc.getPage(0).setContents(pdStream);
-
- PDXObject form = doc.getPage(0).getResources().getXObject(COSName.getPDFName("Fm0"));
- OutputStream formStream = form.getCOSObject().createOutputStream();
- formStream.write("1 g".getBytes(StandardCharsets.UTF_8));
- formStream.close();
-
- String ps = pdfToPS(doc, pdf, null, null);
- Assert.assertTrue(ps.contains("/ImageType 1"));
+ try (PDDocument doc = PDFBoxAdapterTestCase.load(pdf)) {
+ COSStream cosStream = new COSStream();
+ OutputStream outputStream = cosStream.createOutputStream();
+ outputStream.write("/Fm0 Do\n".getBytes(StandardCharsets.UTF_8));
+ outputStream.close();
+ PDStream pdStream = new PDStream(cosStream);
+ doc.getPage(0).setContents(pdStream);
+
+ PDXObject form = doc.getPage(0).getResources().getXObject(COSName.getPDFName("Fm0"));
+ OutputStream formStream = form.getCOSObject().createOutputStream();
+ formStream.write("1 g".getBytes(StandardCharsets.UTF_8));
+ formStream.close();
+
+ String ps = pdfToPS(doc, pdf, null, null);
+ Assert.assertTrue(ps.contains("/ImageType 1"));
+ }
}
@Test
diff --git a/test/java/org/apache/fop/render/pdf/pdfbox/PDFBoxAdapterTestCase.java b/test/java/org/apache/fop/render/pdf/pdfbox/PDFBoxAdapterTestCase.java
index 82afb7d..a79e53a 100644
--- a/test/java/org/apache/fop/render/pdf/pdfbox/PDFBoxAdapterTestCase.java
+++ b/test/java/org/apache/fop/render/pdf/pdfbox/PDFBoxAdapterTestCase.java
@@ -137,13 +137,14 @@ public class PDFBoxAdapterTestCase {
public void testTaggedPDFWriter() throws IOException {
PDFBoxAdapter adapter = getPDFBoxAdapter(false, false);
adapter.setCurrentMCID(5);
- PDDocument doc = load(HELLOTagged);
- PDPage page = doc.getPage(0);
- AffineTransform pageAdjust = new AffineTransform();
- Rectangle r = new Rectangle(0, 1650, 842000, 595000);
- String stream = (String) adapter.createStreamFromPDFBoxPage(doc, page, "key", pageAdjust, null, r, pageAdjust);
- assertTrue(stream, stream.contains("/P <</MCID 5 >>BDC"));
- doc.close();
+ try (PDDocument doc = load(HELLOTagged)) {
+ PDPage page = doc.getPage(0);
+ AffineTransform pageAdjust = new AffineTransform();
+ Rectangle r = new Rectangle(0, 1650, 842000, 595000);
+ String stream = (String)
+ adapter.createStreamFromPDFBoxPage(doc, page, "key", pageAdjust, null, r, pageAdjust);
+ assertTrue(stream, stream.contains("/P <</MCID 5 >>BDC"));
+ }
}
@Test
@@ -154,32 +155,32 @@ public class PDFBoxAdapterTestCase {
pdfpage.setObjectNumber(1);
PDFBoxAdapter adapter = new PDFBoxAdapter(pdfpage, new HashMap<>(), new HashMap<>(), new HashMap<>(),
new HashMap<>(), new DefaultEventBroadcaster());
- PDDocument doc = load(ANNOT);
- PDPage page = doc.getPage(0);
- AffineTransform pageAdjust = new AffineTransform();
- Rectangle r = new Rectangle(0, 1650, 842000, 595000);
- ByteArrayOutputStream os = new ByteArrayOutputStream();
- pdfdoc.output(os);
- os.reset();
- adapter.createStreamFromPDFBoxPage(doc, page, "key", pageAdjust, null, r, pageAdjust);
- pdfdoc.outputTrailer(os);
- assertTrue(os.toString(StandardCharsets.UTF_8.name()).contains("/Fields ["));
- doc.close();
+ try (PDDocument doc = load(ANNOT)) {
+ PDPage page = doc.getPage(0);
+ AffineTransform pageAdjust = new AffineTransform();
+ Rectangle r = new Rectangle(0, 1650, 842000, 595000);
+ ByteArrayOutputStream os = new ByteArrayOutputStream();
+ pdfdoc.output(os);
+ os.reset();
+ adapter.createStreamFromPDFBoxPage(doc, page, "key", pageAdjust, null, r, pageAdjust);
+ pdfdoc.outputTrailer(os);
+ assertTrue(os.toString(StandardCharsets.UTF_8.name()).contains("/Fields ["));
+ }
}
@Test
public void testAnnot2() throws Exception {
PDFBoxAdapter adapter = getPDFBoxAdapter(false, false);
- PDDocument doc = load(ANNOT);
- PDPage page = doc.getPage(0);
- COSArray annots = (COSArray) page.getCOSObject().getDictionaryObject(COSName.ANNOTS);
- COSDictionary dict = (COSDictionary) ((COSObject)annots.get(0)).getObject();
- dict.setItem(COSName.PARENT, COSInteger.ONE);
+ try (PDDocument doc = load(ANNOT)) {
+ PDPage page = doc.getPage(0);
+ COSArray annots = (COSArray) page.getCOSObject().getDictionaryObject(COSName.ANNOTS);
+ COSDictionary dict = (COSDictionary) ((COSObject) annots.get(0)).getObject();
+ dict.setItem(COSName.PARENT, COSInteger.ONE);
- AffineTransform pageAdjust = new AffineTransform();
- Rectangle r = new Rectangle(0, 1650, 842000, 595000);
- adapter.createStreamFromPDFBoxPage(doc, page, "key", pageAdjust, null, r, pageAdjust);
- doc.close();
+ AffineTransform pageAdjust = new AffineTransform();
+ Rectangle r = new Rectangle(0, 1650, 842000, 595000);
+ adapter.createStreamFromPDFBoxPage(doc, page, "key", pageAdjust, null, r, pageAdjust);
+ }
}
@@ -191,17 +192,17 @@ public class PDFBoxAdapterTestCase {
pdfpage.setObjectNumber(1);
PDFBoxAdapter adapter = new PDFBoxAdapter(pdfpage, new HashMap<>(), new HashMap<>(), new HashMap<>(),
new HashMap<>(), new DefaultEventBroadcaster());
- PDDocument doc = load(ACCESSIBLERADIOBUTTONS);
- PDPage page = doc.getPage(0);
- AffineTransform pageAdjust = new AffineTransform();
- Rectangle r = new Rectangle(0, 1650, 842000, 595000);
- adapter.createStreamFromPDFBoxPage(doc, page, "key", pageAdjust, null, r, pageAdjust);
- ByteArrayOutputStream os = new ByteArrayOutputStream();
- pdfdoc.output(os);
- String out = os.toString(StandardCharsets.UTF_8.name());
- assertTrue(out.contains("/Parent "));
- assertTrue(out.contains("/Kids "));
- doc.close();
+ try (PDDocument doc = load(ACCESSIBLERADIOBUTTONS)) {
+ PDPage page = doc.getPage(0);
+ AffineTransform pageAdjust = new AffineTransform();
+ Rectangle r = new Rectangle(0, 1650, 842000, 595000);
+ adapter.createStreamFromPDFBoxPage(doc, page, "key", pageAdjust, null, r, pageAdjust);
+ ByteArrayOutputStream os = new ByteArrayOutputStream();
+ pdfdoc.output(os);
+ String out = os.toString(StandardCharsets.UTF_8.name());
+ assertTrue(out.contains("/Parent "));
+ assertTrue(out.contains("/Kids "));
+ }
}
@Test
@@ -212,18 +213,18 @@ public class PDFBoxAdapterTestCase {
pdfpage.setObjectNumber(1);
PDFBoxAdapter adapter = new PDFBoxAdapter(pdfpage, new HashMap<>(), new HashMap<>(), new HashMap<>(),
new HashMap<>(), new DefaultEventBroadcaster());
- PDDocument doc = load(ACCESSIBLERADIOBUTTONS);
- COSArray fields = (COSArray)
- doc.getDocumentCatalog().getAcroForm().getCOSObject().getDictionaryObject(COSName.FIELDS);
- fields.remove(0);
- PDPage page = doc.getPage(0);
- AffineTransform pageAdjust = new AffineTransform();
- Rectangle r = new Rectangle(0, 1650, 842000, 595000);
- adapter.createStreamFromPDFBoxPage(doc, page, "key", pageAdjust, null, r, pageAdjust);
- ByteArrayOutputStream os = new ByteArrayOutputStream();
- pdfdoc.outputTrailer(os);
- assertTrue(os.toString(StandardCharsets.UTF_8.name()).contains("/Fields []"));
- doc.close();
+ try (PDDocument doc = load(ACCESSIBLERADIOBUTTONS)) {
+ COSArray fields = (COSArray)
+ doc.getDocumentCatalog().getAcroForm().getCOSObject().getDictionaryObject(COSName.FIELDS);
+ fields.remove(0);
+ PDPage page = doc.getPage(0);
+ AffineTransform pageAdjust = new AffineTransform();
+ Rectangle r = new Rectangle(0, 1650, 842000, 595000);
+ adapter.createStreamFromPDFBoxPage(doc, page, "key", pageAdjust, null, r, pageAdjust);
+ ByteArrayOutputStream os = new ByteArrayOutputStream();
+ pdfdoc.outputTrailer(os);
+ assertTrue(os.toString(StandardCharsets.UTF_8.name()).contains("/Fields []"));
+ }
}
@Test
@@ -234,16 +235,16 @@ public class PDFBoxAdapterTestCase {
pdfpage.setObjectNumber(1);
PDFBoxAdapter adapter = new PDFBoxAdapter(pdfpage, new HashMap<>(), new HashMap<>(), new HashMap<>(),
new HashMap<>(), new DefaultEventBroadcaster());
- PDDocument doc = load(ACCESSIBLERADIOBUTTONS);
- doc.getDocumentCatalog().getAcroForm().getCOSObject().removeItem(COSName.FIELDS);
- PDPage page = doc.getPage(0);
- AffineTransform pageAdjust = new AffineTransform();
- Rectangle r = new Rectangle(0, 1650, 842000, 595000);
- adapter.createStreamFromPDFBoxPage(doc, page, "key", pageAdjust, null, r, pageAdjust);
- ByteArrayOutputStream os = new ByteArrayOutputStream();
- pdfdoc.outputTrailer(os);
- assertTrue(os.toString(StandardCharsets.UTF_8.name()).contains("/Fields []"));
- doc.close();
+ try (PDDocument doc = load(ACCESSIBLERADIOBUTTONS)) {
+ doc.getDocumentCatalog().getAcroForm().getCOSObject().removeItem(COSName.FIELDS);
+ PDPage page = doc.getPage(0);
+ AffineTransform pageAdjust = new AffineTransform();
+ Rectangle r = new Rectangle(0, 1650, 842000, 595000);
+ adapter.createStreamFromPDFBoxPage(doc, page, "key", pageAdjust, null, r, pageAdjust);
+ ByteArrayOutputStream os = new ByteArrayOutputStream();
+ pdfdoc.outputTrailer(os);
+ assertTrue(os.toString(StandardCharsets.UTF_8.name()).contains("/Fields []"));
+ }
}
@Test
@@ -255,16 +256,17 @@ public class PDFBoxAdapterTestCase {
Map<Integer, PDFArray> pageNumbers = new HashMap<Integer, PDFArray>();
PDFBoxAdapter adapter = new PDFBoxAdapter(pdfpage, new HashMap<>(), new HashMap<>(), pageNumbers,
new HashMap<>(), new DefaultEventBroadcaster());
- PDDocument doc = load(LINK);
- PDPage page = doc.getPage(0);
- AffineTransform pageAdjust = new AffineTransform();
- Rectangle r = new Rectangle(0, 1650, 842000, 595000);
- String stream = (String) adapter.createStreamFromPDFBoxPage(doc, page, "key", pageAdjust, null, r, pageAdjust);
- assertTrue(stream.contains("/Link <</MCID 5 >>BDC"));
- assertEquals(pageNumbers.size(), 4);
- PDFAnnotList annots = (PDFAnnotList) pdfpage.get("Annots");
- assertEquals(annots.toPDFString(), "[\n1 0 R\n2 0 R\n]");
- doc.close();
+ try (PDDocument doc = load(LINK)) {
+ PDPage page = doc.getPage(0);
+ AffineTransform pageAdjust = new AffineTransform();
+ Rectangle r = new Rectangle(0, 1650, 842000, 595000);
+ String stream = (String)
+ adapter.createStreamFromPDFBoxPage(doc, page, "key", pageAdjust, null, r, pageAdjust);
+ assertTrue(stream.contains("/Link <</MCID 5 >>BDC"));
+ assertEquals(pageNumbers.size(), 4);
+ PDFAnnotList annots = (PDFAnnotList) pdfpage.get("Annots");
+ assertEquals(annots.toPDFString(), "[\n1 0 R\n2 0 R\n]");
+ }
}
@Test
@@ -381,8 +383,9 @@ public class PDFBoxAdapterTestCase {
}
private void loadPage(PDFDocument pdfdoc, String src) throws IOException {
- PDDocument doc = load(src);
- loadPage(pdfdoc, doc, new Rectangle());
+ try (PDDocument doc = load(src)) {
+ loadPage(pdfdoc, doc, new Rectangle());
+ }
}
private PDFPage loadPage(PDFDocument pdfdoc, PDDocument doc, Rectangle destRect) throws IOException {
@@ -399,34 +402,32 @@ public class PDFBoxAdapterTestCase {
new HashMap<>(), new DefaultEventBroadcaster());
PDPage page = doc.getPage(0);
AffineTransform pageAdjust = new AffineTransform();
- Object object = adapter.createStreamFromPDFBoxPage(doc, page, "key", pageAdjust, null, destRect, generatorAT);
- doc.close();
-
- return object;
+ return adapter.createStreamFromPDFBoxPage(doc, page, "key", pageAdjust, null, destRect, generatorAT);
}
@Test
public void testPDFBoxImageHandler() throws Exception {
ImageInfo imgi = new ImageInfo("a", "b");
- PDDocument doc = load(SHADING);
- ImagePDF img = new ImagePDF(imgi, doc);
- PDFDocument pdfdoc = new PDFDocument("");
- PDFPage pdfpage = getPDFPage(pdfdoc);
- pdfpage.setDocument(pdfdoc);
- PDFGState g = new PDFGState();
- pdfdoc.assignObjectNumber(g);
- pdfpage.addGState(g);
- PDFContentGenerator con = new PDFContentGenerator(pdfdoc, null, null);
- FOUserAgent mockedAgent = mock(FOUserAgent.class);
- when(mockedAgent.isAccessibilityEnabled()).thenReturn(false);
- when(mockedAgent.getPDFObjectCache()).thenReturn(new SoftMapCache(true));
- PDFRenderingContext c = new PDFRenderingContext(mockedAgent, con, pdfpage, null);
- c.setPageNumbers(new HashMap<Integer, PDFArray>());
- new PDFBoxImageHandler().handleImage(c, img, new Rectangle(0, 0, 100, 100));
- PDFResources res = c.getPage().getPDFResources();
- ByteArrayOutputStream bos = new ByteArrayOutputStream();
- res.output(bos);
- assertTrue(bos.toString(StandardCharsets.UTF_8.name()).contains("/ExtGState << /GS1"));
+ try (PDDocument doc = load(SHADING)) {
+ ImagePDF img = new ImagePDF(imgi, doc);
+ PDFDocument pdfdoc = new PDFDocument("");
+ PDFPage pdfpage = getPDFPage(pdfdoc);
+ pdfpage.setDocument(pdfdoc);
+ PDFGState g = new PDFGState();
+ pdfdoc.assignObjectNumber(g);
+ pdfpage.addGState(g);
+ PDFContentGenerator con = new PDFContentGenerator(pdfdoc, null, null);
+ FOUserAgent mockedAgent = mock(FOUserAgent.class);
+ when(mockedAgent.isAccessibilityEnabled()).thenReturn(false);
+ when(mockedAgent.getPDFObjectCache()).thenReturn(new SoftMapCache(true));
+ PDFRenderingContext c = new PDFRenderingContext(mockedAgent, con, pdfpage, null);
+ c.setPageNumbers(new HashMap<Integer, PDFArray>());
+ new PDFBoxImageHandler().handleImage(c, img, new Rectangle(0, 0, 100, 100));
+ PDFResources res = c.getPage().getPDFResources();
+ ByteArrayOutputStream bos = new ByteArrayOutputStream();
+ res.output(bos);
+ assertTrue(bos.toString(StandardCharsets.UTF_8.name()).contains("/ExtGState << /GS1"));
+ }
}
@Test
@@ -468,12 +469,11 @@ public class PDFBoxAdapterTestCase {
pdfpage.setDocument(pdfdoc);
PDFBoxAdapter adapter = new PDFBoxAdapter(pdfpage, objectCachePerFile, null, new HashMap<>(),
pdfCache, new DefaultEventBroadcaster());
- PDDocument doc = load(pdf);
- PDPage page = doc.getPage(0);
- String stream = (String) adapter.createStreamFromPDFBoxPage(
- doc, page, pdf, new AffineTransform(), null, new Rectangle(), new AffineTransform());
- doc.close();
- return stream;
+ try (PDDocument doc = load(pdf)) {
+ PDPage page = doc.getPage(0);
+ return (String) adapter.createStreamFromPDFBoxPage(
+ doc, page, pdf, new AffineTransform(), null, new Rectangle(), new AffineTransform());
+ }
}
}
@@ -490,12 +490,13 @@ public class PDFBoxAdapterTestCase {
@Test
public void testErrorMsgToPS() throws IOException {
- PDDocument doc = new PDDocument();
- PDPage page = new PDPage();
- page.setContents(new PDStream(doc, new ByteArrayInputStream("<".getBytes(StandardCharsets.UTF_8))));
- doc.addPage(page);
- RuntimeException ex = Assert.assertThrows(RuntimeException.class, () -> pdfToPCL(doc, ERROR));
- assertTrue(ex.getMessage().startsWith("Error while painting PDF page: " + ERROR));
+ try (PDDocument doc = new PDDocument()) {
+ PDPage page = new PDPage();
+ page.setContents(new PDStream(doc, new ByteArrayInputStream("<".getBytes(StandardCharsets.UTF_8))));
+ doc.addPage(page);
+ RuntimeException ex = Assert.assertThrows(RuntimeException.class, () -> pdfToPCL(doc, ERROR));
+ assertTrue(ex.getMessage().startsWith("Error while painting PDF page: " + ERROR));
+ }
}
@Test
@@ -511,43 +512,45 @@ public class PDFBoxAdapterTestCase {
@Test
public void testNoPageResource() throws IOException {
- PDDocument doc = load(FontMergeTestCase.CFF1);
- PDPage page = doc.getPage(0);
- page.setResources(null);
- AffineTransform pageAdjust = new AffineTransform();
- getPDFBoxAdapter(false, false).createStreamFromPDFBoxPage(
- doc, page, FontMergeTestCase.CFF1, pageAdjust, new FontInfo(), new Rectangle(), pageAdjust);
- doc.close();
+ try (PDDocument doc = load(FontMergeTestCase.CFF1)) {
+ PDPage page = doc.getPage(0);
+ page.setResources(null);
+ AffineTransform pageAdjust = new AffineTransform();
+ getPDFBoxAdapter(false, false).createStreamFromPDFBoxPage(
+ doc, page, FontMergeTestCase.CFF1, pageAdjust, new FontInfo(), new Rectangle(), pageAdjust);
+ }
}
@Test
public void testPDFBoxImageHandlerAccessibilityEnabled() throws Exception {
ImageInfo imgi = new ImageInfo("a", "b");
- PDDocument doc = load(SHADING);
- ImagePDF img = new ImagePDF(imgi, doc);
- PDFDocument pdfdoc = new PDFDocument("");
- PDFPage pdfpage = getPDFPage(pdfdoc);
- pdfpage.setDocument(pdfdoc);
- PDFContentGenerator con = new PDFContentGenerator(pdfdoc, null, null);
- FOUserAgent mockedAgent = mock(FOUserAgent.class);
- when(mockedAgent.isAccessibilityEnabled()).thenReturn(true);
- when(mockedAgent.getPDFObjectCache()).thenReturn(new SoftMapCache(true));
- PDFRenderingContext c = new PDFRenderingContext(mockedAgent, con, pdfpage, null);
- c.setPageNumbers(new HashMap<Integer, PDFArray>());
- new PDFBoxImageHandler().handleImage(c, img, new Rectangle());
+ try (PDDocument doc = load(SHADING)) {
+ ImagePDF img = new ImagePDF(imgi, doc);
+ PDFDocument pdfdoc = new PDFDocument("");
+ PDFPage pdfpage = getPDFPage(pdfdoc);
+ pdfpage.setDocument(pdfdoc);
+ PDFContentGenerator con = new PDFContentGenerator(pdfdoc, null, null);
+ FOUserAgent mockedAgent = mock(FOUserAgent.class);
+ when(mockedAgent.isAccessibilityEnabled()).thenReturn(true);
+ when(mockedAgent.getPDFObjectCache()).thenReturn(new SoftMapCache(true));
+ PDFRenderingContext c = new PDFRenderingContext(mockedAgent, con, pdfpage, null);
+ c.setPageNumbers(new HashMap<Integer, PDFArray>());
+ new PDFBoxImageHandler().handleImage(c, img, new Rectangle());
+ }
}
@Test
public void testFormXObject() throws IOException {
- PDDocument doc = load(IMAGE);
- PDPage page = doc.getPage(0);
- AffineTransform pageAdjust = new AffineTransform();
- PDFFormXObject formXObject = (PDFFormXObject) getPDFBoxAdapter(false, true)
- .createStreamFromPDFBoxPage(doc, page, IMAGE, pageAdjust, new FontInfo(), new Rectangle(), pageAdjust);
- doc.close();
- ByteArrayOutputStream bos = new ByteArrayOutputStream();
- formXObject.output(bos);
- assertTrue(bos.toString(StandardCharsets.UTF_8.name()).contains("/Type /XObject"));
+ try (PDDocument doc = load(IMAGE)) {
+ PDPage page = doc.getPage(0);
+ AffineTransform pageAdjust = new AffineTransform();
+ PDFFormXObject formXObject = (PDFFormXObject) getPDFBoxAdapter(false, true)
+ .createStreamFromPDFBoxPage(doc, page, IMAGE, pageAdjust, new FontInfo(), new Rectangle(),
+ pageAdjust);
+ ByteArrayOutputStream bos = new ByteArrayOutputStream();
+ formXObject.output(bos);
+ assertTrue(bos.toString(StandardCharsets.UTF_8.name()).contains("/Type /XObject"));
+ }
}
@Test
@@ -562,20 +565,20 @@ public class PDFBoxAdapterTestCase {
pdfpage.setObjectNumber(1);
PDFBoxAdapter adapter = new PDFBoxAdapter(pdfpage, new HashMap<>(), new HashMap<>(), new HashMap<>(),
new HashMap<>(), new DefaultEventBroadcaster());
- PDDocument doc = load(pdf);
- PDPage page = doc.getPage(0);
- AffineTransform pageAdjust = new AffineTransform();
- Rectangle r = new Rectangle(0, 1650, 842000, 595000);
- adapter.createStreamFromPDFBoxPage(doc, page, "key", pageAdjust, null, r, pageAdjust);
- ByteArrayOutputStream os = new ByteArrayOutputStream();
- Map<String, List<String>> filterMap = new HashMap<String, List<String>>();
- List<String> filterList = new ArrayList<String>();
- filterList.add("null");
- filterMap.put("default", filterList);
- pdfdoc.setFilterMap(filterMap);
- pdfdoc.output(os);
- doc.close();
- return os.toString(StandardCharsets.UTF_8.name());
+ try (PDDocument doc = load(pdf)) {
+ PDPage page = doc.getPage(0);
+ AffineTransform pageAdjust = new AffineTransform();
+ Rectangle r = new Rectangle(0, 1650, 842000, 595000);
+ adapter.createStreamFromPDFBoxPage(doc, page, "key", pageAdjust, null, r, pageAdjust);
+ ByteArrayOutputStream os = new ByteArrayOutputStream();
+ Map<String, List<String>> filterMap = new HashMap<String, List<String>>();
+ List<String> filterList = new ArrayList<String>();
+ filterList.add("null");
+ filterMap.put("default", filterList);
+ pdfdoc.setFilterMap(filterMap);
+ pdfdoc.output(os);
+ return os.toString(StandardCharsets.UTF_8.name());
+ }
}
@Test
@@ -633,12 +636,12 @@ public class PDFBoxAdapterTestCase {
private PDFPage drawAnnot(PDFDocument pdfDoc, Map<String, Object> usedFields, String pdf) throws Exception {
PDFBoxAdapter adapter = getPDFBoxAdapter(pdfDoc, false, false, true, usedFields);
- PDDocument input = load(pdf);
- PDPage srcPage = input.getPage(0);
- AffineTransform pageAdjust = new AffineTransform();
- Rectangle r = new Rectangle(0, 1650, 842000, 595000);
- adapter.createStreamFromPDFBoxPage(input, srcPage, "key", pageAdjust, null, r, pageAdjust);
- input.close();
+ try (PDDocument input = load(pdf)) {
+ PDPage srcPage = input.getPage(0);
+ AffineTransform pageAdjust = new AffineTransform();
+ Rectangle r = new Rectangle(0, 1650, 842000, 595000);
+ adapter.createStreamFromPDFBoxPage(input, srcPage, "key", pageAdjust, null, r, pageAdjust);
+ }
return adapter.getTargetPage();
}
@@ -652,8 +655,6 @@ public class PDFBoxAdapterTestCase {
pdfDoc.outputHeader(os);
pdfDoc.output(os);
pdfDoc.outputTrailer(os);
- PDDocument out = Loader.loadPDF(os.toByteArray());
- out.close();
String id1 = "30 0 R";
assertEquals(getAnnotationsID(page1), id1);
String id2 = "33 0 R";
@@ -669,68 +670,72 @@ public class PDFBoxAdapterTestCase {
@Test
public void testPreservePropertyNames() throws Exception {
- PDDocument doc = load(FontMergeTestCase.CFF1);
- COSDictionary properties = new COSDictionary();
- properties.setItem(COSName.S, COSName.S);
- doc.getPage(0).getResources().getCOSObject().setItem(COSName.PROPERTIES, properties);
- PDFDocument pdfdoc = new PDFDocument("");
- PDFPage page = loadPage(pdfdoc, doc, new Rectangle());
- ByteArrayOutputStream bos = new ByteArrayOutputStream();
- page.getPDFResources().output(bos);
- assertTrue(bos.toString(StandardCharsets.UTF_8.name()).contains("/Properties << /S /S >>"));
+ try (PDDocument doc = load(FontMergeTestCase.CFF1)) {
+ COSDictionary properties = new COSDictionary();
+ properties.setItem(COSName.S, COSName.S);
+ doc.getPage(0).getResources().getCOSObject().setItem(COSName.PROPERTIES, properties);
+ PDFDocument pdfdoc = new PDFDocument("");
+ PDFPage page = loadPage(pdfdoc, doc, new Rectangle());
+ ByteArrayOutputStream bos = new ByteArrayOutputStream();
+ page.getPDFResources().output(bos);
+ assertTrue(bos.toString(StandardCharsets.UTF_8.name()).contains("/Properties << /S /S >>"));
+ }
}
@Test
public void testPatternMatrix() throws Exception {
- PDDocument doc = load(SHADING);
- PDFDocument pdfdoc = new PDFDocument("");
- Rectangle destRect = new Rectangle(0, 1650, 274818, 174879);
- loadPage(pdfdoc, doc, destRect);
- ByteArrayOutputStream bos = new ByteArrayOutputStream();
- pdfdoc.output(bos);
- String outStr = removeWhiteSpace(bos);
- assertTrue(outStr.contains("<<\n"
- + "/Type /Pattern\n"
- + "/PatternType 2\n"
- + "/Shading 2 0 R\n"
- + "/Matrix [53.8858833313 0 0 -26.4968185425 72.7459411621 -20.8601989746]\n"
- + ">>"));
+ try (PDDocument doc = load(SHADING)) {
+ PDFDocument pdfdoc = new PDFDocument("");
+ Rectangle destRect = new Rectangle(0, 1650, 274818, 174879);
+ loadPage(pdfdoc, doc, destRect);
+ ByteArrayOutputStream bos = new ByteArrayOutputStream();
+ pdfdoc.output(bos);
+ String outStr = removeWhiteSpace(bos);
+ assertTrue(outStr.contains("<<\n"
+ + "/Type /Pattern\n"
+ + "/PatternType 2\n"
+ + "/Shading 2 0 R\n"
+ + "/Matrix [53.8858833313 0 0 -26.4968185425 72.7459411621 -20.8601989746]\n"
+ + ">>"));
+ }
}
@Test
public void testPatternMatrixWithPageAdjust() throws Exception {
- PDDocument doc = load(SHADING);
- PDFDocument pdfdoc = new PDFDocument("");
- Rectangle destRect = new Rectangle(0, 1650, 274818, 174879);
- PDFPage pdfpage = getPDFPage(pdfdoc);
- AffineTransform generatorAT = AffineTransform.getTranslateInstance(0, 100);
- createStreamFromPDFBoxPage(pdfpage, pdfdoc, doc, destRect, generatorAT);
- ByteArrayOutputStream bos = new ByteArrayOutputStream();
- pdfdoc.output(bos);
- String outStr = removeWhiteSpace(bos);
- assertTrue(outStr.contains("<<\n"
- + "/Type /Pattern\n/PatternType 2\n/Shading 2 0 R\n"
- + "/Matrix [53.8858833313 0 0 -26.4968185425 72.7459411621 -120.8601837158]\n"
- + ">>"));
+ try (PDDocument doc = load(SHADING)) {
+ PDFDocument pdfdoc = new PDFDocument("");
+ Rectangle destRect = new Rectangle(0, 1650, 274818, 174879);
+ PDFPage pdfpage = getPDFPage(pdfdoc);
+ AffineTransform generatorAT = AffineTransform.getTranslateInstance(0, 100);
+ createStreamFromPDFBoxPage(pdfpage, pdfdoc, doc, destRect, generatorAT);
+ ByteArrayOutputStream bos = new ByteArrayOutputStream();
+ pdfdoc.output(bos);
+ String outStr = removeWhiteSpace(bos);
+ assertTrue(outStr.contains("<<\n"
+ + "/Type /Pattern\n/PatternType 2\n/Shading 2 0 R\n"
+ + "/Matrix [53.8858833313 0 0 -26.4968185425 72.7459411621 -120.8601837158]\n"
+ + ">>"));
+ }
}
@Test
public void testPatternMatrixFormXObject() throws Exception {
- PDDocument doc = load(SHADING);
- PDFDocument pdfdoc = new PDFDocument("");
- pdfdoc.setFormXObjectEnabled(true);
- Rectangle destRect = new Rectangle(0, 1650, 274818, 174879);
- loadPage(pdfdoc, doc, destRect);
- ByteArrayOutputStream bos = new ByteArrayOutputStream();
- pdfdoc.output(bos);
- String outStr = removeWhiteSpace(bos);
- assertTrue(outStr.contains("/Pattern << /Pa1 12 0 R /Pa2 13 0 R >>"));
- assertTrue(outStr.contains("<<\n"
- + "/Type /Pattern\n"
- + "/PatternType 2\n"
- + "/Shading 2 0 R\n"
- + "/Matrix [120 0 0 -120 162 705]\n"
- + ">>"));
+ try (PDDocument doc = load(SHADING)) {
+ PDFDocument pdfdoc = new PDFDocument("");
+ pdfdoc.setFormXObjectEnabled(true);
+ Rectangle destRect = new Rectangle(0, 1650, 274818, 174879);
+ loadPage(pdfdoc, doc, destRect);
+ ByteArrayOutputStream bos = new ByteArrayOutputStream();
+ pdfdoc.output(bos);
+ String outStr = removeWhiteSpace(bos);
+ assertTrue(outStr.contains("/Pattern << /Pa1 12 0 R /Pa2 13 0 R >>"));
+ assertTrue(outStr.contains("<<\n"
+ + "/Type /Pattern\n"
+ + "/PatternType 2\n"
+ + "/Shading 2 0 R\n"
+ + "/Matrix [120 0 0 -120 162 705]\n"
+ + ">>"));
+ }
}
@Test
@@ -747,22 +752,23 @@ public class PDFBoxAdapterTestCase {
PDFDocument pdfdoc = new PDFDocument("");
pdfdoc.setFormXObjectEnabled(true);
PDFPage pdfPage = getPDFPage(pdfdoc);
- PDDocument pdDoc = load(SHADING);
- PDPage page = pdDoc.getPage(0);
- page.setCropBox(new PDRectangle(600, 500, 1200, 800));
- page.setRotation(rotation);
-
- PDFFormXObject form = (PDFFormXObject) createStreamFromPDFBoxPage(pdfPage, pdfdoc, pdDoc,
- new Rectangle(0, 0, 274818, 174879), new AffineTransform());
-
- AffineTransform at = form.getMatrix();
- String message = "Value must be calculated based on the rotation";
- assertEquals(message, scaleX, at.getScaleX(), 0.001); //m00
- assertEquals(message, shearX, at.getShearX(), 0.001); //m01
- assertEquals(message, translateX, at.getTranslateX(), 0.001); //m02
- assertEquals(message, shearY, at.getShearY(), 0.001); //m10
- assertEquals(message, scaleY, at.getScaleY(), 0.001); //m11
- assertEquals(message, translateY, at.getTranslateY(), 0.001); //m12
+ try (PDDocument pdDoc = load(SHADING)) {
+ PDPage page = pdDoc.getPage(0);
+ page.setCropBox(new PDRectangle(600, 500, 1200, 800));
+ page.setRotation(rotation);
+
+ PDFFormXObject form = (PDFFormXObject) createStreamFromPDFBoxPage(pdfPage, pdfdoc, pdDoc,
+ new Rectangle(0, 0, 274818, 174879), new AffineTransform());
+
+ AffineTransform at = form.getMatrix();
+ String message = "Value must be calculated based on the rotation";
+ assertEquals(message, scaleX, at.getScaleX(), 0.001); //m00
+ assertEquals(message, shearX, at.getShearX(), 0.001); //m01
+ assertEquals(message, translateX, at.getTranslateX(), 0.001); //m02
+ assertEquals(message, shearY, at.getShearY(), 0.001); //m10
+ assertEquals(message, scaleY, at.getScaleY(), 0.001); //m11
+ assertEquals(message, translateY, at.getTranslateY(), 0.001); //m12
+ }
}
private String removeWhiteSpace(ByteArrayOutputStream bos) throws Exception {
diff --git a/test/java/org/apache/fop/render/pdf/pdfbox/PDFRotateTestCase.java b/test/java/org/apache/fop/render/pdf/pdfbox/PDFRotateTestCase.java
index 99d4579..c774e24 100644
--- a/test/java/org/apache/fop/render/pdf/pdfbox/PDFRotateTestCase.java
+++ b/test/java/org/apache/fop/render/pdf/pdfbox/PDFRotateTestCase.java
@@ -42,19 +42,20 @@ public class PDFRotateTestCase {
public void test() throws Exception {
ImageConverterPDF2G2D i = new ImageConverterPDF2G2D();
ImageInfo imgi = new ImageInfo("a", "b");
- PDDocument doc = new PDDocument();
- PDPage page = new PDPage();
- page.setRotation(90);
- doc.addPage(page);
- Image img = new ImagePDF(imgi, doc);
- ImageGraphics2D ig = (ImageGraphics2D)i.convert(img, null);
- Rectangle2D rect = new Rectangle2D.Float(0, 0, 100, 100);
+ try (PDDocument doc = new PDDocument()) {
+ PDPage page = new PDPage();
+ page.setRotation(90);
+ doc.addPage(page);
+ Image img = new ImagePDF(imgi, doc);
+ ImageGraphics2D ig = (ImageGraphics2D) i.convert(img, null);
+ Rectangle2D rect = new Rectangle2D.Float(0, 0, 100, 100);
- PSGraphics2D g2d = new PSPDFGraphics2D(true);
- GraphicContext gc = new GraphicContext();
- g2d.setGraphicContext(gc);
- ig.getGraphics2DImagePainter().paint(g2d, rect);
- Assert.assertEquals(g2d.getTransform().getShearX(), 0.16339869281045752, 0);
+ PSGraphics2D g2d = new PSPDFGraphics2D(true);
+ GraphicContext gc = new GraphicContext();
+ g2d.setGraphicContext(gc);
+ ig.getGraphics2DImagePainter().paint(g2d, rect);
+ Assert.assertEquals(g2d.getTransform().getShearX(), 0.16339869281045752, 0);
+ }
}
@Test
@@ -68,15 +69,16 @@ public class PDFRotateTestCase {
private AffineTransform getTransform(int angle) throws IOException {
PDFBoxAdapter adapter = PDFBoxAdapterTestCase.getPDFBoxAdapter(false, false);
- PDDocument doc = PDFBoxAdapterTestCase.load(PDFBoxAdapterTestCase.ROTATE);
- PDPage page = doc.getPage(0);
- page.setRotation(angle);
- AffineTransform pageAdjust = new AffineTransform();
- Rectangle r = new Rectangle(0, 1650, 842000, 595000);
- String stream = (String) adapter.createStreamFromPDFBoxPage(doc, page, "key", pageAdjust, null, r, pageAdjust);
- Assert.assertTrue(stream.contains("/GS0106079 gs"));
- Assert.assertTrue(stream.contains("/TT0106079 1 Tf"));
- doc.close();
- return pageAdjust;
+ try (PDDocument doc = PDFBoxAdapterTestCase.load(PDFBoxAdapterTestCase.ROTATE)) {
+ PDPage page = doc.getPage(0);
+ page.setRotation(angle);
+ AffineTransform pageAdjust = new AffineTransform();
+ Rectangle r = new Rectangle(0, 1650, 842000, 595000);
+ String stream =
+ (String) adapter.createStreamFromPDFBoxPage(doc, page, "key", pageAdjust, null, r, pageAdjust);
+ Assert.assertTrue(stream.contains("/GS0106079 gs"));
+ Assert.assertTrue(stream.contains("/TT0106079 1 Tf"));
+ return pageAdjust;
+ }
}
}
diff --git a/test/java/org/apache/fop/render/pdf/pdfbox/PDFWriterTestCase.java b/test/java/org/apache/fop/render/pdf/pdfbox/PDFWriterTestCase.java
index a0a7ceb..35f3280 100644
--- a/test/java/org/apache/fop/render/pdf/pdfbox/PDFWriterTestCase.java
+++ b/test/java/org/apache/fop/render/pdf/pdfbox/PDFWriterTestCase.java
@@ -44,12 +44,12 @@ public class PDFWriterTestCase {
@Test
public void testFloatCache() throws IOException {
String text = "[1.1 1.1] a";
- PDDocument doc = new PDDocument();
- PDStream pdStream = new PDStream(doc, new ByteArrayInputStream(text.getBytes(StandardCharsets.UTF_8)));
- MyPDFWriter pdfWriter = new MyPDFWriter();
- pdfWriter.writeText(pdStream);
- doc.close();
- Assert.assertEquals(1, pdfWriter.i);
+ try (PDDocument doc = new PDDocument()) {
+ PDStream pdStream = new PDStream(doc, new ByteArrayInputStream(text.getBytes(StandardCharsets.UTF_8)));
+ MyPDFWriter pdfWriter = new MyPDFWriter();
+ pdfWriter.writeText(pdStream);
+ Assert.assertEquals(1, pdfWriter.i);
+ }
}
private static class MyPDFWriter extends PDFWriter {
diff --git a/test/java/org/apache/fop/render/pdf/pdfbox/PageParentTreeFinderTestCase.java b/test/java/org/apache/fop/render/pdf/pdfbox/PageParentTreeFinderTestCase.java
index 10a8efe..915864e 100644
--- a/test/java/org/apache/fop/render/pdf/pdfbox/PageParentTreeFinderTestCase.java
+++ b/test/java/org/apache/fop/render/pdf/pdfbox/PageParentTreeFinderTestCase.java
@@ -39,30 +39,30 @@ public class PageParentTreeFinderTestCase {
@Test
public void testGetPageParentTreeArray() throws IOException {
- PDDocument doc = PDFBoxAdapterTestCase.load(LINK);
- PDPage srcPage = doc.getPage(0);
- PageParentTreeFinder finder = new PageParentTreeFinder(srcPage);
- COSArray markedContentParents = finder.getPageParentTreeArray(doc);
- Assert.assertEquals(markedContentParents.size(), 3);
- COSObject firstObj = (COSObject)markedContentParents.get(0);
- COSObject secObj = (COSObject)markedContentParents.get(1);
- COSDictionary firstObjDict = (COSDictionary) firstObj.getObject();
- COSArray firstKids = (COSArray)firstObjDict.getDictionaryObject(COSName.K);
- COSDictionary firstKid = (COSDictionary) firstKids.get(0);
- int test = firstKid.getInt("MCID");
- int expected = 0;
- Assert.assertEquals(test, expected);
- COSDictionary firstKidBrother = (COSDictionary)firstKids.get(2);
- test = firstKidBrother.getInt("MCID");
- expected = 2;
- Assert.assertEquals(test, expected);
- COSDictionary secObjDict = (COSDictionary) secObj.getObject();
- COSArray secKidsArray = (COSArray)secObjDict.getDictionaryObject(COSName.K);
- COSDictionary secondKid = (COSDictionary)secKidsArray.get(0);
- test = secondKid.getInt("MCID");
- expected = 1;
- Assert.assertEquals(test, expected);
- doc.close();
+ try (PDDocument doc = PDFBoxAdapterTestCase.load(LINK)) {
+ PDPage srcPage = doc.getPage(0);
+ PageParentTreeFinder finder = new PageParentTreeFinder(srcPage);
+ COSArray markedContentParents = finder.getPageParentTreeArray(doc);
+ Assert.assertEquals(markedContentParents.size(), 3);
+ COSObject firstObj = (COSObject) markedContentParents.get(0);
+ COSObject secObj = (COSObject) markedContentParents.get(1);
+ COSDictionary firstObjDict = (COSDictionary) firstObj.getObject();
+ COSArray firstKids = (COSArray) firstObjDict.getDictionaryObject(COSName.K);
+ COSDictionary firstKid = (COSDictionary) firstKids.get(0);
+ int test = firstKid.getInt("MCID");
+ int expected = 0;
+ Assert.assertEquals(test, expected);
+ COSDictionary firstKidBrother = (COSDictionary) firstKids.get(2);
+ test = firstKidBrother.getInt("MCID");
+ expected = 2;
+ Assert.assertEquals(test, expected);
+ COSDictionary secObjDict = (COSDictionary) secObj.getObject();
+ COSArray secKidsArray = (COSArray) secObjDict.getDictionaryObject(COSName.K);
+ COSDictionary secondKid = (COSDictionary) secKidsArray.get(0);
+ test = secondKid.getInt("MCID");
+ expected = 1;
+ Assert.assertEquals(test, expected);
+ }
}
@Test
@@ -79,31 +79,31 @@ public class PageParentTreeFinderTestCase {
@Test
public void testTraverseKids() throws IOException {
- PDDocument doc = PDFBoxAdapterTestCase.load(LINK);
- PDNumberTreeNode srcNumberTreeNode = doc.getDocumentCatalog().getStructureTreeRoot().getParentTree();
- COSArray parentTree = (COSArray) srcNumberTreeNode.getCOSObject().getDictionaryObject(COSName.KIDS);
- COSObject kidCOSObj = (COSObject) parentTree.get(0);
- COSDictionary dict = (COSDictionary) kidCOSObj.getObject();
- COSArray nums = (COSArray) dict.getDictionaryObject(COSName.NUMS);
- nums.add(0, COSInteger.get(9));
- nums.add(1, new COSDictionary());
- COSArray numList = new PageParentTreeFinder(doc.getPage(0)).getPageParentTreeArray(doc);
- Assert.assertEquals(numList.size(), 3);
- doc.close();
+ try (PDDocument doc = PDFBoxAdapterTestCase.load(LINK)) {
+ PDNumberTreeNode srcNumberTreeNode = doc.getDocumentCatalog().getStructureTreeRoot().getParentTree();
+ COSArray parentTree = (COSArray) srcNumberTreeNode.getCOSObject().getDictionaryObject(COSName.KIDS);
+ COSObject kidCOSObj = (COSObject) parentTree.get(0);
+ COSDictionary dict = (COSDictionary) kidCOSObj.getObject();
+ COSArray nums = (COSArray) dict.getDictionaryObject(COSName.NUMS);
+ nums.add(0, COSInteger.get(9));
+ nums.add(1, new COSDictionary());
+ COSArray numList = new PageParentTreeFinder(doc.getPage(0)).getPageParentTreeArray(doc);
+ Assert.assertEquals(numList.size(), 3);
+ }
}
@Test
public void testCOSNull() throws IOException {
- PDDocument doc = PDFBoxAdapterTestCase.load(LINK);
- PDNumberTreeNode srcNumberTreeNode = doc.getDocumentCatalog().getStructureTreeRoot().getParentTree();
- COSArray parentTree = (COSArray) srcNumberTreeNode.getCOSObject().getDictionaryObject(COSName.KIDS);
- COSObject kidCOSObj = (COSObject) parentTree.get(0);
- COSDictionary dict = (COSDictionary) kidCOSObj.getObject();
- COSArray nums = (COSArray) dict.getDictionaryObject(COSName.NUMS);
- nums.add(0, COSInteger.ZERO);
- nums.add(1, new COSObject(COSNull.NULL));
- COSArray numList = new PageParentTreeFinder(doc.getPage(0)).getPageParentTreeArray(doc);
- Assert.assertEquals(numList.size(), 3);
- doc.close();
+ try (PDDocument doc = PDFBoxAdapterTestCase.load(LINK)) {
+ PDNumberTreeNode srcNumberTreeNode = doc.getDocumentCatalog().getStructureTreeRoot().getParentTree();
+ COSArray parentTree = (COSArray) srcNumberTreeNode.getCOSObject().getDictionaryObject(COSName.KIDS);
+ COSObject kidCOSObj = (COSObject) parentTree.get(0);
+ COSDictionary dict = (COSDictionary) kidCOSObj.getObject();
+ COSArray nums = (COSArray) dict.getDictionaryObject(COSName.NUMS);
+ nums.add(0, COSInteger.ZERO);
+ nums.add(1, new COSObject(COSNull.NULL));
+ COSArray numList = new PageParentTreeFinder(doc.getPage(0)).getPageParentTreeArray(doc);
+ Assert.assertEquals(numList.size(), 3);
+ }
}
}
diff --git a/test/java/org/apache/fop/render/pdf/pdfbox/PreloaderPDFTestCase.java b/test/java/org/apache/fop/render/pdf/pdfbox/PreloaderPDFTestCase.java
index d923503..5b402d8 100644
--- a/test/java/org/apache/fop/render/pdf/pdfbox/PreloaderPDFTestCase.java
+++ b/test/java/org/apache/fop/render/pdf/pdfbox/PreloaderPDFTestCase.java
@@ -78,8 +78,9 @@ public class PreloaderPDFTestCase {
ImageSource imageSource = new ImageSource(ImageIO.createImageInputStream(is), "", true);
ImageInfo imageInfo = new PreloaderPDF().preloadImage("", imageSource, context);
ImagePDF img = (ImagePDF) imageInfo.getOriginalImage();
- PDDocument doc = img.getPDDocument();
- doc.save(new ByteArrayOutputStream());
+ try (PDDocument doc = img.getPDDocument()) {
+ doc.save(new ByteArrayOutputStream());
+ }
img.close();
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@xmlgraphics.apache.org
For additional commands, e-mail: commits-help@xmlgraphics.apache.org