galkahana/HummusJS

Pdf Metadata is not saving

john-attrium-204 opened this issue · 0 comments

Thanks for writing this awesome library.

Hummus allows us to write JOSN metadata in infoDictionary with addAdditionalInfoEntry() method. It is running successfully. But I want to add this data in XML format to the file in XMP metadata.

I am trying to save metadata to a file using the following code. It runs without any error. But when checking the metadata using some viewer, it is not showing anything.

const pdfWriter = hummus.createWriterToModify(filename);
const data = new Buffer(metadata, 'utf-8');
const parser = pdfWriter.getModifiedFileParser();
const objectsContext = pdfWriter.getObjectsContext();
const aDictionary = parser.queryDictionaryObject(parser.getTrailer(),'Root').toPDFDictionary().toJSObject();
if(aDictionary["Metadata"])
{
const objectId = aDictionary["Metadata"].toPDFIndirectObjectReference().getObjectID();
objectsContext.startModifiedIndirectObject(objectId);
}
else
{
const objectId = objectsContext.startNewIndirectObject();
pdfWriter.requireCatalogUpdate();
pdfWriter.getEvents().on('OnCatalogWrite',function(dictionaryContext){
dictionaryContext.catalogDictionaryContext.writeKey('Metadata');
dictionaryContext.catalogDictionaryContext.writeObjectReferenceValue(objectId);
});
}

const pdfStream = objectsContext.startUnfilteredPDFStream();
pdfStream.getWriteStream().write([...data]);
objectsContext.endPDFStream(pdfStream);
objectsContext.endIndirectObject();
pdfWriter.end(); 

Appreciate in advance.