documentHandler.savePDDocument(tmpFile); String outName = nameGenerator(parameters.getOutputPrefix()) .generate(nameRequest().originalName(input.source.getName()).fileNumber(currentStep)); outputWriter.addOutput(file(tmpFile).name(outName));
@Test(expected = IllegalArgumentException.class) public void testNullRequest() { String prefix = "BLA_"; nameGenerator(prefix).generate(null); }
@Test public void testMaxFilenameSizeUnicode() { String generatedFilename = nameGenerator("compressed_").generate(nameRequest("pdf").originalName(repeat("aว", 300))); assertThat(generatedFilename.length(), is(lessThan(256))); assertThat(generatedFilename, endsWith(".pdf")); assertThat(generatedFilename, startsWith("compressed_aวaว")); }
@Test public void testMaxFilenameSize() { String generatedFilename = nameGenerator("BLA_[TEXT]").generate(nameRequest("pdf").text(repeat('a', 300))); assertEquals(255, generatedFilename.length()); assertThat(generatedFilename, endsWith("aaa.pdf")); }
@Test public void testMaxFilenameSizeSanitized() { String generatedFilename = nameGenerator("B|LA_[TEXT]").generate(nameRequest("pdf").text(repeat('a', 300))); assertEquals(255, generatedFilename.length()); assertThat(generatedFilename, endsWith("aaa.pdf")); assertThat(generatedFilename, startsWith("BLA_aaa")); }
@Test public void testInvalidCharacters() { String generatedFilename = nameGenerator("Invalid_\\").generate(nameRequest("pdf")); assertEquals(generatedFilename, "Invalid_.pdf"); }
@Test public void testFullComplexPrefix() { String prefix = "BLA_[CURRENTPAGE###]_[BASENAME]"; String originalName = "Original"; String expected = "BLA_002_Original.pdf"; assertEquals(expected, nameGenerator(prefix).generate(nameRequest().page(Integer.valueOf("2")).originalName(originalName))); }
@Test public void testSimplePrefixWithPage() { String prefix = "BLA_"; String originalName = "Original"; String expected = "1_BLA_Original.pdf"; assertEquals(expected, nameGenerator(prefix).generate(nameRequest().page(Integer.valueOf(1)).originalName(originalName))); }
@Test public void testSimplePrefix() { String prefix = "BLA_"; String originalName = "Original"; String expected = "BLA_Original.pdf"; assertEquals(expected, nameGenerator(prefix).generate(nameRequest().originalName(originalName))); }
public void execute(ViewerPreferencesParameters parameters) throws TaskException { int currentStep = 0; for (PdfSource<?> source : parameters.getSourceList()) { currentStep++; LOG.debug("Opening {} ", source); reader = source.open(sourceOpener); File tmpFile = createTemporaryPdfBuffer(); LOG.debug("Created output temporary buffer {} ", tmpFile); stamperHandler = new PdfStamperHandler(reader, tmpFile, parameters.getVersion()); stamperHandler.setCompressionOnStamper(parameters.isCompress()); stamperHandler.setCreatorOnStamper(reader); // set mode and layout stamperHandler.setViewerPreferencesOnStamper(preferences); // set other preferences for (Entry<PdfName, PdfObject> entry : configuredPreferences.entrySet()) { stamperHandler.addViewerPreferenceOnStamper(entry.getKey(), entry.getValue()); } nullSafeClosePdfReader(reader); nullSafeCloseQuietly(stamperHandler); String outName = nameGenerator(parameters.getOutputPrefix()).generate( nameRequest().originalName(source.getName()).fileNumber(currentStep)); outputWriter.addOutput(file(tmpFile).name(outName)); notifyEvent(getNotifiableTaskMetadata()).stepsCompleted(currentStep).outOf(totalSteps); } parameters.getOutput().accept(outputWriter); LOG.debug("Viewer preferences set on input documents and written to {}", parameters.getOutput()); }
@Test public void testComplexPrefixNoSubstitution() { String prefix = "BLA_[CURRENTPAGE###]_[BASENAME]"; String originalName = "Original"; String expected = "BLA_[CURRENTPAGE###]_Original.pdf"; assertEquals(expected, nameGenerator(prefix).generate(nameRequest().originalName(originalName))); }
private PdfCopier open(int page, int outputDocumentsCounter) throws TaskException { File tmpFile = createTemporaryPdfBuffer(); LOG.debug("Created output temporary buffer {}", tmpFile); PdfCopier pdfCopier = openCopier(reader, tmpFile, parameters.getVersion()); pdfCopier.setCompression(parameters.isCompress()); String outName = nameGenerator(parameters.getOutputPrefix()).generate( enrichNameGenerationRequest(nameRequest().page(page).originalName(parameters.getSource().getName()) .fileNumber(outputDocumentsCounter))); outputWriter.addOutput(file(tmpFile).name(outName)); outlineSubsetProvider.startPage(page); return pdfCopier; }
@Test public void testDollarSignInFilename() { String generatedFilename = nameGenerator("[CURRENTPAGE]-[BASENAME]") .generate(nameRequest("pdf").page(99).originalName("My file 6-04-2015 $1234-56")); assertEquals(generatedFilename, "99-My file 6-04-2015 $1234-56.pdf"); }
public void execute(DecryptParameters parameters) throws TaskException { int currentStep = 0; for (PdfSource<?> source : parameters.getSourceList()) { currentStep++; LOG.debug("Opening {} ", source); reader = source.open(sourceOpener); File tmpFile = createTemporaryPdfBuffer(); LOG.debug("Created output temporary buffer {} ", tmpFile); stamperHandler = new PdfStamperHandler(reader, tmpFile, parameters.getVersion()); stamperHandler.setCompressionOnStamper(parameters.isCompress()); stamperHandler.setCreatorOnStamper(reader); nullSafeClosePdfReader(reader); nullSafeCloseQuietly(stamperHandler); String outName = nameGenerator(parameters.getOutputPrefix()).generate( nameRequest().originalName(source.getName()).fileNumber(currentStep)); outputWriter.addOutput(file(tmpFile).name(outName)); notifyEvent(getNotifiableTaskMetadata()).stepsCompleted(currentStep).outOf(totalSteps); } parameters.getOutput().accept(outputWriter); LOG.debug("Input documents decrypted and written to {}", parameters.getOutput()); }
public void execute(EncryptParameters parameters) throws TaskException { int currentStep = 0; for (PdfSource<?> source : parameters.getSourceList()) { currentStep++; LOG.debug("Opening {} ", source); reader = source.open(sourceOpener); File tmpFile = createTemporaryPdfBuffer(); LOG.debug("Created output temporary buffer {} ", tmpFile); stamperHandler = new PdfStamperHandler(reader, tmpFile, parameters.getVersion()); stamperHandler.setCompressionOnStamper(parameters.isCompress()); stamperHandler.setCreatorOnStamper(reader); stamperHandler.setEncryptionOnStamper(getEncryptionAlgorithm(parameters.getEncryptionAlgorithm()), parameters.getUserPassword(), parameters.getOwnerPassword(), permissions); nullSafeClosePdfReader(reader); nullSafeCloseQuietly(stamperHandler); String outName = nameGenerator(parameters.getOutputPrefix()).generate( nameRequest().originalName(source.getName()).fileNumber(currentStep)); outputWriter.addOutput(file(tmpFile).name(outName)); notifyEvent(getNotifiableTaskMetadata()).stepsCompleted(currentStep).outOf(totalSteps); } parameters.getOutput().accept(outputWriter); LOG.debug("Input documents encrypted and written to {}", parameters.getOutput()); LOG.debug("Permissions {}", PdfEncryptor.getPermissionsVerbose(permissions)); }
@Override public void execute(DecryptParameters parameters) throws TaskException { int currentStep = 0; for (PdfSource<?> source : parameters.getSourceList()) { executionContext().assertTaskNotCancelled(); currentStep++; LOG.debug("Opening {}", source); documentHandler = source.open(documentLoader); documentHandler.getPermissions().ensureOwnerPermissions(); documentHandler.setCreatorOnPDDocument(); File tmpFile = createTemporaryBuffer(parameters.getOutput()); LOG.debug("Created output on temporary buffer {}", tmpFile); documentHandler.setVersionOnPDDocument(parameters.getVersion()); documentHandler.setCompress(parameters.isCompress()); documentHandler.savePDDocument(tmpFile); String outName = nameGenerator(parameters.getOutputPrefix()).generate( nameRequest().originalName(source.getName()).fileNumber(currentStep)); outputWriter.addOutput(file(tmpFile).name(outName)); nullSafeCloseQuietly(documentHandler); notifyEvent(executionContext().notifiableTaskMetadata()).stepsCompleted(currentStep).outOf(totalSteps); } parameters.getOutput().accept(outputWriter); LOG.debug("Input documents decrypted and written to {}", parameters.getOutput()); }
@Override public void execute(ScaleParameters parameters) throws TaskException { int currentStep = 0; LOG.debug("Starting scale '{}'", parameters.getScaleType()); for (PdfSource<?> source : parameters.getSourceList()) { executionContext().assertTaskNotCancelled(); currentStep++; LOG.debug("Opening {}", source); try { documentHandler = source.open(documentLoader); documentHandler.getPermissions().ensurePermission(PdfAccessPermission.MODIFY); documentHandler.setCreatorOnPDDocument(); File tmpFile = createTemporaryBuffer(parameters.getOutput()); LOG.debug("Created output on temporary buffer {}", tmpFile); scaler.scale(documentHandler.getUnderlyingPDDocument(), parameters.scale); documentHandler.setVersionOnPDDocument(parameters.getVersion()); documentHandler.setCompress(parameters.isCompress()); documentHandler.savePDDocument(tmpFile); String outName = nameGenerator(parameters.getOutputPrefix()) .generate(nameRequest().originalName(source.getName()).fileNumber(currentStep)); outputWriter.addOutput(file(tmpFile).name(outName)); } finally { nullSafeCloseQuietly(documentHandler); } notifyEvent(executionContext().notifiableTaskMetadata()).stepsCompleted(currentStep).outOf(totalSteps); } parameters.getOutput().accept(outputWriter); LOG.debug("Input documents scaled and written to {}", parameters.getOutput()); }
public void execute(RotateParameters parameters) throws TaskException { int currentStep = 0; for (PdfSource<?> source : parameters.getSourceList()) { currentStep++; LOG.debug("Opening {} ", source); reader = source.open(sourceOpener); applyRotation(parameters.getRotation(), parameters.getPages(reader.getNumberOfPages())).to(reader); File tmpFile = createTemporaryPdfBuffer(); LOG.debug("Created output temporary buffer {} ", tmpFile); stamperHandler = new PdfStamperHandler(reader, tmpFile, parameters.getVersion()); stamperHandler.setCompressionOnStamper(parameters.isCompress()); stamperHandler.setCreatorOnStamper(reader); nullSafeClosePdfReader(reader); nullSafeCloseQuietly(stamperHandler); String outName = nameGenerator(parameters.getOutputPrefix()).generate( nameRequest().originalName(source.getName()).fileNumber(currentStep)); outputWriter.addOutput(file(tmpFile).name(outName)); notifyEvent(getNotifiableTaskMetadata()).stepsCompleted(currentStep).outOf(totalSteps); } parameters.getOutput().accept(outputWriter); LOG.debug("Input documents rotated and written to {}", parameters.getOutput()); }
@Override public void execute(DecryptParameters parameters) throws TaskException { int currentStep = 0; for (PdfSource<?> source : parameters.getSourceList()) { executionContext().assertTaskNotCancelled(); currentStep++; LOG.debug("Opening {}", source); documentHandler = source.open(documentLoader); documentHandler.getPermissions().ensureOwnerPermissions(); documentHandler.setCreatorOnPDDocument(); File tmpFile = createTemporaryBuffer(parameters.getOutput()); LOG.debug("Created output on temporary buffer {}", tmpFile); documentHandler.setVersionOnPDDocument(parameters.getVersion()); documentHandler.setCompress(parameters.isCompress()); documentHandler.savePDDocument(tmpFile); String outName = nameGenerator(parameters.getOutputPrefix()).generate( nameRequest().originalName(source.getName()).fileNumber(currentStep)); outputWriter.addOutput(file(tmpFile).name(outName)); nullSafeCloseQuietly(documentHandler); notifyEvent(executionContext().notifiableTaskMetadata()).stepsCompleted(currentStep).outOf(totalSteps); } parameters.getOutput().accept(outputWriter); LOG.debug("Input documents decrypted and written to {}", parameters.getOutput()); }
@Override public void execute(ViewerPreferencesParameters parameters) throws TaskException { int currentStep = 0; for (PdfSource<?> source : parameters.getSourceList()) { executionContext().assertTaskNotCancelled(); currentStep++; LOG.debug("Opening {}", source); documentHandler = source.open(documentLoader); documentHandler.setCreatorOnPDDocument(); File tmpFile = createTemporaryBuffer(parameters.getOutput()); LOG.debug("Created output on temporary buffer {}", tmpFile); documentHandler.setVersionOnPDDocument(parameters.getVersion()); documentHandler.setCompress(parameters.isCompress()); documentHandler.setPageModeOnDocument(parameters.getPageMode()); documentHandler.setPageLayoutOnDocument(parameters.getPageLayout()); setViewerPreferences(parameters); documentHandler.savePDDocument(tmpFile); String outName = nameGenerator(parameters.getOutputPrefix()).generate( nameRequest().originalName(source.getName()).fileNumber(currentStep)); outputWriter.addOutput(file(tmpFile).name(outName)); nullSafeCloseQuietly(documentHandler); notifyEvent(executionContext().notifiableTaskMetadata()).stepsCompleted(currentStep).outOf(totalSteps); } parameters.getOutput().accept(outputWriter); LOG.debug("Viewer preferences set on input documents and written to {}", parameters.getOutput()); }