src/gui/painting/qprintengine_pdf.cpp
branchRCL_3
changeset 4 3b1da2848fc7
parent 3 41300fa6a67c
child 30 5dc02b23752f
--- a/src/gui/painting/qprintengine_pdf.cpp	Tue Feb 02 00:43:10 2010 +0200
+++ b/src/gui/painting/qprintengine_pdf.cpp	Fri Feb 19 23:40:16 2010 +0200
@@ -1,6 +1,6 @@
 /****************************************************************************
 **
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
 ** All rights reserved.
 ** Contact: Nokia Corporation (qt-info@nokia.com)
 **
@@ -931,14 +931,24 @@
 void QPdfEnginePrivate::writeInfo()
 {
     info = addXrefEntry(-1);
-    xprintf("<<\n"
-            "/Title (%s)\n"
-//            "/Author (%s)\n"
-            "/Creator (%s)\n"
-            "/Producer (Qt " QT_VERSION_STR " (C) 2009 Nokia Corporation and/or its subsidiary(-ies))\n",
-            title.toUtf8().constData(),
-//            author.toUtf8().constData(),
-            creator.toUtf8().constData());
+
+    // The 'text string' type in PDF is encoded either as PDFDocEncoding, or
+    // Unicode UTF-16 with a Unicode byte order mark as the first character
+    // (0xfeff), with the high-order byte first.
+    QByteArray array("<<\n/Title (\xfe\xff");
+    const ushort *utf16Title = title.utf16();
+    for (int i=0; i < title.size(); ++i) {
+        array.append((*(utf16Title + i)) >> 8);
+        array.append((*(utf16Title + i)) & 0xff);
+    }
+    array.append(")\n/Creator (\xfe\xff");
+    const ushort *utf16Creator = creator.utf16();
+    for (int i=0; i < creator.size(); ++i) {
+        array.append((*(utf16Creator + i)) >> 8);
+        array.append((*(utf16Creator + i)) & 0xff);
+    }
+    array.append(")\n/Producer (Qt " QT_VERSION_STR " (C) 2010 Nokia Corporation and/or its subsidiary(-ies))\n");
+    write(array);
 
     QDateTime now = QDateTime::currentDateTime().toUTC();
     QTime t = now.time();