Yes, I can take a stab at that in a few days, after the crunch of my current project abates. I'll let you know when it's on GitHub. Thanks.
On Thu, Mar 9, 2017 at 12:43 PM, Tilman Hausherr <[email protected]> wrote: > Can you create a minimal but fully working project with maven? I.e. we'd > need code with main, and a pom. I mention this because an additional lib is > needed, unless I misunderstood. > > Tilman > > > Am 09.03.2017 um 16:51 schrieb Thad Humphries: > >> Here's my code. As I said, it is throwing an exception at "new >> DomXmpParser()" and I have no idea why: >> >> protected JSONObject getPdfMetadata(byte [] buffer) >> throws IOException, XmpParsingException, JSONException { >> ByteArrayInputStream bais = new ByteArrayInputStream(buffer); >> >> JSONObject json = new JSONObject(); >> PDDocument document = null; >> try { >> document = PDDocument.load(bais); >> PDDocumentCatalog catalog = document.getDocumentCatalog(); >> PDMetadata meta = catalog.getMetadata(); >> >> if (meta != null) { >> DomXmpParser xmpParser = new DomXmpParser(); // throws exception >> XMPMetadata metadata = xmpParser.parse(meta.createInp >> utStream()); >> >> DublinCoreSchema dc = metadata.getDublinCoreSchema(); >> if (dc != null) { >> JSONObject dcj = new JSONObject(); >> dcj.put("Title", dc.getTitle()); >> dcj.put("Description", dc.getDescription()); >> ... >> json.put("Dublin", dcj); >> } >> ... >> >> My goal is to return a JSON formatted string to a browser, and display the >> fomatted metadata to the user. So for now I'm getting around this >> DomXmpParser exception from DomXmpParser by simply converting the metadata >> to JSON with JSON-java (https://github.com/stleary/JSON-java), and >> untangling the namespace, etc. on browser side: >> >> PDMetadata meta = catalog.getMetadata(); >> >> if (meta != null) { >> InputStream is = meta.exportXMPMetadata(); >> ByteArrayOutputStream baos = new ByteArrayOutputStream(); >> int read = 0; >> byte [] bytes = new byte[8*1024]; >> while ((read = is.read(bytes)) != -1) { >> baos.write(bytes, 0, read); >> } >> String string = new String(baos.toByteArray()); >> json = XML.toJSONObject(string); >> ... >> >> >> On Wed, Mar 8, 2017 at 10:11 PM, Thad Humphries <[email protected] >> > >> wrote: >> >> When I run the org.apache.pdfbox.examples.pdmodel.ExtractMetadata >>> example, it works. However when I put the same code into my class, it >>> throws an exception when I call "DomXmpParser xmpParser = new >>> DomXmpParser();" The trace is: >>> >>> java.lang.AbstractMethodError: javax.xml.parsers.DocumentBuilderFactory. >>> setFeature(Ljava/lang/String;Z)V >>> at org.apache.xmpbox.xml.DomXmpParser.<init>(DomXmpParser.java:81) >>> at com.jthad.util.image.MetadataExtractor.getPdfMetadata( >>> MetadataExtractor.java:170) >>> at com. jthad.util.image.TestMetadataExtractor.testPdf0( >>> TestMetadataExtractor.java:41) >>> ... >>> >>> Line 81 in DomXmpParser.java is >>> >>> dbFactory.setFeature("http://apache.org/xml/features/disallo >>> w-doctype-decl", >>> true); >>> >>> I am at a loss to understand how "new DomXmpParser()" works from the >>> command line but fails when called by a JUnit test in Eclipse. >>> ... >>> >> --------------------------------------------------------------------- > To unsubscribe, e-mail: [email protected] > For additional commands, e-mail: [email protected] > -- "Hell hath no limits, nor is circumscrib'd In one self-place; but where we are is hell, And where hell is, there must we ever be" --Christopher Marlowe, *Doctor Faustus* (v. 121-24)

