@nebuladocs/editor-angular
v0.2.0
Published
Angular standalone PDF viewer and visual editor built on the framework-neutral PDF SDK controller
Readme
@nebuladocs/editor-angular
Standalone Angular PDF viewer and visual editor for NebulaDocs. A thin adapter
over the framework-neutral @nebuladocs/controller — it does not depend on
React.
Install
npm install @nebuladocs/editor-angular@angular/core and @angular/common are peer dependencies. Supported Angular
range: 18–22 (tested on 20).
Styles
Add the stylesheet to your app once, e.g. in angular.json:
"styles": ["node_modules/@nebuladocs/editor-angular/styles.css"]Standalone component setup
import { Component, ViewChild } from "@angular/core";
import { PdfEditorComponent } from "@nebuladocs/editor-angular";
@Component({
standalone: true,
imports: [PdfEditorComponent],
template: `
<pdf-editor
[source]="document"
[workerSrc]="workerSrc"
[readOnly]="false"
[features]="features"
(ready)="onReady($event)"
(change)="onChange($event)"
(save)="onSave($event)"
(error)="onError($event)"
></pdf-editor>
`,
})
export class ExampleComponent {
workerSrc = "/pdf.worker.min.mjs"; // copy from @nebuladocs/engine, or use pdfWorkerUrl()
}Inputs
source, workerSrc, readOnly, features, variables, theme,
stampLibraryAdapter, pageTemplateLibraryAdapter.
Outputs
ready, change, pageChange, selectionChange, zoomChange,
historyChange, save, error — payloads imported from @nebuladocs/core /
@nebuladocs/controller.
Imperative API
@ViewChild(PdfEditorComponent) editor!: PdfEditorComponent;
await this.editor.exportBlob();
this.editor.undo();Also: load, saveDocument, download, print, zoomIn/zoomOut/setZoom,
fitWidth/fitPage, goToPage, addText/addImage/addStamp,
addPageFromTemplate, getState.
Context menus, stamps, templates
Right-click pages, the document background and elements for the same command-driven menus as the React editor. Stamps and page templates are placed via pickers.
SSR
The component initialises its browser-only controller inside afterNextRender,
so importing it during server-side rendering does not crash. The PDF canvas
mounts on the client.
Troubleshooting
- Worker error — provide
workerSrc. The worker ships in@nebuladocs/engine(pdfWorkerUrl()); copy it to your assets or reference it directly. - Change detection — the editor runs pointer/render work outside
NgZoneand emits committed state; it isOnPush-friendly.
Proprietary — see LICENSE.
