18 runnable, self-contained com.pd4ml.pdf.sign use-case examples - from a minimal
invisible signature to visible signatures, PKCS#11/cloud KMS, DocMDP certification, RFC 3161
timestamping, and PAdES-LT.
1. Running the examples
All examples live under src/test/java/com/pd4ml/pdf/sign/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.sign.example.usecases.<ClassName> <args...>
Every example was compiled against real BouncyCastle classes and, except where noted (live network calls, or a real PKCS#11 token this environment doesn't have), run end-to-end to produce a real signed PDF. Each one builds its own throwaway sample PDF and test certificate in memory, so none of them needs an external file to run.
See also com.pd4ml.pdf.sign.example.SignPdfExample
(src/test/java/com/pd4ml/pdf/sign/example/SignPdfExample.java) - the original minimal
single-file CLI sample (PKCS#12 + optional TSA only, real files expected), kept for the simplest
possible reference.
2. Example index
| # | Class | Demonstrates |
|---|---|---|
| 01 | Ex01_InvisibleSigningBasic | The minimal call: PKCS#12 key, invisible signature. Start here. |
| 02 | Ex02_VisibleSignatureWithText | A visible widget with wrapped text only, built-in Helvetica metrics. |
| 03 | Ex03_VisibleSignatureWithImage | A visible widget with a stamp image (PNG/JPEG) plus a text caption. |
| 04 | Ex04_DigestAlgorithmChoice | Choosing SHA-256 / SHA-384 / SHA-512; algorithm auto-derived from key type. |
| 05 | Ex05_RfcTimestamping | RFC 3161 trusted timestamp from a TSA, with optional Basic Auth. |
| 06 | Ex06_DocMdpCertificationLevels | PDF "Certify" at all three DocMDP levels (P=1/2/3). |
| 07 | Ex07_CoSigningExistingDocument | Two independent signers on the same (uncertified) document. |
| 08 | Ex08_Pkcs11HsmSigning | Signing with a PKCS#11 hardware token/HSM - key never leaves the token. |
| 09 | Ex09_CloudKmsSigning | The RemoteSigner seam for cloud KMS (AWS/Azure/GCP), with a real AWS KMS sketch in comments. |
| 10 | Ex10_CustomPlaceholderSize | Sizing the /Contents placeholder for a long chain + timestamp; the resulting error if it's too small. |
| 11 | Ex11_CustomFieldName | Naming the AcroForm signature field explicitly. |
| 12 | Ex12_StreamBasedSigning | The three equivalent call shapes: File, InputStream/OutputStream, byte[]. |
| 13 | Ex13_LtvImmediatelyAfterSigning | Sign, then add PAdES-LT validation info in the same process. |
| 14 | Ex14_LtvOnExistingSignedPdf | Add LTV to a PDF signed earlier/elsewhere - chain recovered from the CMS itself, no original signing context needed. |
| 15 | Ex15_ErrorHandlingPatterns | Every PdfSigningException failure mode and how to recognize it. |
| 16 | Ex16_FullyLoadedCombinedExample | Every major option combined: visible + certify + timestamp + LTV. |
| 17 | Ex17_CosInspectionAndPathQuery | Using com.pd4ml.pdf.cos alone (no signing) to parse and COS-path-query a PDF. |
| 18 | Ex18_ListSignatureFields | Programmatically enumerating signature fields and their metadata. |
For a ready-made command-line tool covering the same ground without writing any code, see the
pd4signcli Reference and run
com.pd4ml.pdf.sign.cli.PdfSignCli. For com.pd4ml.pdf.cos alone - inspection,
COS-path queries, object listing, and incremental-update editing, with no signing involved - see
the pd4coscli Reference (and its own
examples) and run com.pd4ml.pdf.cos.cli.CosCli.
3. See also
- PD4ML Signing Manual - the programmer's manual behind these examples
- pd4signcli Reference - command-line reference for
com.pd4ml.pdf.sign.cli.PdfSignCli - PD4ML COS API Manual - standalone
com.pd4ml.pdf.cosprogrammer's manual - PD4ML COS Examples - runnable
com.pd4ml.pdf.cosuse-case examples - PD4ML Merge Examples / PD4ML Optimizer Examples - the same style of runnable examples for
com.pd4ml.pdf.merge/com.pd4ml.pdf.optimizer - PD4ML XFDF Examples - the same style of runnable examples for
com.pd4ml.pdf.xfdf(annotation/form field import and export)
