private SetHeaderFooterParameters basicNoSources() throws IOException { SetHeaderFooterParameters parameters = new SetHeaderFooterParameters(); parameters.setBatesSequence(new BatesSequence()); parameters.addPageRange(new PageRange(1)); parameters.setPattern("[DATE] [PAGE_OF_TOTAL] - Exhibit [FILE_NUMBER] - Case ACME Inc - [BATES_NUMBER]"); parameters.setCompress(true); parameters.setVersion(PdfVersion.VERSION_1_6); parameters.setFont(StandardType1Font.CURIER_BOLD_OBLIQUE); parameters.setExistingOutputPolicy(ExistingOutputPolicy.OVERWRITE); parameters.setHorizontalAlign(HorizontalAlign.LEFT); parameters.setVerticalAlign(VerticalAlign.BOTTOM); parameters.setFontSize(7d); parameters.setOutputPrefix("test_file[FILENUMBER]"); testContext.directoryOutputTo(parameters); return parameters; }
@Override public boolean equals(Object other) { if (this == other) { return true; } if (!(other instanceof SetHeaderFooterParameters)) { return false; } SetHeaderFooterParameters parameter = (SetHeaderFooterParameters) other; return new EqualsBuilder().appendSuper(super.equals(other)).append(getFont(), parameter.getFont()) .append(getHorizontalAlign(), parameter.getHorizontalAlign()) .append(getVerticalAlign(), parameter.getVerticalAlign()) .append(getBatesSequence(), parameter.getBatesSequence()) .append(getPageCountStartFrom(), parameter.getPageCountStartFrom()) .append(getFontSize(), parameter.getFontSize()).append(getPageRanges(), parameter.getPageRanges()) .append(getPattern(), parameter.getPattern()) .append(getColor(), parameter.getColor()) .append(getFileCountStartFrom(), parameter.getFileCountStartFrom()) .append(isAddMargins(), parameter.isAddMargins()) .append(getPredefinedSetOfPages(), parameter.getPredefinedSetOfPages()) .isEquals(); }
@Test public void testEquals() { BatesSequence bates = new BatesSequence(); SetHeaderFooterParameters eq1 = new SetHeaderFooterParameters(); SetHeaderFooterParameters eq2 = new SetHeaderFooterParameters(); SetHeaderFooterParameters eq3 = new SetHeaderFooterParameters(); SetHeaderFooterParameters diff = new SetHeaderFooterParameters(); eq1.setBatesSequence(bates); eq2.setBatesSequence(bates); eq3.setBatesSequence(bates); diff.setBatesSequence(bates); diff.setFont(StandardType1Font.CURIER_BOLD); TestUtils.testEqualsAndHashCodes(eq1, eq2, eq3, diff); }
public void write(String pattern, SetHeaderFooterParameters parameters, int currentFileCounter, String filename, TaskExecutionContext executionContext) throws TaskIOException, TaskExecutionException { PDFont font = defaultIfNull(getStandardType1Font(parameters.getFont()), PDType1Font.HELVETICA); Double fontSize = defaultIfNull(parameters.getFontSize(), 10d); HorizontalAlign hAlign = defaultIfNull(parameters.getHorizontalAlign(), HorizontalAlign.CENTER); VerticalAlign vAlign = defaultIfNull(parameters.getVerticalAlign(), VerticalAlign.BOTTOM); SortedSet<Integer> pages = parameters.getPages(totalPages); int userDefinedPageOffset = 0; if(parameters.getPageCountStartFrom() != null && !pages.isEmpty()) { userDefinedPageOffset = parameters.getPageCountStartFrom() - pages.first(); if (parameters.getBatesSequence() != null) { batesSeq = parameters.getBatesSequence().next(); try { headerFooterWriter.write(documentHandler.getPage(pageNumber), hAlign, vAlign, label, font, fontSize, parameters.getColor()); } catch (PageNotFoundException e) { executionContext.assertTaskIsLenient(e);
throw new SejdaRuntimeException("Please specify the text label to apply"); SetHeaderFooterParameters parameters = new SetHeaderFooterParameters(); parameters.setPredefinedSetOfPages(predefinedSetOfPages); } else { Set<PageRange> pageRanges = taskCliArguments.getPageRange().getPageRanges(); parameters.addAllPageRanges(pageRanges); parameters.setPattern(taskCliArguments.getLabel()); populateAlignment(taskCliArguments, parameters); populateFont(taskCliArguments, parameters); parameters.setBatesSequence(new BatesSequence(startFrom, increment, 6)); parameters.setPageCountStartFrom(taskCliArguments.getPageCountStartFrom()); color = "#" + color; parameters.setColor(hex2Rgb(color)); parameters.setFileCountStartFrom(taskCliArguments.getFileCountStartFrom());
int currentStep = 0; for (PdfSource<?> source : parameters.getSourceList()) { executionContext().assertTaskNotCancelled(); documentHandler.setCreatorOnPDDocument(); File tmpFile = createTemporaryBuffer(parameters.getOutput()); LOG.debug("Created output on temporary buffer {}", tmpFile); documentHandler.setVersionOnPDDocument(parameters.getVersion()); documentHandler.setCompress(parameters.isCompress()); if(parameters.isAddMargins()){ new PdfScaler(ScaleType.CONTENT).scale(documentHandler.getUnderlyingPDDocument(), 0.9); String originalValue = parameters.getPattern(); String value = FontUtils.removeUnsupportedCharacters(parameters.getPattern(), documentHandler.getUnderlyingPDDocument()); if(!value.equals(originalValue)) { int currentFileCounter = currentStep + parameters.getFileCountStartFrom() - 1; String outName = nameGenerator(parameters.getOutputPrefix()).generate( nameRequest().originalName(source.getName()).fileNumber(currentFileCounter)); parameters.getOutput().accept(outputWriter);
@Test public void testPageRange() throws Exception { parameters = basicWithSources(); parameters.getPageRanges().clear(); parameters.addPageRange(new PageRange(2)); parameters.setPattern("Test footer"); parameters.setVerticalAlign(VerticalAlign.BOTTOM); execute(parameters); testContext.assertTaskCompleted(); testContext.forPdfOutput("test_file1.pdf", d -> { assertFooterHasText(d.getPage(0), ""); assertFooterHasText(d.getPage(1), "Test footer"); assertFooterHasText(d.getPage(2), "Test footer"); }); }
@Test public void testEvenPages() throws Exception { parameters = new SetHeaderFooterParameters(); parameters.setPredefinedSetOfPages(PredefinedSetOfPages.EVEN_PAGES); parameters.addSource(customInput("pdf/test_file.pdf")); parameters.setPattern("Page [PAGE_ARABIC]"); parameters.setVerticalAlign(VerticalAlign.BOTTOM); parameters.setOutputPrefix("test_file[FILENUMBER]"); testContext.directoryOutputTo(parameters); execute(parameters); testContext.assertTaskCompleted(); testContext.forPdfOutput("test_file1.pdf", d -> { assertFooterHasText(d.getPage(0), ""); assertFooterHasText(d.getPage(1), "Page 2"); assertFooterHasText(d.getPage(2), ""); assertFooterHasText(d.getPage(3), "Page 4"); }); }
@Test public void testMultiplePageRanges() throws Exception { parameters = new SetHeaderFooterParameters(); parameters.addSource(customInput("pdf/test_file.pdf")); parameters.addPageRange(new PageRange(1, 2)); parameters.addPageRange(new PageRange(4, 5)); parameters.setPattern("Page [PAGE_ARABIC]"); parameters.setVerticalAlign(VerticalAlign.BOTTOM); parameters.setOutputPrefix("test_file[FILENUMBER]"); testContext.directoryOutputTo(parameters); execute(parameters); testContext.assertTaskCompleted(); testContext.forPdfOutput("test_file1.pdf", d -> { assertFooterHasText(d.getPage(0), "Page 1"); assertFooterHasText(d.getPage(1), "Page 2"); assertFooterHasText(d.getPage(2), ""); assertFooterHasText(d.getPage(3), "Page 4"); }); }
@Test public void testValidation() { SetHeaderFooterParameters victim = new SetHeaderFooterParameters(); victim.setPageCountStartFrom(-1); InputStream stream = mock(InputStream.class); PdfSource<InputStream> input = PdfStreamSource.newInstanceNoPassword(stream, "name"); victim.addSource(input); TestUtils.assertInvalidParameters(victim); } }
@Test public void defaults() { SetHeaderFooterParameters parameters = defaultCommandLine().invokeSejdaConsole(); assertEquals(1, parameters.getFileCountStartFrom().intValue()); assertEquals(PredefinedSetOfPages.ALL_PAGES, parameters.getPredefinedSetOfPages()); }
@Test public void testDefaultHorAlign() { SetHeaderFooterParameters parameters = defaultCommandLine().invokeSejdaConsole(); assertEquals(HorizontalAlign.CENTER, parameters.getHorizontalAlign()); }
@Test public void batesIncrement() { SetHeaderFooterParameters parameters = defaultCommandLine().with("--batesIncrement", "5").invokeSejdaConsole(); parameters.getBatesSequence().next(); assertEquals("000006", parameters.getBatesSequence().next()); assertEquals("000011", parameters.getBatesSequence().next()); }
@Test public void fileCountStartFrom() { SetHeaderFooterParameters parameters = defaultCommandLine().with("--fileCountStartFrom", "10") .invokeSejdaConsole(); assertEquals(10, parameters.getFileCountStartFrom().intValue()); }
@Test public void pageCountStartFrom() { SetHeaderFooterParameters parameters = defaultCommandLine().with("--pageCountStartFrom", "5") .invokeSejdaConsole(); assertEquals(5, parameters.getPageCountStartFrom().intValue()); }
@Test public void fontColor() { SetHeaderFooterParameters parameters = defaultCommandLine().with("--fontColor", "#FFFFFF").invokeSejdaConsole(); assertEquals(new Color(255, 255, 255), parameters.getColor()); }
@Test public void testKnownFont() { SetHeaderFooterParameters parameters = defaultCommandLine().with("-t", "Helvetica-Bold").invokeSejdaConsole(); assertEquals(StandardType1Font.HELVETICA_BOLD, parameters.getFont()); }
@Test public void labelPattern() { SetHeaderFooterParameters parameters = defaultCommandLine().with("-l", "\"Page [PAGE_ROMAN]\"") .invokeSejdaConsole(); assertEquals("Page [PAGE_ROMAN]", parameters.getPattern()); }
@Test public void fontSize() { SetHeaderFooterParameters parameters = defaultCommandLine().with("-d", "1.0").invokeSejdaConsole(); assertEquals(1d, parameters.getFontSize(), 0.0); }
@Test public void pageRanges() { SetHeaderFooterParameters parameters = defaultCommandLine().with("-s", "1,2,8-10,19-") .invokeSejdaConsole(); assertThat(parameters.getPageRanges(), hasItems(new PageRange(1, 1), new PageRange(8, 10), new PageRange(19))); } }