Hi,
I'd like to help, but to be honest, I haven't understood you. What do
you mean with "stamping it back"?
The usual way to write in a COSStream is like this:
os = cosStream.createUnfilteredStream();
os.write(....)
os.close()
If you need more help, mention what version you are using. The official
one is 1.8.9.
Tilman
Am 29.04.2015 um 16:52 schrieb Philip Poupart:
I'm wondering if anyone can point me in the right direction here. I have a
series of PDFs that have short content streams that just reference /Xf1 in
the PDF body. These were PDFs modified with iText. It is essentially a PDF
placed on a page of a PDF.
I'm extracting the nested contents stream just fine. I can modify that
contents stream, but am having difficulty stamping it back to the
Resources->XObjects dictionary.
Original content stream is a reference to /Xf1 object in pdf body.
1 0 0 1 0 0 cm /Xf1 Do Q
Below are some snippets of my code.
-----------get the nested content stream (this works)
String xDict = "Xf1" ;
Map<String,PDXObject> trimMap = resources.getXObjects();
PDXObject xObjects = trimMap.get(xDict);
PDStream nestedContentStream = xObjects.getPDStream();
... modify nestedContentStream ...
-----------stamp it back to resources (fails to create COSStream)
byte[] modContentBytes =
StringUtils.getBytesIso8859_1(newlyModifiedContentsStr);
RandomAccessBuffer rab = new RandomAccessBuffer();
rab.write(modContentBytes, 0, modContentBytes.length);
COSStream cosStream = new COSStream(rab); <------ cosStream length is 0
even though rab is 218727 bytes
PDXObject modifiedPdxObj =
PDXObject.createXObject(cosStream.getCOSObject());
trimMap.put(trimmedXDict, modifiedPdxObj);
resources.setXObjects(trimMap); <------ this blows up because my COSStream
length is 0 (I think)
Any help would be appreciated. Thanks,
Phil Poupart
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]