summaryrefslogtreecommitdiff
path: root/bin/xmp2rdfxml
diff options
context:
space:
mode:
authorJonas Smedegaard <dr@jones.dk>2024-02-21 18:55:52 +0100
committerJonas Smedegaard <dr@jones.dk>2024-02-21 19:28:04 +0100
commitd41622674b2998e178a53fed02351ba2ae1379b8 (patch)
treed0942b88fbfa3518af13fb3cd7cd9f10b886e932 /bin/xmp2rdfxml
parent8cd66a1a8729d8ef0bce89408b0733926d258958 (diff)
add helper script xmp2rdfxml, and make targets turtle-from-* dotgraph-from-*
Diffstat (limited to 'bin/xmp2rdfxml')
-rwxr-xr-xbin/xmp2rdfxml25
1 files changed, 25 insertions, 0 deletions
diff --git a/bin/xmp2rdfxml b/bin/xmp2rdfxml
new file mode 100755
index 0000000..81011b9
--- /dev/null
+++ b/bin/xmp2rdfxml
@@ -0,0 +1,25 @@
+#!/usr/bin/perl
+
+# extract XMP data from PDF file and unwrap as generic RDF/XML
+
+use v5.36;
+use strict;
+
+use PDF::API2;
+
+my $xml = PDF::API2->open( $ARGV[0] )->xml_metadata();
+
+# strip noise
+$xml =~ s,^PDF version of requested feature [^<]*,,;
+
+# replace whitespace and surrounding XMP boilerplate with XML boilerplate
+$xml =~ s,\s*<\?xpacket [^>]+>\s*,,;
+$xml =~ s,<x:xmpmeta [^>]+>,<?xml version="1.0" encoding="utf-8"?>,;
+
+# strip trailing boilerplate
+$xml =~ s,\s*</x:xmpmeta>,,;
+$xml =~ s,\s*<\?xpacket [^>]+>,,;
+
+say $xml;
+
+1;