PDF Viewer Watermark
by Alexandre Ma https://github.com/Alexmalab/OdooFrontendExtensions/tree/18.0/pdf_viewer_watermarked
Odoo
$ 0.11
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Lines of code | 360 |
| Technical Name |
pdf_viewer_watermarked |
| License | AGPL-3 |
| Website | https://github.com/Alexmalab/OdooFrontendExtensions/tree/17.0/pdf_viewer_watermarked |
| Versions | 17.0 18.0 |
PDF Viewer Watermark

Description
Allowing you preview pdf documents with watermarked text on it.
- 2 widgets have been introduced:
pdf_viewer_wm, field widget for binary(mimetype:pdf) fields- Extended from
pdf_viewer. - Generates watermarks via frontend methods.
- Good performance and compatibility but less secure.
- Extended from
pdf_watermark, field widget for binary(mimetype:pdf) fields.- Extended from
binary. - Generates watermarked PDF file(backend methods) when downloaded.
- Less compatible and bad performance with large file, not recommended.
- Extended from
- 1 component have been introduced:
WatermarkedFileViewer, enhanced version ofFileViewercomponent- Add watermark feature for viewing pdf file.
Usage
pdf_viewer_wm:<!--add class option enable you set the height value of the viewer container class="h-screen" //full screen class="half-screen" // half screen class="h-300" //300px class="h-500" //500px --> <field name="binary_field" widget="pdf_viewer_wm" class="h-screen"/>Effect Preview:

pdf_watermark:<field name="binary_field" widget="pdf_watermark"/>An example of using the component
WatermarkedFileViewer:import { KanbanRecord } from "@web/views/kanban/kanban_record"; import { useFileViewer } from "@web/core/file_viewer/file_viewer_hook"; import { WatermarkedFileViewer } from "@pdf_viewer_watermarked/components/watermarked_file_viewer/watermarked_file_viewer"; export class XxDocumentKanbanRecord extends KanbanRecord { setup() { super.setup(); this.fileViewer = useFileViewer(); } } let id = 1; // 为æ¯ä¸ªviewerçæå¯ä¸ID patch(VesselDocumentKanbanRecord.prototype, { setup() { super.setup(); const originalOpen = this.fileViewer.open; this.fileViewer.open = (file, files = [file]) => { if (file.isPdf) { // so far this component only render pdf file this.openWithWatermark(file, files); } else { originalOpen(file, files); } }; }, openWithWatermark(file, files) { if (!file.isViewable) { return; } const viewableFiles = files.filter((file) => file.isViewable); const index = viewableFiles.indexOf(file); const fileViewerId = `web.file_viewer${id++}`; registry.category("main_components").add(fileViewerId, { Component: WatermarkedFileViewer, props: { files: viewableFiles, startIndex: index, close: () => { registry.category("main_components").remove(fileViewerId); } }, }); } });Effect Preview:

Bug Tracker
Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us to smash it by providing a detailed and welcomed feedback.
Credits
Authors
- Alexandre Ma
Contributors
Copyright
The copyright of this module belongs to Alexandre Ma


Please log in to comment on this module