diff options
| author | Bob Jamison <ishmalius@gmail.com> | 2006-04-13 22:30:54 +0000 |
|---|---|---|
| committer | ishmal <ishmal@users.sourceforge.net> | 2006-04-13 22:30:54 +0000 |
| commit | 2f1f98d94547f71986d6ee019e9bba2b2c642106 (patch) | |
| tree | 1c85768f449657c1ee9d98b5e5a30073e8eb96cc /src/extension/internal/odf.cpp | |
| parent | More WIP. Got all of the files generated. Now just work on content.xml to g... (diff) | |
| download | inkscape-2f1f98d94547f71986d6ee019e9bba2b2c642106.tar.gz inkscape-2f1f98d94547f71986d6ee019e9bba2b2c642106.zip | |
Added meta-info stub
(bzr r514)
Diffstat (limited to 'src/extension/internal/odf.cpp')
| -rw-r--r-- | src/extension/internal/odf.cpp | 71 |
1 files changed, 69 insertions, 2 deletions
diff --git a/src/extension/internal/odf.cpp b/src/extension/internal/odf.cpp index 6a1e37107..42d845340 100644 --- a/src/extension/internal/odf.cpp +++ b/src/extension/internal/odf.cpp @@ -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; |
