PDFSignature NullPointerException
"David Law via fop-users" <[email protected]> Tue, 17 Mar 2026 12:50:56 +0100
| Newsgroups | gmane.text.xml.fop.user |
|---|---|
| Message-ID | <[email protected]> |
--------------iHcd3HX2v1Iq0gBe6LluMRXy
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
Hi there,
I'm trying to create a signed PDF with FOP v2.11 & JDK 17.
I am NOT using a Config file (i.e. fop.xconf).
Instead I'm supplying an instance of PDFSignParams.
-> FOP then internally creates an instance of PDFSignature.
-> I've checked the PDFSignature instance is able to read the Keystore &
sign content.
When creating the PDF from the FO, a *NullPointerException* is raised.
The only Method invoked on PDFSignature is add(final PDFPage page).
The message is:
Cannot invoke "java.io.OutputStream.write(byte[], int, int)" because
"this.out" is null
(I did something similar for encryption with an instance of
PDFEncryptionParams. That worked fine)
Before I take time to create a detailed example,
I thought I'd ask if anyone has had the same problem.
The generatePDFfromFO Method looks like this:
private static byte[] generatePDFfromFO(final byte[] bytesFO, final
TransformerFactory factory) throws Exception {
final var foUserAgent = FOP_FACTORY.newFOUserAgent();
; foUserAgent.setProducer("ap FOP");
; foUserAgent.setCreationDate(new Date());
; foUserAgent.setTargetResolution(300 /* dpi */);
final var foSignParms = new
PDFSignParams("path/fopTest.pkcs12", null, null, null, "fopTest");
@SuppressWarnings("unchecked")
final var foRendOpt = (Map<Object, Object>)
foUserAgent.getRendererOptions();
; foRendOpt.put("sign-params", foSignParms);
final var pdfBytesSizeGuess = bytesFO.length / 2;
final var pdfBytesBaos = new
ByteArrayOutputStream(pdfBytesSizeGuess);
try (pdfBytesBaos)
{
final var fop =
foUserAgent.newFop(MimeConstants.MIME_PDF, pdfBytesBaos);
final var saxResult = new
SAXResult(fop.getDefaultHandler());
final var xmlSource = getSource(bytesFO);
final var transformer = factory.newTransformer();
; transformer.transform(xmlSource, saxResult); // ->
*NullPointerException*
}
return pdfBytesBaos.toByteArray();
}
Any ideas, anyone?
Thanks in advance,
DaveLaw
--------------iHcd3HX2v1Iq0gBe6LluMRXy
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: 8bit
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
Hi there,<br>
<br>
I'm trying to create a signed PDF with FOP v2.11 & JDK 17.<br>
<br>
I am NOT using a Config file (i.e. fop.xconf).<br>
<br>
Instead I'm supplying an instance of PDFSignParams.<br>
-> FOP then internally creates an instance of PDFSignature.<br>
-> I've checked the PDFSignature instance is able to read the
Keystore & sign content.<br>
<br>
When creating the PDF from the FO, a <b>NullPointerException</b> is
raised.<br>
The only Method invoked on PDFSignature is add(final PDFPage page).<br>
<br>
The message is:<br>
Cannot invoke "java.io.OutputStream.write(byte[], int, int)" because
"this.out" is null<br>
<br>
(I did something similar for encryption with an instance of
PDFEncryptionParams. That worked fine)<br>
<br>
Before I take time to create a detailed example,<br>
I thought I'd ask if anyone has had the same problem.<br>
<br>
The generatePDFfromFO Method looks like this:<br>
<br>
<font face="monospace">private static byte[] generatePDFfromFO(final
byte[] bytesFO, final TransformerFactory factory) throws Exception
{<br>
<br>
final var foUserAgent = FOP_FACTORY.newFOUserAgent();<br>
; foUserAgent.setProducer("ap FOP");<br>
; foUserAgent.setCreationDate(new Date());<br>
; foUserAgent.setTargetResolution(300 /* dpi */);<br>
<br>
final var foSignParms = new
PDFSignParams("path/fopTest.pkcs12", null, null, null, "fopTest");<br>
<br>
@SuppressWarnings("unchecked")<br>
final var foRendOpt = (Map<Object, Object>)
foUserAgent.getRendererOptions();<br>
; foRendOpt.put("sign-params", foSignParms);<br>
<br>
final var pdfBytesSizeGuess = bytesFO.length / 2;<br>
final var pdfBytesBaos = new
ByteArrayOutputStream(pdfBytesSizeGuess);<br>
<br>
try (pdfBytesBaos)<br>
{<br>
final var fop =
foUserAgent.newFop(MimeConstants.MIME_PDF, pdfBytesBaos);<br>
final var saxResult = new
SAXResult(fop.getDefaultHandler());<br>
<br>
final var xmlSource = getSource(bytesFO);<br>
<br>
final var transformer = factory.newTransformer();<br>
; transformer.transform(xmlSource, saxResult); //
-> <b>NullPointerException</b><br>
}<br>
return pdfBytesBaos.toByteArray();<br>
}<br>
</font><br>
Any ideas, anyone?<br>
<br>
Thanks in advance,<br>
DaveLaw
</body>
</html>
--------------iHcd3HX2v1Iq0gBe6LluMRXy--