Skip to content

Instantly share code, notes, and snippets.

@geissebn
Last active September 21, 2015 16:25
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save geissebn/c43f156e197a75a8da81 to your computer and use it in GitHub Desktop.
Save geissebn/c43f156e197a75a8da81 to your computer and use it in GitHub Desktop.
demo code for the jadice knowledge base article at https://levigo.de/info/x/kYHHAQ
import java.util.Calendar;
import org.apache.activemq.ActiveMQConnectionFactory;
import org.apache.jempbox.xmp.XMPMetadata;
import org.apache.jempbox.xmp.XMPSchemaBasic;
import org.apache.jempbox.xmp.XMPSchemaDublinCore;
import org.apache.jempbox.xmp.XMPSchemaPDF;
import org.w3c.dom.Document;
import com.levigo.jadice.server.Job;
import com.levigo.jadice.server.client.JobFactory;
import com.levigo.jadice.server.client.jms.JMSJobFactory;
import com.levigo.jadice.server.nodes.StreamInputNode;
import com.levigo.jadice.server.nodes.StreamOutputNode;
import com.levigo.jadice.server.pdf.PDFMetadataNode;
public class ModifyPDFMetadata {
public void clearMetadata() throws Exception {
final JobFactory jf = new JMSJobFactory(new ActiveMQConnectionFactory("tcp://localhost:61616"), JMSJobFactory.DEFAULT_QUEUE_NAME);
final Job job = jf.createJob();
job.setType("Clear PDF Metadata");
final PDFMetadataNode pdfMetadata = new PDFMetadataNode();
// Clear any metadata:
pdfMetadata.setAuthor(null);
pdfMetadata.setCreator(null);
pdfMetadata.setCreationDate(null);
pdfMetadata.setKeywords(null);
pdfMetadata.setModificationDate(null);
pdfMetadata.setProducer(null);
pdfMetadata.setSubject(null);
pdfMetadata.setTitle(null);
pdfMetadata.setXmpMetaData(null);
job.attach(new StreamInputNode()
.appendSuccessor(pdfMetadata)
.appendSuccessor(new StreamOutputNode()));
}
public void writeXMP() throws Exception {
final JobFactory jf = new JMSJobFactory(new ActiveMQConnectionFactory("tcp://localhost:61616"), JMSJobFactory.DEFAULT_QUEUE_NAME);
final Job job = jf.createJob();
job.setType("Write XMP to PDF");
XMPMetadata xmlMeta = new XMPMetadata();
XMPSchemaPDF pdfScheme = xmlMeta.addPDFSchema();
pdfScheme.setProducer("ACME PDF Producer");
pdfScheme.setKeywords("XMP, demo, jadice server");
XMPSchemaBasic basicScheme = xmlMeta.addBasicSchema();
Calendar createDate = Calendar.getInstance();
createDate.set(2015, 0, 1, 12, 0, 0); // 1st of January 2015, 12:00
basicScheme.setCreateDate(createDate);
Calendar modifyDate = Calendar.getInstance();
modifyDate.set(2015, 1, 28, 12, 0, 0); // 28th of February 2015, 12:00
basicScheme.setModifyDate(modifyDate);
XMPSchemaDublinCore dc = xmlMeta.addDublinCoreSchema();
dc.setTitle("XMP demonstration document");
dc.setDescription("This document is the result of the PDFMetadataNode of jadice server");
dc.addCreator("John Doe");
// Provide metadata as DOM document
Document dom = xmlMeta.getXMPDocument();
final PDFMetadataNode pdfMetadata = new PDFMetadataNode();
pdfMetadata.setXmpMetaData(dom);
job.attach(new StreamInputNode()
.appendSuccessor(pdfMetadata)
.appendSuccessor(new StreamOutputNode()));
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment