diff -Nurpd a/scribus/pdflib_core.cpp b/scribus/pdflib_core.cpp
--- a/scribus/pdflib_core.cpp	2023-12-31 16:58:30.000000000 +0100
+++ b/scribus/pdflib_core.cpp	2024-01-03 17:08:01.373569901 +0100
@@ -562,6 +562,14 @@ PDFLibCore::~PDFLibCore()
 	delete progressDialog;
 }
 
+bool PDFLibCore::PDF_HasXMP() const
+{
+	if (Options.Version == PDFVersion::PDF_16)
+		return true;
+	if (Options.Version == PDFVersion::PDF_X4)
+		return true;
+	return false;
+}
 
 bool PDFLibCore::PDF_IsPDFX() const
 {
@@ -969,7 +977,7 @@ void PDFLibCore::PDF_Begin_Catalog()
 		writer.OutputIntentObj = writer.newObject();
 		PutDoc("/OutputIntents [ " + Pdf::toObjRef(writer.OutputIntentObj) + " ]\n");
 	}
-	if (Options.Version == PDFVersion::PDF_X4)
+	if (PDF_HasXMP())
 	{
 		writer.MetaDataObj = writer.newObject();
 		PutDoc("/Metadata " + Pdf::toObjRef(writer.MetaDataObj) + "\n");
@@ -1020,8 +1028,7 @@ void PDFLibCore::PDF_Begin_Catalog()
 //	Datum += tmp;
 //	Datum += "Z";
 
-	// only include XMP to PDF/X-4 at the moment, could easily be extended to include it to any PDF
-	if (Options.Version == PDFVersion::PDF_X4)
+	if (PDF_HasXMP())
 		generateXMP(dt.toString("yyyy-MM-ddThh:mm:ssZ"));
 
 /* The following code makes the resulting PDF "Reader enabled" in Acrobat Reader 8
@@ -11653,7 +11660,7 @@ bool PDFLibCore::PDF_End_OutputProfile(c
 
 void PDFLibCore::PDF_End_Metadata()
 {
-	if (Options.Version == PDFVersion::PDF_X4)
+	if (PDF_HasXMP())
 	{
 //		if (Options.useLayers) // OCProperties dictionary was included as '9 0 obj', OutputIntents was included as '10 0 obj'
 //		{
diff -Nurpd a/scribus/pdflib_core.h b/scribus/pdflib_core.h
--- a/scribus/pdflib_core.h	2023-12-31 16:58:33.000000000 +0100
+++ b/scribus/pdflib_core.h	2024-01-03 17:08:34.265660822 +0100
@@ -133,6 +133,7 @@ private:
 		}
 	};
 
+	bool PDF_HasXMP() const;
 	bool PDF_IsPDFX() const;
 	bool PDF_IsPDFX(const PDFVersion& ver) const;
 
