BambooForge Office & PDF Preview
Preview Office, OpenDocument & PDF attachments inline in Odoo — powered by Microsoft's official Office Online viewer (the same engine as Office.com): pixel-perfect, always up to date, zero install. Click a file and it opens in a viewer right in the page.
A live walkthrough inside Odoo 19
A short screen recording from a real Odoo 19 install — open a record, click an Office or PDF attachment, and watch it render inline without ever downloading the file.
Stop downloading attachments just to read them
By default, an Office or OpenDocument attachment in Odoo means a download, a context switch and a desktop app. Office & PDF Preview opens it right inside Odoo — in the chatter and in Odoo's file-viewer modal. Word, Excel, PowerPoint and OpenDocument documents render through Microsoft's official Office Online viewer (the same engine as Office.com) for pixel-perfect fidelity, with zero install. OpenDocument templates and PDFs render locally.
What you actually get
Inline document preview powered by Microsoft's Office Online viewer, with a security model built in.
Microsoft official Office viewer
Word, Excel, PowerPoint and OpenDocument documents rendered by Microsoft's own Office Online viewer — pixel-perfect, always current, the same engine as Office.com, with zero install.
Secure by design
Previews are access-checked — only users allowed to read the file can preview it — and the viewer uses short-lived, HMAC-signed links. No permanent public file URLs.
Inline in two places
Previews show up in the mail/chatter attachment view and in Odoo's web file-viewer modal — wherever your team meets a document.
Templates & PDF render locally
OpenDocument templates (.ott / .otp / .ots) and PDF render locally in Odoo — no internet needed for those.
Inline preview, no download
Click an attachment and it opens in a viewer right in the page — no download, no desktop app, no context switch.
20+ formats covered
Word, Excel, PowerPoint (and macro/template variants), OpenDocument, PDF, RTF and TXT — over 20 file types in all.
Every screen, from a live install
Captured from a running Odoo 19 — not mockups.
How preview works (full transparency)
Rendered by Microsoft
Word/Excel/PowerPoint and OpenDocument documents are rendered by Microsoft's Office Online viewer — the same engine as Office.com.
Server must be reachable
Microsoft's viewer fetches the file to render it, so your Odoo server must be reachable from the internet.
Access-checked
Every preview is access-checked — only users who are allowed to read the file can preview it. No bypass of Odoo's record rules.
Short-lived signed links
Preview links are short-lived, HMAC-signed links derived from web.base.url — there is no permanent public file URL.
OpenDocument templates & PDF render locally
OpenDocument templates (.ott / .otp / .ots) and PDFs render locally in Odoo — no internet needed for these.
Preview-only
Read access only — the viewer never modifies the underlying file.
What's included — and what's on the roadmap
An honest line on what ships today and what we're building next.
| Capability | Included | Roadmap |
|---|---|---|
| Inline preview in chatter | ✔ | — |
| Inline preview in the web file viewer | ✔ | — |
| Microsoft Office Online viewer (Word/Excel/PowerPoint + OpenDocument) | ✔ | — |
| OpenDocument templates rendered locally | ✔ | — |
| Access-checked previews + signed expiring links | ✔ | — |
| PDF (built-in) | ✔ | — |
| RTF & TXT | ✔ | — |
| 20+ formats | ✔ | — |
| Fully on-prem / offline rendering (self-hosted, no internet) | — | planned |
| In-document text search | — | planned |
| Annotations / mark-up | — | planned |
| Background pre-conversion / queue | — | planned |
| Thumbnail caching | — | planned |
Previewing in minutes
Install, open a record, click a file — and it renders inline.
Install
Drop the module in your addons path, restart and install from Apps.
Open a record
Go to any record with an Office / OpenDocument / PDF attachment.
Click the file
Click the attachment in the chatter or open it in the file-viewer.
Preview inline
The document renders in place — no download.
Exactly what ships
In the box
- Inline preview in the chatter and the web file viewer.
- Microsoft's official Office Online viewer for Word / Excel / PowerPoint and OpenDocument documents.
- OpenDocument templates and PDF rendered locally.
- Secure by design — access-checked previews + signed, time-limited links (no permanent public URLs).
- 20+ file formats covered.
- Complete OPL-1 source.
Good to know (read before buying)
- The Microsoft viewer needs your Odoo server to be reachable from the internet, and the file is accessed by Microsoft's Office Online service to render it (the same as opening it on Office.com).
- OpenDocument templates and PDFs render locally — no internet needed for those.
- Preview-only — there's no editing of the document.
- Fully on-prem / offline rendering is on the roadmap.
Frequently asked
Does my server need internet?
Yes: Microsoft's viewer fetches the file via a secure, short-lived signed link, so your Odoo server must be reachable from the internet. OpenDocument templates and PDF preview without internet.
Are the preview links secure?
Yes — access-checked, and the links are short-lived signed URLs; there are no permanent public file URLs.
Are my files sent to Microsoft?
To render Office and OpenDocument documents, Microsoft's Office Online viewer accesses the file (the same as opening it on Office.com), via short-lived signed links. OpenDocument templates and PDF render locally and are never sent out.
Can I keep rendering fully on-prem / offline?
OpenDocument templates and PDF already render locally. Fully on-prem / offline rendering for all formats is on the roadmap.
Which file types are supported?
Word / Excel / PowerPoint (and macro / template variants), OpenDocument documents (.odt / .ods / .odp), OpenDocument templates, PDF, RTF and TXT — 20+ in all.
Where do previews show up?
In the mail/chatter attachment view and in Odoo's file-viewer modal — wherever attachments appear.
Can I edit the document in the preview?
No — it's preview-only. The viewer renders the file for reading and never modifies it.
Read every attachment without leaving Odoo
BambooForge Labs · inline document preview · OPL-1 · source included
bambooforge.labs@gmail.comMore from BambooForge Labs — one vendor, the same standard: tested, documented, supported.
BambooForge Office & PDF Preview
Open Microsoft Office, OpenDocument and PDF attachments inline inside Odoo — in the chatter attachment view and in Odoo's web file-viewer modal — instead of downloading every file just to read it. Word, Excel, PowerPoint and OpenDocument documents render through Microsoft's official Office Online viewer; OpenDocument templates render locally in your browser, and PDFs use Odoo's built-in viewer.
This page is the complete manual. If you follow it top to bottom you can install the app, understand exactly how each file type is rendered (and where its content goes), use it, and fix the common issues without contacting support.
Overview
The app extends Odoo's attachment handling so that office documents preview in place, the same way Odoo already previews images and PDFs. There is nothing to configure and no new menu — once installed, eligible attachments simply become viewable.
It recognises an attachment by its MIME type, and falls back to the file extension when the MIME type is generic or missing. Three rendering paths are used, chosen automatically per file:
| File type | Examples | Rendered by |
|---|---|---|
| Microsoft Office documents | .doc, .docx, .docm, .dotx, .dotm, .xls, .xlsx, .xlsm, .xltx, .xltm, .ppt, .pptx, .pptm; plus .rtf and .txt | Microsoft Office Online viewer (external service) |
| OpenDocument documents | .odt, .ods, .odp | Microsoft Office Online viewer (external service) |
| OpenDocument templates | .ott, .otp, .ots | Bundled ViewerJS / WebODF, locally in your browser |
| Odoo's built-in PDF viewer (unchanged) |
The app touches two places in the Odoo web client:
- the chatter attachment view (the document panel that opens beside a record's messages), and
- Odoo's web file-viewer modal (the full-screen overlay you get when you click an attachment).
Wherever Odoo would already show an image or PDF preview, this app adds the office and OpenDocument formats alongside it. SVG files are deliberately left non-previewable for safety.
Requirements
- Odoo: 19.0, Community or Enterprise. The app depends only on the Mail module (mail), which is present on every Odoo install.
- Python: no extra libraries. Nothing is added or compiled on the server.
- Browser: any current desktop browser (Chrome, Firefox, Edge, Safari). Previews render in an <iframe>, so a browser that blocks third-party iframes will affect the Microsoft-viewer formats.
- Network — important: to preview Microsoft Office and OpenDocument documents (the formats handled by Microsoft's Office Online viewer), your Odoo server must be reachable from the public internet, because Microsoft's service fetches the file from your server to render it. OpenDocument templates and PDFs render without any internet connection. See Data, privacy & limits.
- Access rights: any internal user can preview a file they are allowed to read. Previews are access-checked against Odoo's normal record rules — no special group is added.
Installation
- Copy bambooforge_office_preview into your Odoo addons path.
- Restart the Odoo service.
- Open Apps, click Update Apps List, search for Office & PDF Preview, and press Activate / Install. The Mail dependency is already installed, so the app activates immediately.
There is no companion software to install, no external account to create, and no server package to add.
Configuration
This app is zero-config. There are no settings screens, no menus and no fields to fill in. Once it is installed it works on every eligible attachment for every user who can read that attachment.
The only stored configuration is created automatically: the first time a Microsoft- viewer preview is requested, the app generates a random signing secret and saves it in the system parameter bambooforge_office_preview.token_secret (Settings ▸ Technical ▸ System Parameters). You never need to set or touch this — it is used internally to sign the short-lived preview links described in Data, privacy & limits. Leave it alone unless you are deliberately rotating the secret, in which case deleting the parameter lets the app regenerate a new one.
For the Microsoft-viewer formats, the app builds the file link from Odoo's web.base.url parameter (falling back to the request host). If your public URL is wrong there, the preview link will be wrong too — see Troubleshooting.
Usage
There is no button to "turn on" preview. You simply open a file the way you already do.
From the chatter:
- Open any record that has messages and attachments (for example a sale order, project task, or any document with a chatter).
- Click the paperclip / attachment to open the attachment panel beside the chatter.
- Click an Office, OpenDocument or PDF attachment. It renders inline in the panel — no download.
From the file-viewer modal:
- Anywhere Odoo shows an attachment chip (chatter, a Many2many attachments field, a message), click the attachment.
- Odoo opens its full-screen file-viewer overlay. The document renders inside it.
- Use the viewer controls to scroll/zoom; close the overlay to return to your record.
The preview is read-only: the viewer renders the file for reading and never modifies the stored attachment.
Customization
The app is small and the source is included (OPL-1), so it is straightforward to adjust:
- Which formats are previewable is defined in static/src/core/preview_utils.js — three MIME-type sets (Office, OpenDocument documents, OpenDocument templates) plus an extension-based fallback map (EXT_KIND). Add or remove an entry there to change the supported list.
- The rendering route per format is also in preview_utils.js: the officePreviewSource function returns the Microsoft embed URL (/bambooforge_office_preview/ms_embed/<id>) for documents, or the local ViewerJS URL for OpenDocument templates.
- Link lifetime: the signed Microsoft preview link is valid for 6 hours (_TTL in controllers/main.py). Shorten or lengthen it there.
- Where the iframe appears is set by the QWeb template inheritances in static/src/core/common/attachment_view.xml (chatter) and static/src/core/file_viewer/file_viewer.xml (modal).
After editing any asset, upgrade the module (or run Odoo with --dev=assets) so the web bundle is rebuilt.
Troubleshooting
| Symptom | Cause and fix |
|---|---|
| A specific file type does not preview | Its MIME type/extension is not in the supported list. Confirm the format is one of those in What this app does. Files saved with an unusual or wrong MIME type and an unrecognised extension fall through to Odoo's default handling (download). |
| An Office or OpenDocument document shows a blank/grey iframe or "can't display" | These formats are rendered by Microsoft's Office Online viewer, which fetches the file from your server. If your Odoo server is not reachable from the public internet, Microsoft cannot load it. Verify the server is publicly reachable and that web.base.url (System Parameters) is the correct public URL. |
| Preview works for PDF/templates but not for Word/Excel/PowerPoint | Same cause as above: only the Microsoft-viewer formats need outbound internet and a publicly reachable server. PDFs and OpenDocument templates render locally, so they keep working offline. |
| A large file is slow to appear or times out | The whole file is fetched before it renders (by Microsoft for documents, by your browser for templates/PDF). Very large files take longer; allow more time, or split/compress the document. |
| The preview link works at first, then later fails with "Not Found" | The Microsoft preview link is a short-lived signed token (6-hour validity). Re- open the attachment to mint a fresh link. |
| Browser shows nothing / iframe is blocked | A browser extension or corporate policy is blocking iframes or the view.officeapps.live.com domain. Allow that domain, or test in a clean browser profile. |
| "Unsupported file type" alert from the local viewer | The bundled ViewerJS could not match a plugin for that OpenDocument template. Confirm the file really is a valid .ott / .otp / .ots template. |
| A user can open the record but not preview the file | Previews are access-checked: the user must have read access to the attachment under Odoo's record rules. Grant the needed access, or the user will only be able to see files they are permitted to read. |
| SVG files won't preview | Intentional. SVG is deliberately excluded from inline preview for safety. |
Frequently asked questions
Does it need any configuration? No. It is zero-config: install it and eligible attachments become previewable for everyone who can read them.
Does my server need internet access? For Microsoft Office and OpenDocument documents (Word/Excel/PowerPoint, .odt/.ods/ .odp), yes — Microsoft's Office Online viewer fetches the file from your server, so it must be reachable from the internet. OpenDocument templates and PDFs render locally and need no internet.
Are my files sent to Microsoft? To render Office and OpenDocument documents, Microsoft's Office Online viewer accesses the file via a short-lived, signed link — the same as opening the file on Office.com. OpenDocument templates and PDFs render locally in your browser and are never sent out. See Data, privacy & limits.
Are the preview links secure? Yes. Generating a preview is access-checked (the user must be allowed to read the file), and the link Microsoft uses is a short-lived, HMAC-signed token that expires after 6 hours. There is no permanent public file URL.
Which file types are supported? Word, Excel and PowerPoint (including macro and template variants), OpenDocument text/ spreadsheet/presentation and their templates, PDF, RTF and plain text — over 20 formats in all. The full list is in What this app does.
Where do previews appear? In the mail/chatter attachment view and in Odoo's web file-viewer modal.
Can I edit a document in the preview? No. It is preview-only; the viewer renders the file for reading and never modifies it.
Does it work in Odoo Enterprise? Yes. It depends only on the Mail module and works on Community and Enterprise.
What support and refund policy do I get? Every request is answered within 24 hours, setup help included. If you report a bug within 2 months of purchase and it is not resolved within 15 days, you are entitled to a full money-back refund.
Data, privacy & limits
Be precise about where each file goes — it differs by format:
- Microsoft Office documents and OpenDocument documents (Word/Excel/PowerPoint, .rtf, .txt, .odt, .ods, .odp) are rendered by Microsoft's Office Online viewer, a third-party service. To render them, Microsoft's service fetches the file content from your Odoo server over the internet (the same as opening the file on Office.com). For these formats the file content leaves your server and is processed by Microsoft.
- OpenDocument templates (.ott, .otp, .ots) are rendered by the bundled ViewerJS / WebODF entirely in your browser. The file content does not go to any external service.
- PDFs use Odoo's built-in PDF viewer — local, unchanged by this app.
How the Microsoft link is protected:
- A preview is only generated after an access check — the requesting user must have read access to the attachment under Odoo's record rules.
- Microsoft is handed a short-lived, HMAC-signed token (valid 6 hours) pointing at a file route that verifies the signature and expiry. There is no permanent public file URL; a leaked link stops working when it expires.
- The signing secret is generated randomly on first use and stored in the system parameter bambooforge_office_preview.token_secret.
Limits / out of scope:
- Preview-only — no editing, no annotation, no in-document text search.
- Fully on-prem / offline rendering for all formats is not included today (only templates and PDF render offline). It is on the roadmap.
- The Microsoft viewer's rendering fidelity and availability are governed by Microsoft.
Support & updates
- Support: bambooforge.labs@gmail.com — answered within 24 hours, setup help included.
- Refund: report a bug within 2 months of purchase; if it is not resolved within 15 days, you receive a full refund.
- Full source is included (OPL-1). Updates track the supported Odoo 19 line.
Upgrading & version compatibility
This build targets Odoo 19.0. Each Odoo major series (17.0, 18.0, 19.0) has its own dedicated build of this module — always install the build that matches your Odoo version. Mixing a build with a different Odoo series is not supported.
Patch upgrades (same series, e.g. 19.0.1.0.0 → later)
Back up your database and filestore first.
Replace the module folder with the newer build.
Restart Odoo with the module updated:
./odoo-bin -c your.conf -u bambooforge_office_preview -d your_db
Odoo applies any schema/data changes automatically. Your existing records and configuration are preserved.
Cross-version migration (e.g. Odoo 17 → 18)
Upgrading Odoo itself is a database migration handled by Odoo's standard upgrade tooling. When you migrate the database to the next Odoo series, install the matching build of this module for that series. Data created by this module carries over with the database migration.
Uninstallation
You can remove this module at any time from Apps → (this module) → Uninstall, or from the command line. Uninstalling is clean and reversible by reinstalling — but note what is and is not deleted.
What is removed
- The fields, views and analysis definitions this module added.
- The menus, actions, views and reports this module installed.
What is preserved
- Your standard Odoo data (partners, products, sales, invoices, inventory moves) is not deleted — this module only reads and annotates it; the underlying records stay.
- Attachments and chatter messages on standard records are kept.
As always, take a database backup before uninstalling in production.
Changelog
19.0.2.0.2
Current release for Odoo 19.0. This build includes:
- Allows users to preview Microsoft Office files, LibreOffice files, images, and PDFs.
Feature additions and fixes ship as new builds on the Odoo Apps store; this page and the module's version reflect the current published release. Always keep the build matched to your Odoo series (see Upgrading & version compatibility).
Odoo Proprietary License v1.0 This software and associated files (the "Software") may only be used (executed, modified, executed after modifications) if you have purchased a valid license from the authors, typically via Odoo Apps, or if you have received a written agreement from the authors of the Software (see the COPYRIGHT file). You may develop Odoo modules that use the Software as a library (typically by depending on it, importing it and using its resources), but without copying any source code or material from the Software. You may distribute those modules under the license of your choice, provided that this license is compatible with the terms of the Odoo Proprietary License (For example: LGPL, MIT, or proprietary licenses similar to this one). It is forbidden to publish, distribute, sublicense, or sell copies of the Software or modified copies of the Software. The above copyright notice and this permission notice must be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Please log in to comment on this module