pear:packages:opendocument

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
pear:packages:opendocument [2011/04/06 10:59] – external edit 127.0.0.1pear:packages:opendocument [2017/09/22 13:28] (current) – external edit 127.0.0.1
Line 1: Line 1:
 ====== OpenDocument ====== ====== OpenDocument ======
-OpenDocument is a package to create and read ODT files.+^ Package home:      | http://pear.php.net/package/OpenDocument | 
 +^ Current version:   | 0.2.0 (alpha) was released on 2009-07-28 | 
 +^ Source repository: | https://github.com/pear/OpenDocument | 
 +^ Bug tracker:       | [[http://pear.php.net/bugs/search.php?cmd=display&package_name[]=OpenDocument]] | 
 + 
 +OpenDocument is a package to createread and update [[http://en.wikipedia.org/wiki/OpenDocument|Open Document Format]] files.  ODF is an XML-based file format for office  documents such as spreadsheets, charts, presentations and word processing documents, with a standardised specification as an //OASIS Committee Specification// ([[http://docs.oasis-open.org/office/v1.2/OpenDocument-v1.2.html|v.1.2]]) and //ISO/IEC 26300:2006// (v.1.0 with v.1.1 currently a Draft Amendment).  The former specification is the most recently updated, is publicly available, and is the one we're working from for this PEAR package. 
 + 
 +This wiki page coordinates the development of OpenDocument.  It's not the documentation; just ideas about what we want and how we'll do it. 
 + 
 +Development of the OpenDocument package was part of a [[:gsoc|Google Summer of Code]] project (anyone know which year?). 
 + 
 +===== Other PHP ODF APIs ===== 
 +  * **OpenDocumentPHP** by Norman Markgraf and Alex Latchford: http://opendocumentphp.org/ and http://sourceforge.net/projects/opendocumentphp/ Dormant since 2010-11-29. 
 +  * **Dio** by Étienne Bersac: http://gitorious.org/dio/pages/Home Domant since 2009-01-29. 
 + 
 +===== API Design ===== 
 +The current ([[https://github.com/pear/OpenDocument/tree/26db3463807d69590e72dcc3cf01542f78897a12|26db346]]) OpenDocument class layout looks like this: 
 + 
 +^Super-class            ^ Class                  ^ Sub-class                     ^ Sub-sub-class                  | 
 +|                       | OpenDocument                                                                        | 
 +|                       | OpenDocument_Document  | OpenDocument_Document_Text    | OpenDocument_Debug_Text        | 
 +|                       | OpenDocument_Manifest  |                                                              | 
 +|                       | OpenDocument_Style     | OpenDocument_ElementStyle                                    | 
 +| PEAR_Exception        | OpenDocument_Exception |                                                              | 
 +|                       | OpenDocument_Element   | OpenDocument_StyledElement    | OpenDocument_Element_Span      | 
 +|                                              |                               | OpenDocument_Element_Paragraph | 
 +|                                              |                               | OpenDocument_Element_Hyperlink |  
 +|                                              |                               | OpenDocument_Element_Heading   | 
 +|                                              | OpenDocument_Element_Text                                    | 
 +|                                              | OpenDocument_Element_Bookmark |                                | 
 +|                       | OpenDocument_Storage   | OpenDocument_Storage_Single                                  | 
 +|                                              | OpenDocument_Storage_Zip      |                                | 
 + 
 +===== Specification Structure ===== 
 + 
 +The specification has the following structure: 
 + 
 +**Namespaces:** animation, chart, config, database, dr3d, drawing, form, manifest, meta, data style, office, presentation, script, table, text, style, xsl-fo-compatible, svg-compatible, smil-compatible, of, & odf. 
 + 
 +ODF documents have two file-level organisational paradigms: the most common one is a //packaged zip file// containing a number of XML and other files; the second is a stand-alone single XML file.  Both follow the standard file extension nomenclature: ''.odt'' for word processing (text) documents; ''.ods'' for spreadsheets; ''.odp'' for presentations; ''.odb'' for databases; ''.odg'' for graphics; ''.odf'' for formulae, mathematical equations. 
 + 
 +Within these various XML files are the following elements: 
 + 
 +^ Filename     ^ Root Element    ^ Child Elements          | 
 +^ Stand-alone XML file:                                  ||| 
 +| filename.ext | office:document | office:automatic-styles | 
 +|              |                 | office:body             | 
 +|              |                 | office:font-face-decls 
 +|              |                 | office:master-styles    | 
 +|              |                 | office:meta             | 
 +|              |                 | office:scripts          | 
 +|              |                 | office:settings         | 
 +|              |                 | office:styles           | 
 +^ Packaged file (4 root elements):                                ||| 
 +| content.xml  | office:document-content  | office:automatic-styles | 
 +|              |                          | office:body             | 
 +|              |                          | office:font-face-decls 
 +|              |                          | office:scripts          | 
 +| styles.xml   | office:document-styles   | office:automatic-styles | 
 +|              |                          | office:font-face-decls 
 +|              |                          | office:master-styles    | 
 +|              |                          | office:styles           | 
 +| meta.xml     | office:document-meta     | office:meta             | 
 +| settings.xml | office:document-settings | office:settings         | 
 + 
 +The <office:body> element contains what we think of as the actual different document types: ''<office:chart>'', ''<office:database>'', ''<office:drawing>'', ''<office:image>'', ''<office:presentation>'', ''<office:spreadsheet>'', ''<office:text>''
 + 
 +===== Examples ===== 
 + 
 +  * [[http://cvs.php.net/viewvc.cgi/pear/OpenDocument/examples/create.php?view=markup]] 
 +  * https://github.com/pear/OpenDocument/blob/master/examples/create.php 
 + 
 +===== Future Development ===== 
 + 
 +Some notes about possibilities for the further development of this package... 
 + 
 +  * ''OpenDocument_Element'' to be a sub-class of ''DOMElement''; 
 +  * All elements to be sub-classes of ''OpenDocument_Element'', grouped by namespace; 
 +  * The five root elements to be subclasses of ''DOMDOcument'' (these get used only by the storage class, usually); 
 +  * Each of the seven ODF document types to be represented by ''OpenDocument'' sub-classes (these are the primary means of using the API). 
 +  * The ''OpenDocument'' class is the means of interacting with the eight second-level elements (office:automatic-styles, office:body, office:font-face-decls, office:master-styles, office:meta, office:scripts, office:settings, and office:styles) 
 +  * A couple of use cases: 
 +    * <code php> 
 +      // A new text document, saved. 
 +      $textDoc = new OpenDocument_Text(); 
 +      $heading = new OpenDocument_Element_Text_H(); 
 +      $heading->textContent = 'Hello World'; 
 +      $textDoc->getBody()->insertBefore($heading, null); 
 +      $textDoc->save('hello.odt'); 
 +      </code> 
 +    * <code php> 
 +      // An existing spreadsheet, as a stand-alone file. 
 +      $spreadsheet = new OpenDocument_Spreadsheet('existing.ods'); 
 +      $spreadsheet->setStorage(new OpenDocument_Storage_Single()); 
 +      $spreadsheet->save(); 
 +      </code> 
 +    * There will be additional convenience methods at various levels, things like ''$spreadsheet->getTable(1)->addRows($dataArray)'' and ''$textDoc->toHtml()''
 + 
 +The (incomplete) hierarchy would then be along these lines: 
 + 
 +^Super-class            ^ Class                                        ^ Sub-class                          | 
 +|                       | OpenDocument                                 | OpenDocument_Chart                 | 
 +|                                                                    | OpenDocument_Database              | 
 +|                                                                    | OpenDocument_Drawing               | 
 +|                                                                    | OpenDocument_Image                 | 
 +|                                                                    | OpenDocument_Presentation          | 
 +|                                                                    | OpenDocument_Spreadsheet           | 
 +|                                                                    | OpenDocument_Text                  | 
 +|                       | OpenDocument_Storage                         | OpenDocument_Storage_Single                 | 
 +|                                                                    | OpenDocument_Storage_Zip                    | 
 +|                                                                    | OpenDocument_Storage_ZipManifest            | 
 +| DOMDocument           | OpenDocument_Element_Office_Document                                                     | 
 +|                       | OpenDocument_Element_Office_DocumentContent  |                                             | 
 +|                       | OpenDocument_Element_Office_DocumentStyles                                               | 
 +|                       | OpenDocument_Element_Office_DocumentMeta                                                 | 
 +|                       | OpenDocument_Element_Office_DocumentSettings |                                             | 
 +| PEAR_Exception        | OpenDocument_Exception                                                                   | 
 +| DOMElement            | OpenDocument_Element                         | OpenDocument_Element_Office_AutomaticStyles | 
 +|                                                                    | OpenDocument_Element_Office_FontFaceDecls   | 
 +|                                                                    | OpenDocument_Element_Office_MasterStyles    | 
 +|                                                                    | OpenDocument_Element_Office_Meta            | 
 +|                                                                    | OpenDocument_Element_Office_Scripts         | 
 +|                                                                    | OpenDocument_Element_Office_Settings        | 
 +|                                                                    | OpenDocument_Element_Office_Styles          | 
 +|                                                                    | //OpenDocument_Element_Office_Chart//           | 
 +|                                                                    | //OpenDocument_Element_Office_Database//        | 
 +|                                                                    | //OpenDocument_Element_Office_Drawing//         | 
 +|                                                                    | //OpenDocument_Element_Office_Image//           | 
 +|                                                                    | //OpenDocument_Element_Office_Presentation//    | 
 +|                                                                    | //OpenDocument_Element_Office_Spreadsheet//     | 
 +|                                                                    | //OpenDocument_Element_Office_Text//            | 
 +|                                                                    | OpenDocument_Element_Office_Forms           | 
 +|                                                                    | OpenDocument_Element_Dr3d_Scene             | 
 +|                                                                    | OpenDocument_Element_Draw_A                 | 
 +|                                                                    | OpenDocument_Element_Draw_Caption           | 
 +|                                                                    | OpenDocument_Element_Draw_Circle            | 
 +|                                                                    | OpenDocument_Element_Draw_Connector         | 
 +|                                                                    | OpenDocument_Element_Draw_Control           | 
 +|                                                                    | OpenDocument_Element_Draw_Custom-shape      | 
 +|                                                                    | OpenDocument_Element_Draw_Ellipse           | 
 +|                                                                    | OpenDocument_Element_Draw_Frame             | 
 +|                                                                    | OpenDocument_Element_Draw_G                 | 
 +|                                                                    | OpenDocument_Element_Draw_Line              | 
 +|                                                                    | OpenDocument_Element_Draw_Measure           | 
 +|                                                                    | OpenDocument_Element_Draw_PageThumbnail     | 
 +|                                                                    | OpenDocument_Element_Draw_Path              | 
 +|                                                                    | OpenDocument_Element_Draw_Polygon           | 
 +|                                                                    | OpenDocument_Element_Draw_Polyline          | 
 +|                                                                    | OpenDocument_Element_Draw_Rect               | 
 +|                                                                    | OpenDocument_Element_Draw_RegularPolygon     | 
 +|                                                                    | OpenDocument_Element_Table_CalculationSettings     | 
 +|                                                                    | OpenDocument_Element_Table_Consolidation     | 
 +|                                                                    | OpenDocument_Element_Table_ContentValidations     | 
 +|                                                                    | OpenDocument_Element_Table_DatabaseRanges     | 
 +|                                                                    | OpenDocument_Element_Table_DataPilotTables     | 
 +|                                                                    | OpenDocument_Element_Table_DdeLinks     | 
 +|                                                                    | OpenDocument_Element_Table_LabelRanges     | 
 +|                                                                    | OpenDocument_Element_Table_namedExpressions     | 
 +|                                                                    | OpenDocument_Element_Table_Table                        | 
 +|                                                                    | OpenDocument_Element_Text_AlphabeticalIndex             | 
 +|                                                                    | OpenDocument_Element_Text_AlphabeticalIndexAutoMarkFile | 
 +|                                                                    | OpenDocument_Element_Text_Bibliography     | 
 +|                                                                    | OpenDocument_Element_Text_Change     | 
 +|                                                                    | OpenDocument_Element_Text_ChangeEnd     | 
 +|                                                                    | OpenDocument_Element_Text_ChangeStart     | 
 +|                                                                    | OpenDocument_Element_Text_DdeConnectionDecls     | 
 +|                                                                    | OpenDocument_Element_Text_H     | 
 +|                                                                    | OpenDocument_Element_Text_IllustrationIndex     | 
 +|                                                                    | OpenDocument_Element_Text_List     | 
 +|                                                                    | OpenDocument_Element_Text_NumberedParagraph     | 
 +|                                                                    | OpenDocument_Element_Text_ObjectIndex     | 
 +|                                                                    | OpenDocument_Element_Text_P     | 
 +|                                                                    | OpenDocument_Element_Text_PageSequence     | 
 +|                                                                    | OpenDocument_Element_Text_Section     | 
 +|                                                                    | OpenDocument_Element_Text_SequenceDecls     | 
 +|                                                                    | OpenDocument_Element_Text_SoftPageBreak     | 
 +|                                                                    | OpenDocument_Element_Text_TableIndex     | 
 +|                                                                    | OpenDocument_Element_Text_TableOfContent     | 
 +|                                                                    | OpenDocument_Element_Text_TrackedChanges     | 
 +|                                                                    | OpenDocument_Element_Text_UserFieldDecls     | 
 +|                                                                    | OpenDocument_Element_Text_UserIndex     | 
 +|                                                                    | OpenDocument_Element_Text_VariableDecls | 
 +|                                                                    | //And so on, for all elements...//            |
  
-It was a [[gsoc]] project. 
  
-==== Examples ==== 
-[[http://cvs.php.net/viewvc.cgi/pear/OpenDocument/examples/create.php?view=markup]] 
pear/packages/opendocument.1302087566.txt.gz · Last modified: 2017/09/22 13:28 (external edit)