diff --git a/src/main/java/net/sf/jabref/util/XMPUtil.java b/src/main/java/net/sf/jabref/util/XMPUtil.java index 527c7941747..508406591d9 100644 --- a/src/main/java/net/sf/jabref/util/XMPUtil.java +++ b/src/main/java/net/sf/jabref/util/XMPUtil.java @@ -983,10 +983,35 @@ 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)) { + // 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")) { di.setAuthor(entry.getField("author")); } else if (field.equals("title")) {