From b45316ff2baf45b253853bffbe30163018535f0c Mon Sep 17 00:00:00 2001 From: Adrian Daerr Date: Tue, 22 Apr 2014 20:08:46 +0200 Subject: [PATCH 1/2] Extend XMP Privacy Filtering to the DocumentInformation section of the PDF --- src/main/java/net/sf/jabref/util/XMPUtil.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/main/java/net/sf/jabref/util/XMPUtil.java b/src/main/java/net/sf/jabref/util/XMPUtil.java index 527c7941747..05de3b0a931 100644 --- a/src/main/java/net/sf/jabref/util/XMPUtil.java +++ b/src/main/java/net/sf/jabref/util/XMPUtil.java @@ -983,10 +983,22 @@ public static void writeDocumentInformation(PDDocument document, if (database != null) entry = database.resolveForStrings(entry, false); + // Query privacy filter settings + JabRefPreferences prefs = JabRefPreferences.getInstance(); + boolean useXmpPrivacyFilter = + prefs.getBoolean("useXmpPrivacyFilter"); + // Fields for which not to write XMP data later on: + TreeSet filters = new TreeSet(Arrays.asList(prefs.getStringArray(JabRefPreferences.XMP_PRIVACY_FILTERS))); + // Set all the values including key and entryType Set fields = entry.getAllFields(); for (String field : fields){ + + if (useXmpPrivacyFilter && filters.contains(field)) { + continue; + } + if (field.equals("author")) { di.setAuthor(entry.getField("author")); } else if (field.equals("title")) { From 2360cb74d2e8d88e1bc705db36e885e44607642f Mon Sep 17 00:00:00 2001 From: Adrian Daerr Date: Tue, 22 Apr 2014 20:19:15 +0200 Subject: [PATCH 2/2] Erase fields listed in XMP Privacy Settings from PDF DocumentInformation when XMP-tagging --- src/main/java/net/sf/jabref/util/XMPUtil.java | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/main/java/net/sf/jabref/util/XMPUtil.java b/src/main/java/net/sf/jabref/util/XMPUtil.java index 05de3b0a931..508406591d9 100644 --- a/src/main/java/net/sf/jabref/util/XMPUtil.java +++ b/src/main/java/net/sf/jabref/util/XMPUtil.java @@ -996,7 +996,20 @@ public static void writeDocumentInformation(PDDocument document, for (String field : fields){ if (useXmpPrivacyFilter && filters.contains(field)) { - continue; + // erase field instead of adding it + if (field.equals("author")) { + di.setAuthor(null); + } else if (field.equals("title")) { + di.setTitle(null); + } else if (field.equals("keywords")) { + di.setKeywords(null); + } else if (field.equals("abstract")) { + di.setSubject(null); + } else { + di.setCustomMetadataValue("bibtex/" + field, + null); + } + continue; } if (field.equals("author")) {