Author: tilman
Date: Wed Aug 13 07:38:43 2025
New Revision: 1927777
Log:
PDFBOX-6049: add test + test files
Added:
pdfbox/branches/2.0/pdfbox/src/test/java/org/apache/pdfbox/multipdf/OverlayTest.java
(contents, props changed)
pdfbox/branches/2.0/pdfbox/src/test/resources/org/apache/pdfbox/multipdf/PDFBOX-6049-ExpectedResult.pdf
(contents, props changed)
pdfbox/branches/2.0/pdfbox/src/test/resources/org/apache/pdfbox/multipdf/PDFBOX-6049-Overlay.pdf
(contents, props changed)
pdfbox/branches/2.0/pdfbox/src/test/resources/org/apache/pdfbox/multipdf/PDFBOX-6049-Source.pdf
(contents, props changed)
Added:
pdfbox/branches/2.0/pdfbox/src/test/java/org/apache/pdfbox/multipdf/OverlayTest.java
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++
pdfbox/branches/2.0/pdfbox/src/test/java/org/apache/pdfbox/multipdf/OverlayTest.java
Wed Aug 13 07:38:43 2025 (r1927777)
@@ -0,0 +1,89 @@
+/*
+ * 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.pdfbox.multipdf;
+
+import java.awt.image.BufferedImage;
+import java.awt.image.DataBufferInt;
+import java.io.File;
+import java.io.IOException;
+import java.util.Collections;
+
+import org.apache.pdfbox.pdmodel.PDDocument;
+import org.apache.pdfbox.rendering.PDFRenderer;
+
+import static org.junit.Assert.assertArrayEquals;
+import static org.junit.Assert.assertEquals;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+/**
+ *
+ * @author Tilman Hausherr
+ */
+public class OverlayTest
+{
+ private static final File IN_DIR = new
File("src/test/resources/org/apache/pdfbox/multipdf");
+ private static final File OUT_DIR = new File("target/test-output/overlay");
+
+ @BeforeClass
+ static public void setUp()
+ {
+ OUT_DIR.mkdirs();
+ }
+
+ @Test
+ public void testOverlayOnRotatedSourcePages() throws IOException
+ {
+ Overlay overlay = new Overlay();
+ overlay.setInputFile(IN_DIR + "/PDFBOX-6049-Source.pdf");
+ overlay.setDefaultOverlayFile(IN_DIR + "/PDFBOX-6049-Overlay.pdf");
+ overlay.setOverlayPosition(Overlay.Position.FOREGROUND);
+ overlay.setAdjustRotation(true);
+ PDDocument resultDoc = overlay.overlay(Collections.EMPTY_MAP);
+ resultDoc.save(OUT_DIR + "/PDFBOX-6049-Result.pdf");
+ resultDoc.close();
+ checkIdenticalRendering(new File(IN_DIR +
"/PDFBOX-6049-ExpectedResult.pdf"), new File(OUT_DIR,
"PDFBOX-6049-Result.pdf"));
+ new File(OUT_DIR, "PDFBOX-6049-Result.pdf").delete();
+ overlay.close();
+ }
+
+ private void checkIdenticalRendering(File modelFile, File resultFile)
throws IOException
+ {
+ PDDocument modelDocument = PDDocument.load(modelFile);
+ PDDocument resultDocument = PDDocument.load(resultFile);
+
+ assertEquals(modelDocument.getNumberOfPages(),
resultDocument.getNumberOfPages());
+ for (int page = 0; page < modelDocument.getNumberOfPages(); ++page)
+ {
+ BufferedImage modelImage = new
PDFRenderer(modelDocument).renderImage(page);
+ BufferedImage resultImage = new
PDFRenderer(resultDocument).renderImage(page);
+
+ // compare images
+ assertEquals(modelImage.getWidth(), resultImage.getWidth());
+ assertEquals(modelImage.getHeight(), resultImage.getHeight());
+ assertEquals(modelImage.getType(), resultImage.getType());
+
+ DataBufferInt modelDataBuffer = (DataBufferInt)
modelImage.getRaster().getDataBuffer();
+ DataBufferInt resultDataBuffer = (DataBufferInt)
resultImage.getRaster().getDataBuffer();
+
+ assertArrayEquals(modelDataBuffer.getData(),
resultDataBuffer.getData());
+ }
+ modelDocument.close();
+ resultDocument.close();
+ resultFile.delete();
+ }
+}
Added:
pdfbox/branches/2.0/pdfbox/src/test/resources/org/apache/pdfbox/multipdf/PDFBOX-6049-ExpectedResult.pdf
==============================================================================
Binary file. No diff available.
Added:
pdfbox/branches/2.0/pdfbox/src/test/resources/org/apache/pdfbox/multipdf/PDFBOX-6049-Overlay.pdf
==============================================================================
Binary file. No diff available.
Added:
pdfbox/branches/2.0/pdfbox/src/test/resources/org/apache/pdfbox/multipdf/PDFBOX-6049-Source.pdf
==============================================================================
Binary file. No diff available.