private WatermarkParameters pngParams(PdfSource<?> source) throws IOException { WatermarkParameters parameters = new WatermarkParameters(customNonPdfInput("image/black-rect.png")); setUpParams(parameters, source); parameters.setDimension(new Dimension(248, 103)); return parameters; }
private WatermarkParameters tiffParams(PdfSource<?> source) throws IOException { WatermarkParameters parameters = new WatermarkParameters(customNonPdfInput("image/draft.tiff")); setUpParams(parameters, source); parameters.setDimension(new Dimension(248, 103)); return parameters; }
@Test public void invalidParametersImageSize() { WatermarkParameters victim = new WatermarkParameters(StreamSource.newInstance(mock(InputStream.class), "name")); victim.setDimension(new Dimension(-300, 300)); PdfSource<InputStream> input = PdfStreamSource.newInstanceNoPassword(mock(InputStream.class), "name"); victim.addSource(input); SingleOrMultipleTaskOutput output = mock(SingleOrMultipleTaskOutput.class); victim.setOutput(output); TestUtils.assertInvalidParameters(victim); }
@Test public void testPageRotation180() throws Exception { WatermarkParameters parameters = new WatermarkParameters(customNonPdfInput("image/draft.png")); setUpParams(parameters, customInput("pdf/rotation_180_test_file.pdf")); parameters.setDimension(new Dimension(200, 83)); execute(parameters); testContext.assertTaskCompleted(); testContext.forPdfOutput(d -> { assertImageAtLocation(d, d.getPage(0), new Rectangle(585, 792, -200, -83)); }); }
@Test public void testPageRotation270() throws Exception { WatermarkParameters parameters = new WatermarkParameters(customNonPdfInput("image/draft.png")); setUpParams(parameters, customInput("pdf/rotation_270_test_file.pdf")); parameters.setDimension(new Dimension(200, 83)); execute(parameters); testContext.assertTaskCompleted(); testContext.forPdfOutput(d -> { assertImageAtLocation(d, d.getPage(0), new Rectangle(50, 832, 200, 83)); }); }
@Test public void testPageRotation90() throws Exception { WatermarkParameters parameters = new WatermarkParameters(customNonPdfInput("image/draft.png")); setUpParams(parameters, customInput("pdf/rotation_90_test_file.pdf")); parameters.setDimension(new Dimension(200, 83)); execute(parameters); testContext.assertTaskCompleted(); testContext.forPdfOutput(d -> { assertImageAtLocation(d, d.getPage(0), new Rectangle(545, 10, 200, 83)); }); }
@Test public void testCroppedPage() throws Exception { WatermarkParameters parameters = new WatermarkParameters(customNonPdfInput("image/draft.png")); setUpParams(parameters, customInput("pdf/cropped_test_file.pdf")); parameters.setDimension(new Dimension(200, 83)); execute(parameters); testContext.assertTaskCompleted(); testContext.forPdfOutput(d -> { assertImageAtLocation(d, d.getPage(0), new Rectangle(46, 90, 200, 83)); }); }
@Test public void testImageNegativeRotation() throws Exception { WatermarkParameters parameters = new WatermarkParameters(customNonPdfInput("image/draft.png")); setUpParams(parameters, customInput("pdf/test_file.pdf")); parameters.setDimension(new Dimension(200, 83)); parameters.setRotationDegrees(-315); execute(parameters); testContext.assertTaskCompleted(); testContext.forPdfOutput(d -> { assertImageAtLocation(d, d.getPage(0), new Rectangle(68, -8, 200, 83)); }); }
@Test public void testImageRotation() throws Exception { WatermarkParameters parameters = new WatermarkParameters(customNonPdfInput("image/draft.png")); setUpParams(parameters, customInput("pdf/test_file.pdf")); parameters.setDimension(new Dimension(200, 83)); parameters.setRotationDegrees(45); execute(parameters); testContext.assertTaskCompleted(); testContext.forPdfOutput(d -> { assertImageAtLocation(d, d.getPage(0), new Rectangle(68, -8, 200, 83)); }); }
@Test public void testAddingPngImageScaled() throws Exception { WatermarkParameters parameters = new WatermarkParameters(customNonPdfInput("image/black-rect.png")); setUpParams(parameters, customInput("pdf/test_file.pdf")); parameters.setDimension(new Dimension(200, 83)); parameters.addPageRange(new PageRange(1, 1)); execute(parameters); testContext.assertTaskCompleted(); testContext.forPdfOutput(d -> { assertNotNull(d.getPage(0).getResources().getCOSObject().getDictionaryObject(COSName.XOBJECT, COSDictionary.class)); assertImageAtLocation(d, d.getPage(0), new Rectangle(10, 50, 200, 83)); assertNoImageAtLocation(d, d.getPage(1), new Rectangle(10, 50, 200, 83)); assertNoImageAtLocation(d, d.getPage(2), new Rectangle(10, 50, 200, 83)); assertNoImageAtLocation(d, d.getPage(3), new Rectangle(10, 50, 200, 83)); }); }
@Test public void testCropOffset() throws Exception { WatermarkParameters parameters = pngParams(customInput("pdf/cropped_test_file.pdf")); parameters.addPageRange(new PageRange(2, 3)); parameters.setPosition(new Point(0, 10)); parameters.setDimension(new Dimension(200, 90)); execute(parameters); testContext.assertTaskCompleted(); testContext.forPdfOutput(d -> { assertNotNull(d.getPage(1).getResources().getCOSObject().getDictionaryObject(COSName.XOBJECT, COSDictionary.class)); assertNotNull(d.getPage(2).getResources().getCOSObject().getDictionaryObject(COSName.XOBJECT, COSDictionary.class)); assertNoImageAtLocation(d, d.getPage(0), new Rectangle(36, 50, 200, 90)); assertImageAtLocation(d, d.getPage(1), new Rectangle(36, 50, 200, 90)); assertImageAtLocation(d, d.getPage(2), new Rectangle(36, 50, 200, 90)); assertNoImageAtLocation(d, d.getPage(3), new Rectangle(36, 50, 200, 90)); }); }
@Test public void testRotated270CropOffset() throws Exception { WatermarkParameters parameters = pngParams(customInput("pdf/rotation_270_cropped_test_file.pdf")); parameters.addPageRange(new PageRange(1, 3)); parameters.setPosition(new Point(5, 10)); parameters.setDimension(new Dimension(194, 87)); parameters.setOpacity(100); execute(parameters); testContext.assertTaskCompleted(); testContext.forPdfOutput(d -> { assertNotNull(d.getPage(1).getResources().getCOSObject().getDictionaryObject(COSName.XOBJECT, COSDictionary.class)); assertNotNull(d.getPage(2).getResources().getCOSObject().getDictionaryObject(COSName.XOBJECT, COSDictionary.class)); assertImageAtLocation(d, d.getPage(1), new Rectangle(49, 785, 194, 87)); assertImageAtLocation(d, d.getPage(1), new Rectangle(49, 785, 194, 87)); assertImageAtLocation(d, d.getPage(2), new Rectangle(49, 785, 194, 87)); assertNoImageAtLocation(d, d.getPage(3), new Rectangle(49, 785, 194, 87)); }); }
@Test public void testRotated90CropOffset() throws Exception { WatermarkParameters parameters = pngParams(customInput("pdf/rotation_90_cropped_test_file.pdf")); parameters.addPageRange(new PageRange(1, 3)); parameters.setPosition(new Point(5, 10)); parameters.setDimension(new Dimension(194, 87)); parameters.setOpacity(100); execute(parameters); testContext.assertTaskCompleted(); testContext.forPdfOutput(d -> { assertNotNull(d.getPage(1).getResources().getCOSObject().getDictionaryObject(COSName.XOBJECT, COSDictionary.class)); assertNotNull(d.getPage(2).getResources().getCOSObject().getDictionaryObject(COSName.XOBJECT, COSDictionary.class)); assertImageAtLocation(d, d.getPage(1), new Rectangle(424, 64, 194, 87)); assertImageAtLocation(d, d.getPage(1), new Rectangle(424, 64, 194, 87)); assertImageAtLocation(d, d.getPage(2), new Rectangle(424, 64, 194, 87)); assertNoImageAtLocation(d, d.getPage(3), new Rectangle(424, 64, 194, 87)); }); }
@Test public void testRotated180CropOffset() throws Exception { WatermarkParameters parameters = tiffParams(customInput("pdf/rotation_180_cropped_test_file.pdf")); parameters.addPageRange(new PageRange(1, 3)); parameters.setPosition(new Point(5, 10)); parameters.setDimension(new Dimension(194, 87)); parameters.setOpacity(100); execute(parameters); testContext.assertTaskCompleted(); testContext.forPdfOutput(d -> { assertNotNull(d.getPage(1).getResources().getCOSObject().getDictionaryObject(COSName.XOBJECT, COSDictionary.class)); assertNotNull(d.getPage(2).getResources().getCOSObject().getDictionaryObject(COSName.XOBJECT, COSDictionary.class)); assertImageAtLocation(d, d.getPage(1), new Rectangle(429, 780, -194, -87)); assertImageAtLocation(d, d.getPage(1), new Rectangle(429, 780, -194, -87)); assertImageAtLocation(d, d.getPage(2), new Rectangle(429, 780, -194, -87)); assertNoImageAtLocation(d, d.getPage(3), new Rectangle(429, 780, -194, -87)); }); } @Test
@Override public WatermarkParameters toTaskParameters(WatermarkTaskCliArguments args) { WatermarkParameters parameters = new WatermarkParameters(args.getWatermark().getSource()); if (args.isDimension()) { parameters.setDimension(args.getDimension().getDimension()); } parameters.setLocation(args.getLocation().getEnumValue()); parameters.setOpacity(args.getAlpha()); parameters.setPosition(args.getPosition().getPoint()); if (args.isPageSelection()) { parameters.addAllPageRanges(args.getPageSelection().getPageRangeSet()); } populateAbstractParameters(parameters, args); populateSourceParameters(parameters, args); populateOutputTaskParameters(parameters, args); populateOutputPrefix(parameters, args); return parameters; } }