Code

Added meta-info stub
authorishmal <ishmal@users.sourceforge.net>
Thu, 13 Apr 2006 22:30:54 +0000 (22:30 +0000)
committerishmal <ishmal@users.sourceforge.net>
Thu, 13 Apr 2006 22:30:54 +0000 (22:30 +0000)
src/extension/internal/odf.cpp
src/extension/internal/odf.h

index 6a1e3710776a5ae4b7e8b979a59bf8d68b89f45b..42d8453407053576304920f389d125cf7844d54d 100644 (file)
@@ -231,7 +231,7 @@ bool OdfOutput::writeManifest(ZipFile &zf)
     outs.printf("<manifest:manifest xmlns:manifest=\"urn:oasis:names:tc:opendocument:xmlns:manifest:1.0\">\n");
     outs.printf("    <manifest:file-entry manifest:media-type=\"application/vnd.oasis.opendocument.graphics\" manifest:full-path=\"/\"/>\n");
     outs.printf("    <manifest:file-entry manifest:media-type=\"text/xml\" manifest:full-path=\"content.xml\"/>\n");
-    //outs.printf("    <manifest:file-entry manifest:media-type=\"text/xml\" manifest:full-path=\"meta.xml\"/>\n");
+    outs.printf("    <manifest:file-entry manifest:media-type=\"text/xml\" manifest:full-path=\"meta.xml\"/>\n");
     outs.printf("    <!--List our images here-->\n");
     std::map<std::string, std::string>::iterator iter;
     for (iter = imageTable.begin() ; iter!=imageTable.end() ; iter++)
@@ -266,7 +266,65 @@ bool OdfOutput::writeManifest(ZipFile &zf)
 }
 
 
+bool OdfOutput::writeMeta(ZipFile &zf)
+{
+    BufferOutputStream bouts;
+    OutputStreamWriter outs(bouts);
+
+    time_t tim;
+    time(&tim);
+
+    outs.printf("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n");
+    outs.printf("\n");
+    outs.printf("\n");
+    outs.printf("<!--\n");
+    outs.printf("*************************************************************************\n");
+    outs.printf("  file:  meta.xml\n");
+    outs.printf("  Generated by Inkscape: %s", ctime(&tim)); //ctime has its own <cr>
+    outs.printf("  http://www.inkscape.org\n");
+    outs.printf("*************************************************************************\n");
+    outs.printf("-->\n");
+    outs.printf("\n");
+    outs.printf("\n");
+    outs.printf("<office:document-meta\n");
+    outs.printf("xmlns:office=\"urn:oasis:names:tc:opendocument:xmlns:office:1.0\"\n");
+    outs.printf("xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n");
+    outs.printf("xmlns:dc=\"http://purl.org/dc/elements/1.1/\"\n");
+    outs.printf("xmlns:meta=\"urn:oasis:names:tc:opendocument:xmlns:meta:1.0\"\n");
+    outs.printf("xmlns:presentation=\"urn:oasis:names:tc:opendocument:xmlns:presentation:1.0\"\n");
+    outs.printf("xmlns:ooo=\"http://openoffice.org/2004/office\"\n");
+    outs.printf("xmlns:smil=\"urn:oasis:names:tc:opendocument:xmlns:smil-compatible:1.0\"\n");
+    outs.printf("xmlns:anim=\"urn:oasis:names:tc:opendocument:xmlns:animation:1.0\"\n");
+    outs.printf("office:version=\"1.0\">\n");
+    outs.printf("<office:meta>\n");
+    outs.printf("    <meta:generator>Inkscape.org - 0.44</meta:generator>\n");
+    outs.printf("    <meta:initial-creator>clark kent</meta:initial-creator>\n");
+    outs.printf("    <meta:creation-date>2006-04-13T17:12:29</meta:creation-date>\n");
+    outs.printf("    <dc:creator>clark kent</dc:creator>\n");
+    outs.printf("    <dc:date>2006-04-13T17:13:20</dc:date>\n");
+    outs.printf("    <dc:language>en-US</dc:language>\n");
+    outs.printf("    <meta:editing-cycles>2</meta:editing-cycles>\n");
+    outs.printf("    <meta:editing-duration>PT56S</meta:editing-duration>\n");
+    outs.printf("    <meta:user-defined meta:name=\"Info 1\"/>\n");
+    outs.printf("    <meta:user-defined meta:name=\"Info 2\"/>\n");
+    outs.printf("    <meta:user-defined meta:name=\"Info 3\"/>\n");
+    outs.printf("    <meta:user-defined meta:name=\"Info 4\"/>\n");
+    outs.printf("    <meta:document-statistic meta:object-count=\"2\"/>\n");
+    outs.printf("</office:meta>\n");
+    outs.printf("</office:document-meta>\n");
+    outs.printf("\n");
+    outs.printf("\n");
+
+
+    outs.close();
+
+    //Make our entry
+    ZipEntry *ze = zf.newEntry("meta.xml", "ODF info file");
+    ze->setUncompressedData(bouts.getBuffer());
+    ze->finish();
 
+    return true;
+}
 
 
 bool OdfOutput::writeStyle(Writer &outs)
@@ -498,7 +556,7 @@ bool OdfOutput::writeContent(ZipFile &zf, Inkscape::XML::Node *node)
     outs.printf("<!--\n");
     outs.printf("*************************************************************************\n");
     outs.printf("  E N D    O F    F I L E\n");
-    outs.printf("  Have a nice day -- ishmal\n");
+    outs.printf("  Have a nice day  - ishmal\n");
     outs.printf("*************************************************************************\n");
     outs.printf("-->\n");
     outs.printf("\n");
@@ -527,16 +585,25 @@ OdfOutput::save(Inkscape::Extension::Output *mod, SPDocument *doc, gchar const *
     styleTable.clear();
     imageTable.clear();
     preprocess(zf, doc->rroot);
+
     if (!writeManifest(zf))
         {
         g_warning("Failed to write manifest");
         return;
         }
+
+    if (!writeMeta(zf))
+        {
+        g_warning("Failed to write metafile");
+        return;
+        }
+
     if (!writeContent(zf, doc->rroot))
         {
         g_warning("Failed to write content");
         return;
         }
+
     if (!zf.writeFile(uri))
         {
         return;
index 250b807d5228f55909d951d74c44dbf47d7d8401..e1cf133db7fc5b051b287061eabbbafb997d437a 100644 (file)
@@ -185,6 +185,8 @@ private:
 
     bool writeManifest(ZipFile &zf);
 
+    bool writeMeta(ZipFile &zf);
+
     bool writeStyle(Writer &outs);
 
     bool writeTree(Writer &outs, Inkscape::XML::Node *node);