2424import java .awt .image .DataBufferInt ;
2525import java .io .File ;
2626import java .io .IOException ;
27+ import java .util .Collections ;
2728import java .util .HashMap ;
2829import java .util .List ;
2930import java .util .Map ;
@@ -49,7 +50,7 @@ class OverlayTest
4950{
5051 private static final File IN_DIR = new File ("src/test/resources/org/apache/pdfbox/multipdf" );
5152 private static final File OUT_DIR = new File ("target/test-output/overlay" );
52-
53+
5354 @ BeforeAll
5455 static void setUp ()
5556 {
@@ -108,6 +109,25 @@ void testRotatedOverlaysMap() throws IOException
108109 new File (OUT_DIR , "Overlayed-with-rot270.pdf" ));
109110 }
110111 }
112+ new File (OUT_DIR , "OverlayTestBaseRot0_4Pages.pdf" ).delete ();
113+ }
114+
115+ @ Test
116+ void testOverlayOnRotatedSourcePages () throws IOException
117+ {
118+ try (Overlay overlay = new Overlay ())
119+ {
120+ overlay .setInputFile (IN_DIR + "/PDFBOX-6049-Source.pdf" );
121+ overlay .setDefaultOverlayFile (IN_DIR + "/PDFBOX-6049-Overlay.pdf" );
122+ overlay .setOverlayPosition (Overlay .Position .FOREGROUND );
123+ overlay .setAdjustRotation (true );
124+ try (PDDocument resultDoc = overlay .overlay (Collections .emptyMap ()))
125+ {
126+ resultDoc .save (OUT_DIR + "/PDFBOX-6049-Result.pdf" );
127+ }
128+ checkIdenticalRendering (new File (IN_DIR + "/PDFBOX-6049-ExpectedResult.pdf" ), new File (OUT_DIR , "PDFBOX-6049-Result.pdf" ));
129+ new File (OUT_DIR , "PDFBOX-6049-Result.pdf" ).delete ();
130+ }
111131 }
112132
113133 private void testRotatedOverlay (int rotation ) throws IOException
@@ -136,28 +156,26 @@ private void testRotatedOverlay(int rotation) throws IOException
136156
137157 private void checkIdenticalRendering (File modelFile , File resultFile ) throws IOException
138158 {
139- BufferedImage modelImage ;
140- try ( PDDocument modelDocument = Loader .loadPDF (modelFile ))
159+ try ( PDDocument modelDocument = Loader . loadPDF ( modelFile ) ;
160+ PDDocument resultDocument = Loader .loadPDF (resultFile ))
141161 {
142- modelImage = new PDFRenderer (modelDocument ).renderImage (0 );
143- }
144-
145- BufferedImage resultImage ;
146- try (PDDocument resultDocument = Loader .loadPDF (resultFile ))
147- {
148- resultImage = new PDFRenderer (resultDocument ).renderImage (0 );
149- }
150-
151- // compare images
152- assertEquals (modelImage .getWidth (), resultImage .getWidth ());
153- assertEquals (modelImage .getHeight (), resultImage .getHeight ());
154- assertEquals (modelImage .getType (), resultImage .getType ());
162+ assertEquals (modelDocument .getNumberOfPages (), resultDocument .getNumberOfPages ());
163+ for (int page = 0 ; page < modelDocument .getNumberOfPages (); ++page )
164+ {
165+ BufferedImage modelImage = new PDFRenderer (modelDocument ).renderImage (page );
166+ BufferedImage resultImage = new PDFRenderer (resultDocument ).renderImage (page );
155167
156- DataBufferInt modelDataBuffer = (DataBufferInt ) modelImage .getRaster ().getDataBuffer ();
157- DataBufferInt resultDataBuffer = (DataBufferInt ) resultImage .getRaster ().getDataBuffer ();
168+ // compare images
169+ assertEquals (modelImage .getWidth (), resultImage .getWidth ());
170+ assertEquals (modelImage .getHeight (), resultImage .getHeight ());
171+ assertEquals (modelImage .getType (), resultImage .getType ());
158172
159- assertArrayEquals (modelDataBuffer .getData (), resultDataBuffer .getData ());
173+ DataBufferInt modelDataBuffer = (DataBufferInt ) modelImage .getRaster ().getDataBuffer ();
174+ DataBufferInt resultDataBuffer = (DataBufferInt ) resultImage .getRaster ().getDataBuffer ();
160175
176+ assertArrayEquals (modelDataBuffer .getData (), resultDataBuffer .getData ());
177+ }
178+ }
161179 resultFile .delete ();
162180 }
163181
0 commit comments