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

Examples

Available starting from PD4ML v4.1.1

All examples live under src/test/java/com/pd4ml/pdf/xfdf/example/usecases/ (test scope -- not shipped in the distributed jar) and are ordinary runnable classes with a main(String[] args). Easiest from an IDE: right-click the class, Run. From the command line:

mvn test-compile
mvn dependency:build-classpath -Dmdep.outputFile=cp.txt
java -cp "target/test-classes;target/classes;$(cat cp.txt)" \
     com.pd4ml.pdf.xfdf.example.usecases.<ClassName> <args...>

Every example builds its own small sample PDF(s) in memory (via com.pd4ml.examples.support.SamplePdf, no external fixture files needed) and was actually run end-to-end -- these aren't untested snippets.

# Class Demonstrates
01 Ex01_BasicExportAndImport The minimal round trip: export a PDF's annotations to XFDF, then import that XFDF into a different PDF. Start here.
02 Ex02_InspectingTheParsedModel XfdfReader.read(...) turns XFDF bytes into a plain XfdfDocument/XfdfAnnotation model you can inspect directly.
03 Ex03_UpdateIfExistsSwitch Options.updateIfExists(boolean) -- update a matching annotation in place vs. always adding a new one.
04 Ex04_FormFieldValues Form field values travel through <fields>, only ever updating an existing AcroForm field -- including checkbox /AS sync.
05 Ex05_TypeAndIdFiltering Options.types(String)/ids(String) restrict export or import to a comma-separated subset.
06 Ex06_EncryptedSourceExport Exporting from an encrypted PDF -- transparent decryption via the password overload.
07 Ex07_PostImportOptimizeAndEncrypt Options.optimizeOutput(boolean) + encryptOutput(...) chained after an import.
08 Ex08_ErrorHandlingPatterns Every XfdfException failure mode and how to recognize it.

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

See also