Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

783 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

OpenDocument.core

build status

C++ library to visualize files, especially documents, in HTML.

Supported files

Every accepted file extension and MIME type — including the template and macro-enabled aliases (docm, dotx, xltx, ppsx, …) — is enumerable at runtime via file_extensions_by_file_type / mimetypes_by_file_type, so a consumer never has to maintain its own copy of these tables.

Detected but not decoded

These are classified by extension and MIME type, and rtf/wpd are also recognised from their bytes, so a caller can report them — but there is no decoder, and opening one throws:

  • rtf
  • wpd (WordPerfect)
  • md (Markdown)
  • xlsb (Excel binary workbook — an OOXML package whose workbook parts are binary rather than spreadsheetml)

Asking what is supported

capabilities_by_file_type(FileType) answers, per format, whether the library can detect, open, decrypt, render, edit, save or encrypt it — the decisions a caller has to make before it holds a file, e.g. which MIME types to advertise to a system file picker. It is a declared upper bound; DecodedFile::capabilities() and Document::is_editable / is_savable give the precise answer for a concrete file.

Editing and saving are currently limited to odt, odp, odg (edit + save), ods (save only) and docx (edit + save); saving with a password is not supported for any format.

Unsupported files

  • pages
  • xml
  • yaml

References

Currently, used as backend for OpenDocument.droid and OpenDocument.ios.

Bindings: Python (pyodr), Java/JNI and Android (app.opendocument:odr-core-android), Apple (OdrCore, a Swift package), and WebAssembly (@opendocument/odr-core, for rendering in the browser with no server).

Replaces legacy projects OpenDocument.java, JOpenDocument and svm.

Potential test files: https://file-examples.com/

Tooling

  • tools/pdf — generators for the PDF engine's committed encoding data.

Build

This project comes with CMake as a build system and Conan as package manager. In principle they should be independent and one can build without Conan.

Using Conan one can use our Artifactory as a Conan remote for convenience: https://artifactory.opendocument.app/

As an alternative to the Conan remote you can also export the package locally via Conan i.e. conan export . --name odrcore --version VERSION (fill VERSION with something appropriate).

Version

What changed per version is in CHANGELOG.md, and in full in the releases.

Testing

Running the HTML Comparison Server

Scripts and Docker images can be found here https://github.com/opendocument-app/compare-html

./test/scripts/compare_output_server.sh

License

OpenDocument.core is licensed under the Mozilla Public License 2.0 (MPL-2.0).

The committed PDF font/encoding tables in src/odr/internal/pdf/ are generated from third-party source data whose provenance and terms are documented in tools/pdf/THIRD_PARTY_LICENSES.md.

About

C++ library that translates office documents to HTML

Topics

Resources

Stars

35 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages