Documentation page: Examples. This page is also available as Markdown at pd4ml-optimize-examples.md.

Examples

Available starting from PD4ML v4.1.1

All examples are part of the public pd4ml-examples repository on GitHub, under src/main/java/com/pd4ml/pdf/optimizer/example/usecases/, and are ordinary runnable classes with a main(String[] args). Clone the repository; easiest from an IDE: right-click the class, Run. From the command line:

git clone https://github.com/zxfr/pd4ml-examples.git
cd pd4ml-examples
mvn compile dependency:build-classpath -Dmdep.outputFile=cp.txt
java -cp "target/classes;$(cat cp.txt)" \
     com.pd4ml.pdf.optimizer.example.usecases.<ClassName> <args...>

Every example builds its own small sample PDF in memory (no external fixture files needed) and was actually run end-to-end -- these aren't untested snippets.

# Class Demonstrates
01 Ex01_BasicCleanup The minimal call: clean up a PDF with real orphaned objects from an incremental-update edit. Start here.
02 Ex02_AlreadyCleanIsANoop Optimizing an already-clean document reports zero removed objects -- a report, not an assumption.
03 Ex03_SharedResourceIsNotDuplicated Two pages sharing one font object still share it after optimizing.
04 Ex04_EncryptedInputRequiresPassword Optimizing an encrypted input needs its password; the output is plain by default.
05 Ex05_EncryptOutput Cleaning a PDF and re-encrypting the output in the same call.
06 Ex06_ErrorHandlingPatterns Every PdfOptimizeException failure mode and how to recognize it.
07 Ex07_DuplicateContentDeduplication Two originally-distinct but byte-identical font objects are merged into one by default; turning that off with deduplicateContent(false).

For a ready-made command-line tool covering the same ground without writing any code, see the pd4optimizecli Reference and run com.pd4ml.pdf.optimizer.cli.Pd4OptimizeCli.

See also