ngx-print 21.2.0 → 22.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +79 -52
- package/fesm2022/ngx-print.mjs +15 -15
- package/fesm2022/ngx-print.mjs.map +1 -1
- package/package.json +3 -2
- package/types/ngx-print.d.ts +9 -15
- package/types/ngx-print.d.ts.map +1 -1
package/README.md
CHANGED
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
[](https://www.npmjs.com/package/ngx-print) [](https://travis-ci.org/selemxmn/ngx-print) [](https://coveralls.io/github/selemxmn/ngx-print?branch=unit-tests)
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
[](https://stackblitz.com/edit/i7vymeqf-anasgtzf?file=src%2Fmain.ts)
|
|
4
|
+
|
|
5
|
+
# ngx-print : *plug n' play Angular directive to print your stuff*
|
|
6
|
+
This directive makes printing your HTML sections smooth and easy in your Angular application. It is inspired from the old [AngularJS ngPrint](https://github.com/gilf/ngPrint) directive.
|
|
7
|
+
***Enjoy! Contributions are so welcomed :)***
|
|
5
8
|
|
|
6
9
|
## Dependencies
|
|
7
10
|
|
|
8
11
|
| ngx-print | Angular |
|
|
9
|
-
|
|
12
|
+
| --------- | -------------- |
|
|
10
13
|
| 1.2.1 | 7.0.0 - 14.1.0 |
|
|
11
14
|
| 1.3.x | 15.0.0 |
|
|
12
15
|
| 1.4.x | 16.0.0 |
|
|
@@ -15,6 +18,7 @@ This directive makes printing your HTML sections smooth and easy in your Angular
|
|
|
15
18
|
| 3.x.x | 19.0.0 |
|
|
16
19
|
| 20.x.x | 20.0.0 |
|
|
17
20
|
| 21.x.x | 21.0.0 |
|
|
21
|
+
| 22.x.x | 22.0.0 |
|
|
18
22
|
|
|
19
23
|
## Version Alignment Notice
|
|
20
24
|
|
|
@@ -53,7 +57,7 @@ export class PrintExampleComponent {}
|
|
|
53
57
|
<button>print</button> <!--Your relevant print button-->
|
|
54
58
|
```
|
|
55
59
|
|
|
56
|
-
|
|
60
|
+
- Now, what you have to do is tagging your *wanted-to-print* section by an `id` attribute, then link that `id` to a directive parameter in your button:
|
|
57
61
|
|
|
58
62
|
```html
|
|
59
63
|
<!--
|
|
@@ -68,16 +72,14 @@ export class PrintExampleComponent {}
|
|
|
68
72
|
3)- Affect your ID to printSectionId
|
|
69
73
|
-->
|
|
70
74
|
<button printSectionId="print-section" ngxPrint>print</button>
|
|
71
|
-
|
|
72
75
|
```
|
|
73
76
|
|
|
74
77
|
## Optional properties
|
|
75
78
|
|
|
76
|
-
- You want a customized title for your printing window
|
|
77
|
-
|
|
79
|
+
- You want a customized title for your printing window? Add `printTitle`:
|
|
78
80
|
|
|
79
81
|
```html
|
|
80
|
-
<div
|
|
82
|
+
<div id="print-section">
|
|
81
83
|
<!-- ... -->
|
|
82
84
|
</div>
|
|
83
85
|
|
|
@@ -86,11 +88,10 @@ export class PrintExampleComponent {}
|
|
|
86
88
|
ngxPrint>print</button>
|
|
87
89
|
```
|
|
88
90
|
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
91
|
+
- Customize the printing stylesheet (CSS) by adding styles to `printStyle`:
|
|
92
|
+
|
|
92
93
|
```html
|
|
93
|
-
<div
|
|
94
|
+
<div id="print-section">
|
|
94
95
|
<!-- ... -->
|
|
95
96
|
</div>
|
|
96
97
|
|
|
@@ -100,11 +101,11 @@ export class PrintExampleComponent {}
|
|
|
100
101
|
```
|
|
101
102
|
|
|
102
103
|
Here some simple styles were added to every `h1` & `h2` tags within the `div` where `print-section` is tagged to its `id` attribute.
|
|
103
|
-
|
|
104
|
+
|
|
104
105
|
- If you would like to use your existing CSS with media print you can add the `useExistingCss` attribute:
|
|
105
106
|
|
|
106
107
|
```html
|
|
107
|
-
<div
|
|
108
|
+
<div id="print-section">
|
|
108
109
|
<!-- ... -->
|
|
109
110
|
</div>
|
|
110
111
|
|
|
@@ -113,10 +114,10 @@ Here some simple styles were added to every `h1` & `h2` tags within the `div` wh
|
|
|
113
114
|
ngxPrint>print</button>
|
|
114
115
|
```
|
|
115
116
|
|
|
116
|
-
-
|
|
117
|
+
- Import external stylesheets with `styleSheetFile` (comma-separated list):
|
|
117
118
|
|
|
118
119
|
```html
|
|
119
|
-
<div
|
|
120
|
+
<div id="print-section">
|
|
120
121
|
<!-- ... -->
|
|
121
122
|
</div>
|
|
122
123
|
|
|
@@ -124,54 +125,63 @@ Here some simple styles were added to every `h1` & `h2` tags within the `div` wh
|
|
|
124
125
|
printSectionId="print-section"
|
|
125
126
|
ngxPrint>print</button>
|
|
126
127
|
```
|
|
127
|
-
|
|
128
|
-
-
|
|
128
|
+
|
|
129
|
+
- Show a preview without opening the print dialog using `previewOnly`:
|
|
129
130
|
|
|
130
131
|
```html
|
|
131
|
-
<div
|
|
132
|
+
<div id="print-section">
|
|
132
133
|
<!-- ... -->
|
|
133
134
|
</div>
|
|
134
135
|
|
|
135
136
|
<button [previewOnly]="true"
|
|
136
137
|
printSectionId="print-section"
|
|
137
138
|
ngxPrint>print</button>
|
|
138
|
-
|
|
139
139
|
```
|
|
140
140
|
|
|
141
141
|
- Some print operations open a second dialog, and automatically closing the popup window happens before the second dialog opens. Set `closeWindow` to false to handle print operations that open a second dialog, like "Microsoft Print to PDF", or "Print using system dialog...":
|
|
142
142
|
|
|
143
143
|
```html
|
|
144
|
-
|
|
145
|
-
<div id="print-section">
|
|
144
|
+
<div id="print-section">
|
|
146
145
|
<!-- ... -->
|
|
147
146
|
</div>
|
|
148
147
|
|
|
149
148
|
<button [closeWindow]="false"
|
|
150
149
|
printSectionId="print-section"
|
|
151
150
|
ngxPrint>print</button>
|
|
152
|
-
|
|
153
151
|
```
|
|
154
152
|
|
|
155
|
-
- Set `bodyClass` to whatever class values are needed for some of your
|
|
153
|
+
- Set `bodyClass` to whatever class values are needed for some of your CSS rules that expect an ancestor to have a certain class. For example, a theme selector:
|
|
156
154
|
|
|
157
155
|
```html
|
|
158
|
-
<div
|
|
159
|
-
<!-- ... -->
|
|
156
|
+
<div id="print-section">
|
|
157
|
+
<!-- ... -->
|
|
160
158
|
</div>
|
|
161
159
|
|
|
162
|
-
<button
|
|
160
|
+
<button bodyClass="theme-dark"
|
|
163
161
|
printSectionId="print-section"
|
|
164
162
|
ngxPrint>print</button>
|
|
165
163
|
```
|
|
166
164
|
|
|
167
|
-
-
|
|
165
|
+
- Use `printMethod` to control how the print window is opened. The default is `'window'` (a new popup window). Set it to `'tab'` to open a new browser tab instead, or to `'iframe'` to print silently in the background using a hidden iframe (no popup at all):
|
|
168
166
|
|
|
169
167
|
```html
|
|
170
|
-
|
|
168
|
+
<!-- Default: opens a new popup window -->
|
|
169
|
+
<button printMethod="window"
|
|
170
|
+
printSectionId="print-section"
|
|
171
|
+
ngxPrint>print</button>
|
|
172
|
+
|
|
173
|
+
<!-- Opens a new browser tab -->
|
|
174
|
+
<button printMethod="tab"
|
|
175
|
+
printSectionId="print-section"
|
|
176
|
+
ngxPrint>print</button>
|
|
177
|
+
|
|
178
|
+
<!-- Prints silently via a hidden iframe (no popup) -->
|
|
179
|
+
<button printMethod="iframe"
|
|
180
|
+
printSectionId="print-section"
|
|
171
181
|
ngxPrint>print</button>
|
|
172
182
|
```
|
|
173
183
|
|
|
174
|
-
- To run a function after printing completes, subscribe to the `printCompleted` event. Please note it is impossible to differentiate between the Cancel or Print
|
|
184
|
+
- To run a function after printing completes, subscribe to the `printCompleted` event. Please note it is impossible to differentiate between the Cancel or Print button being clicked on the print window. This event will fire regardless of which button was clicked:
|
|
175
185
|
|
|
176
186
|
```html
|
|
177
187
|
<button (printCompleted)="onPrintComplete()"
|
|
@@ -182,66 +192,83 @@ Here some simple styles were added to every `h1` & `h2` tags within the `div` wh
|
|
|
182
192
|
|
|
183
193
|
## Using NgxPrint as a service (v1.5+)
|
|
184
194
|
|
|
185
|
-
Inject the NgxPrintService into your component or service:
|
|
195
|
+
Inject the `NgxPrintService` into your component or service:
|
|
186
196
|
|
|
187
197
|
```ts
|
|
198
|
+
import { inject } from '@angular/core';
|
|
199
|
+
import { NgxPrintService, PrintOptions } from 'ngx-print';
|
|
200
|
+
|
|
188
201
|
private readonly printService = inject(NgxPrintService);
|
|
189
202
|
```
|
|
190
203
|
|
|
191
204
|
### Printing a Section
|
|
192
205
|
|
|
193
|
-
```
|
|
194
|
-
import { PrintOptions } from '
|
|
206
|
+
```ts
|
|
207
|
+
import { PrintOptions } from 'ngx-print';
|
|
195
208
|
|
|
196
209
|
printMe(): void {
|
|
197
|
-
const customPrintOptions
|
|
198
|
-
|
|
199
|
-
|
|
210
|
+
const customPrintOptions = new PrintOptions({
|
|
211
|
+
printSectionId: 'print-section',
|
|
212
|
+
// add any other print options as needed
|
|
200
213
|
});
|
|
201
|
-
this.printService.print(customPrintOptions)
|
|
214
|
+
this.printService.print(customPrintOptions);
|
|
202
215
|
}
|
|
203
216
|
```
|
|
204
217
|
|
|
205
218
|
### Print Options Object
|
|
206
|
-
|
|
219
|
+
|
|
220
|
+
The `PrintOptions` object allows you to specify how the print job should be handled. All properties have default values and are optional, although `printSectionId` is required. It contains the following properties:
|
|
221
|
+
|
|
207
222
|
```typescript
|
|
208
|
-
|
|
209
|
-
printTitle: string =
|
|
223
|
+
printSectionId: string = '';
|
|
224
|
+
printTitle: string = '';
|
|
210
225
|
useExistingCss: boolean = false;
|
|
211
226
|
bodyClass: string = '';
|
|
212
|
-
|
|
227
|
+
printMethod: 'window' | 'tab' | 'iframe' = 'window';
|
|
213
228
|
previewOnly: boolean = false;
|
|
214
229
|
closeWindow: boolean = true;
|
|
215
230
|
printDelay: number = 0;
|
|
216
231
|
```
|
|
217
232
|
|
|
233
|
+
| Property | Type | Default | Description |
|
|
234
|
+
| ---------------- | ------------------------------- | ---------- | ---------------------------------------------------------------------------- |
|
|
235
|
+
| `printSectionId` | `string` | `''` | **Required.** The `id` of the element to print. |
|
|
236
|
+
| `printTitle` | `string` | `''` | Title shown in the print document. |
|
|
237
|
+
| `useExistingCss` | `boolean` | `false` | Copies `<style>` and `<link>` tags from the host page. |
|
|
238
|
+
| `bodyClass` | `string` | `''` | CSS class(es) applied to the print `<body>`. |
|
|
239
|
+
| `printMethod` | `'window' \| 'tab' \| 'iframe'` | `'window'` | Controls how printing is triggered: popup window, new tab, or silent iframe. |
|
|
240
|
+
| `previewOnly` | `boolean` | `false` | Opens the print target without triggering the print dialog. |
|
|
241
|
+
| `closeWindow` | `boolean` | `true` | Closes the popup window after printing (ignored for `iframe`). |
|
|
242
|
+
| `printDelay` | `number` | `0` | Delay in milliseconds before the print dialog is opened. |
|
|
243
|
+
|
|
218
244
|
### Setting PrintStyles or StyleSheets
|
|
219
245
|
|
|
220
|
-
```
|
|
221
|
-
// Optional
|
|
246
|
+
```ts
|
|
247
|
+
// Optional: CSS as a key-value pair
|
|
222
248
|
this.printService.printStyle = styleSheet;
|
|
223
249
|
|
|
224
|
-
// Optional
|
|
250
|
+
// Optional: path to a CSS file
|
|
225
251
|
this.printService.styleSheetFile = fileLocation;
|
|
226
252
|
```
|
|
227
253
|
|
|
228
|
-
### Subscribing to print event
|
|
254
|
+
### Subscribing to the print event
|
|
229
255
|
|
|
230
|
-
```
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
256
|
+
```ts
|
|
257
|
+
this.printService.printComplete$.pipe(take(1)).subscribe(() => {
|
|
258
|
+
console.log('Print completed!');
|
|
259
|
+
});
|
|
234
260
|
```
|
|
235
261
|
|
|
236
262
|
## Content-Security-Policy (CSP) Support
|
|
237
|
-
|
|
263
|
+
|
|
264
|
+
If Angular is configured to use a [CSP Nonce](https://angular.io/api/core/CSP_NONCE), ngx-print will automatically inject the `[printStyle]` CSS rules and stylesheet `<link>` tags with this nonce so they are permitted by the browser's Content Security Policy.
|
|
238
265
|
|
|
239
266
|
## Contributors :1st_place_medal:
|
|
240
267
|
|
|
241
|
-
Huge thanks to: [deeplotia](https://github.com/deeplotia)
|
|
268
|
+
Huge thanks to: [deeplotia](https://github.com/deeplotia), [Ben L](https://github.com/broem), [Gavyn McKenzie](https://github.com/gavmck), [silenceway](https://github.com/silenceway), [Muhammad Ahsan Ayaz](https://github.com/AhsanAyaz), [Core121](https://github.com/Core121), [Andreas Dorner](https://github.com/endlacer) and to all `ngx-print` users
|
|
242
269
|
|
|
243
270
|
## Donation
|
|
244
271
|
|
|
245
|
-
Did this project help you
|
|
272
|
+
Did this project help you reduce time? I won't say no to a cup of coffee 🍵 :)
|
|
246
273
|
|
|
247
274
|
[](https://www.paypal.me/selemxmn/2)
|
package/fesm2022/ngx-print.mjs
CHANGED
|
@@ -184,8 +184,8 @@ class PrintBase {
|
|
|
184
184
|
getElementTag(tag) {
|
|
185
185
|
const html = [];
|
|
186
186
|
const elements = this.document.getElementsByTagName(tag);
|
|
187
|
-
for (
|
|
188
|
-
html.push(
|
|
187
|
+
for (const el of Array.from(elements)) {
|
|
188
|
+
html.push(el.outerHTML);
|
|
189
189
|
}
|
|
190
190
|
return html.join('\r\n');
|
|
191
191
|
}
|
|
@@ -333,10 +333,10 @@ class PrintBase {
|
|
|
333
333
|
doc.appendChild(html);
|
|
334
334
|
return true;
|
|
335
335
|
}
|
|
336
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
337
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
336
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: PrintBase, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
337
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: PrintBase, providedIn: 'root' });
|
|
338
338
|
}
|
|
339
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
339
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: PrintBase, decorators: [{
|
|
340
340
|
type: Injectable,
|
|
341
341
|
args: [{
|
|
342
342
|
providedIn: 'root',
|
|
@@ -433,10 +433,10 @@ class NgxPrintDirective extends PrintBase {
|
|
|
433
433
|
});
|
|
434
434
|
}
|
|
435
435
|
printCompleted = output();
|
|
436
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
437
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
436
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: NgxPrintDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
437
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.2", type: NgxPrintDirective, isStandalone: true, selector: "[ngxPrint]", inputs: { previewOnly: "previewOnly", printSectionId: "printSectionId", printTitle: "printTitle", useExistingCss: "useExistingCss", printDelay: "printDelay", closeWindow: "closeWindow", bodyClass: "bodyClass", printMethod: "printMethod", printStyle: "printStyle", styleSheetFile: "styleSheetFile" }, outputs: { printCompleted: "printCompleted" }, host: { listeners: { "click": "print()" } }, usesInheritance: true, ngImport: i0 });
|
|
438
438
|
}
|
|
439
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
439
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: NgxPrintDirective, decorators: [{
|
|
440
440
|
type: Directive,
|
|
441
441
|
args: [{
|
|
442
442
|
selector: '[ngxPrint]',
|
|
@@ -468,11 +468,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImpor
|
|
|
468
468
|
}], printCompleted: [{ type: i0.Output, args: ["printCompleted"] }] } });
|
|
469
469
|
|
|
470
470
|
class NgxPrintModule {
|
|
471
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
472
|
-
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "
|
|
473
|
-
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
|
471
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: NgxPrintModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
472
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.0.2", ngImport: i0, type: NgxPrintModule, imports: [NgxPrintDirective], exports: [NgxPrintDirective] });
|
|
473
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: NgxPrintModule });
|
|
474
474
|
}
|
|
475
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
475
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: NgxPrintModule, decorators: [{
|
|
476
476
|
type: NgModule,
|
|
477
477
|
args: [{
|
|
478
478
|
imports: [NgxPrintDirective],
|
|
@@ -521,10 +521,10 @@ class NgxPrintService extends PrintBase {
|
|
|
521
521
|
set styleSheetFile(cssList) {
|
|
522
522
|
super.setStyleSheetFile(cssList);
|
|
523
523
|
}
|
|
524
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
525
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
524
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: NgxPrintService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
|
|
525
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: NgxPrintService, providedIn: 'root' });
|
|
526
526
|
}
|
|
527
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
527
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: NgxPrintService, decorators: [{
|
|
528
528
|
type: Injectable,
|
|
529
529
|
args: [{
|
|
530
530
|
providedIn: 'root',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngx-print.mjs","sources":["../../../src/lib/print-options.ts","../../../src/lib/ngx-print.base.ts","../../../src/lib/ngx-print.directive.ts","../../../src/lib/ngx-print.module.ts","../../../src/lib/ngx-print.service.ts","../../../src/public_api.ts","../../../src/ngx-print.ts"],"sourcesContent":["export class PrintOptions {\r\n printSectionId: string = '';\r\n printTitle: string = '';\r\n useExistingCss: boolean = false;\r\n bodyClass: string = '';\r\n printMethod: 'window' | 'tab' | 'iframe' = 'window';\r\n previewOnly: boolean = false;\r\n closeWindow: boolean = true;\r\n printDelay: number = 0;\r\n\r\n constructor(options?: Partial<PrintOptions>) {\r\n if (options) {\r\n Object.assign(this, options);\r\n }\r\n }\r\n}\r\n","import { CSP_NONCE, DOCUMENT, inject, Injectable } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { PrintOptions } from './print-options';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class PrintBase {\r\n private document = inject(DOCUMENT);\r\n private nonce = inject(CSP_NONCE, { optional: true });\r\n\r\n private _iframeElement: HTMLIFrameElement | undefined;\r\n private _printStyle: string[] = [];\r\n private _styleSheetFile: string = '';\r\n protected printComplete = new Subject<void>();\r\n\r\n //#region Getters and Setters\r\n /**\r\n * Sets the print styles based on the provided values.\r\n *\r\n * @param {Object} values - Key-value pairs representing print styles.\r\n * @protected\r\n */\r\n protected setPrintStyle(values: { [key: string]: { [key: string]: string } }) {\r\n this._printStyle = [];\r\n for (const key of Object.keys(values)) {\r\n this._printStyle.push((key + JSON.stringify(values[key])).replace(/['\"]+/g, ''));\r\n }\r\n }\r\n\r\n /**\r\n *\r\n *\r\n * @returns the string that create the stylesheet which will be injected\r\n * later within <style></style> tag.\r\n *\r\n * -join/replace to transform an array objects to css-styled string\r\n */\r\n public returnStyleValues(): string {\r\n const styleNonce = this.nonce ? ` nonce=\"${this.nonce}\"` : '';\r\n return `<style${styleNonce}> ${this._printStyle.join(' ').replace(/,/g, ';')} </style>`;\r\n }\r\n\r\n /**\r\n * @returns string which contains the link tags containing the css which will\r\n * be injected later within <head></head> tag.\r\n *\r\n */\r\n private returnStyleSheetLinkTags(): string {\r\n return this._styleSheetFile;\r\n }\r\n\r\n /**\r\n * Sets the style sheet file based on the provided CSS list.\r\n *\r\n * @param {string} cssList - CSS file or list of CSS files.\r\n * @protected\r\n */\r\n // prettier-ignore\r\n protected setStyleSheetFile(cssList: string): void {\r\n const files = cssList.split(',').map(f => f.trim());\r\n const nonceAttr = this.nonce ? ` nonce=\"${this.nonce}\"` : '';\r\n this._styleSheetFile = files\r\n .map(url => `<link${nonceAttr} rel=\"stylesheet\" type=\"text/css\" href=\"${url}\">`)\r\n .join('');\r\n }\r\n\r\n //#endregion\r\n\r\n //#region Private methods used by PrintBase\r\n\r\n private syncFormValues(source: HTMLElement, clone: HTMLElement): void {\r\n // Select all form elements\r\n const selector = 'input, select, textarea';\r\n const sourceEls = source.querySelectorAll(selector);\r\n const cloneEls = clone.querySelectorAll(selector);\r\n\r\n for (let i = 0; i < sourceEls.length; i++) {\r\n const srcNode = sourceEls[i] as HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement;\r\n const cloneNode = cloneEls[i] as typeof srcNode;\r\n\r\n if (srcNode instanceof HTMLInputElement) {\r\n if (srcNode.type === 'checkbox' || srcNode.type === 'radio') {\r\n if (srcNode.checked) cloneNode.setAttribute('checked', '');\r\n else cloneNode.removeAttribute('checked'); // Remove if unchecked\r\n } else if (srcNode.type === 'file') {\r\n // File inputs can't be set programmatically for security\r\n continue;\r\n } else {\r\n cloneNode.setAttribute('value', srcNode.value);\r\n }\r\n } else if (srcNode instanceof HTMLTextAreaElement) {\r\n cloneNode.textContent = srcNode.value; // Use textContent, not innerHTML\r\n } else if (srcNode instanceof HTMLSelectElement) {\r\n Array.from((cloneNode as HTMLSelectElement).options).forEach((opt, idx) => {\r\n if (idx === srcNode.selectedIndex) {\r\n opt.setAttribute('selected', '');\r\n } else {\r\n opt.removeAttribute('selected'); // Remove from non-selected\r\n }\r\n });\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Converts a canvas element to an image and returns its HTML string.\r\n *\r\n * @param {HTMLCanvasElement} canvasElm - The canvas element to convert.\r\n * @returns {HTMLImageElement | null} - HTML Element of the image.\r\n * @private\r\n */\r\n private canvasToImageHtml(canvasElm: HTMLCanvasElement): HTMLImageElement | null {\r\n try {\r\n const dataUrl = canvasElm.toDataURL(); // may throw if canvas is tainted\r\n const img = this.document.createElement('img');\r\n img.src = dataUrl;\r\n img.style.maxWidth = '100%';\r\n\r\n // Preserve displayed size (not just bitmap size)\r\n const rect = canvasElm.getBoundingClientRect();\r\n if (rect.width) img.style.width = `${rect.width}px`;\r\n if (rect.height) img.style.height = `${rect.height}px`;\r\n\r\n return img;\r\n } catch (err) {\r\n console.warn(`Canvas conversion failed for ${canvasElm}. Likely the canvas is tainted:`, err);\r\n // If toDataURL() fails (e.g., tainted canvas), keep canvas as-is in print output\r\n return null;\r\n }\r\n }\r\n\r\n /**\r\n * Includes canvas contents in the print section via img tags.\r\n *\r\n * @private\r\n * @param source\r\n * @param clone\r\n */\r\n private updateCanvasToImage(source: HTMLElement, clone: HTMLElement): void {\r\n const sourceCanvases = source.querySelectorAll('canvas');\r\n const cloneCanvases = clone.querySelectorAll('canvas');\r\n\r\n for (let i = 0; i < sourceCanvases.length; i++) {\r\n const srcCanvas = sourceCanvases[i];\r\n const cloneCanvas = cloneCanvases[i];\r\n const img = this.canvasToImageHtml(srcCanvas);\r\n if (img) {\r\n cloneCanvas.replaceWith(img);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Retrieves the HTML content of a specified printing section.\r\n *\r\n * @param {string} printSectionId - Id of the printing section.\r\n * @returns {string | null} - HTML content of the printing section, or null if not found.\r\n * @private\r\n */\r\n private getHtmlContents(printSectionId: string): string | null {\r\n const sourceElm = this.document.getElementById(printSectionId);\r\n if (!sourceElm) return null;\r\n\r\n const cloneElm = sourceElm.cloneNode(true) as HTMLElement; // cloneNode(true) deep clones subtree\r\n\r\n this.syncFormValues(sourceElm, cloneElm);\r\n this.updateCanvasToImage(sourceElm, cloneElm);\r\n\r\n return cloneElm.innerHTML;\r\n }\r\n\r\n /**\r\n * Retrieves the HTML content of elements with the specified tag.\r\n *\r\n * @param {keyof HTMLElementTagNameMap} tag - HTML tag name.\r\n * @returns {string} - Concatenated outerHTML of elements with the specified tag.\r\n * @private\r\n */\r\n private getElementTag(tag: keyof HTMLElementTagNameMap): string {\r\n const html: string[] = [];\r\n const elements = this.document.getElementsByTagName(tag);\r\n for (let index = 0; index < elements.length; index++) {\r\n html.push(elements[index].outerHTML);\r\n }\r\n return html.join('\\r\\n');\r\n }\r\n\r\n //#endregion\r\n\r\n protected notifyPrintComplete() {\r\n this.printComplete.next();\r\n }\r\n\r\n /**\r\n * Prints the specified content using the provided print options.\r\n *\r\n * @public\r\n * @param printOptionInput - Options for printing.\r\n */\r\n protected print(printOptionInput?: Partial<PrintOptions>): void {\r\n const printOptions = new PrintOptions(printOptionInput);\r\n if (printOptions.printMethod === 'iframe') {\r\n this.printWithIframe(printOptions);\r\n } else {\r\n this.printWithWindow(printOptions);\r\n }\r\n }\r\n\r\n protected printWithWindow(printOptions: PrintOptions) {\r\n // If the openNewTab option is set to true, then set the popOut option to an empty string\r\n // This will cause the print dialog to open in a new tab.\r\n const popOut = printOptions.printMethod === 'tab' ? '' : 'top=0,left=0,height=auto,width=auto';\r\n\r\n const popupWin = window.open('', '_blank', popOut);\r\n\r\n if (!popupWin) {\r\n // the popup window could not be opened.\r\n console.error('Could not open print window.');\r\n return;\r\n }\r\n\r\n popupWin.document.open();\r\n // Create the HTML structure\r\n this.buildPrintDocument(popupWin.document, printOptions);\r\n\r\n popupWin.document.close();\r\n\r\n // Listen for the window closing\r\n const checkClosedInterval = setInterval(() => {\r\n if (popupWin.closed) {\r\n clearInterval(checkClosedInterval);\r\n this.notifyPrintComplete();\r\n }\r\n }, 500);\r\n\r\n popupWin.addEventListener('load', () => {\r\n if (!printOptions.previewOnly) {\r\n setTimeout(() => {\r\n popupWin.print();\r\n if (printOptions.closeWindow) popupWin.close();\r\n }, printOptions.printDelay || 0);\r\n }\r\n });\r\n }\r\n\r\n private printWithIframe(printOptions: PrintOptions): void {\r\n if (this._iframeElement) {\r\n this._iframeElement.remove();\r\n }\r\n this._iframeElement = this.document.createElement('iframe');\r\n const iframe = this._iframeElement;\r\n iframe.id = 'print-iframe-' + new Date().getTime();\r\n iframe.style.position = 'absolute';\r\n iframe.style.left = '-9999px';\r\n iframe.style.top = '-9999px';\r\n iframe.style.width = '0px';\r\n iframe.style.height = '0px';\r\n iframe.ariaHidden = 'true';\r\n\r\n this.document.body.appendChild(iframe);\r\n\r\n const iframeDoc = iframe.contentDocument || iframe.contentWindow?.document;\r\n if (!iframeDoc) {\r\n console.error('Could not access iframe document.');\r\n this.document.body.removeChild(iframe);\r\n return;\r\n }\r\n\r\n iframeDoc.open();\r\n const success = this.buildPrintDocument(iframeDoc, printOptions);\r\n if (!success) {\r\n iframeDoc.close();\r\n this.document.body.removeChild(iframe);\r\n return;\r\n }\r\n iframeDoc.close();\r\n\r\n iframe.onload = () => {\r\n const printWindow = iframe.contentWindow;\r\n if (!printWindow) {\r\n console.error('Could not access iframe window.');\r\n this.document.body.removeChild(iframe);\r\n return;\r\n }\r\n\r\n setTimeout(() => {\r\n if (printOptions.previewOnly) {\r\n return;\r\n }\r\n printWindow.focus();\r\n printWindow.print();\r\n\r\n const mediaQueryList = printWindow.matchMedia('print');\r\n const listener = (mql: MediaQueryListEvent) => {\r\n if (!mql.matches) {\r\n this.notifyPrintComplete();\r\n mediaQueryList.removeEventListener('change', listener);\r\n }\r\n };\r\n\r\n mediaQueryList.addEventListener('change', listener);\r\n }, printOptions.printDelay || 0);\r\n };\r\n }\r\n\r\n private prepareDocumentComponents(printOptions: PrintOptions) {\r\n let styles = '';\r\n let links = '';\r\n const baseTag = this.getElementTag('base');\r\n\r\n if (printOptions.useExistingCss) {\r\n styles = this.getElementTag('style');\r\n links = this.getElementTag('link');\r\n }\r\n\r\n const printContents = this.getHtmlContents(printOptions.printSectionId);\r\n\r\n return { styles, links, baseTag, printContents };\r\n }\r\n\r\n private buildPrintDocument(doc: Document, printOptions: PrintOptions): boolean {\r\n const components = this.prepareDocumentComponents(printOptions);\r\n\r\n if (!components.printContents) {\r\n console.error(`Print section with id \"${printOptions.printSectionId}\" not found.`);\r\n return false;\r\n }\r\n\r\n const html = doc.createElement('html');\r\n const head = doc.createElement('head');\r\n const body = doc.createElement('body');\r\n\r\n // Set title\r\n const title = doc.createElement('title');\r\n title.textContent = printOptions.printTitle || '';\r\n head.appendChild(title);\r\n\r\n // Add all head content\r\n if (components.baseTag) {\r\n head.innerHTML += components.baseTag;\r\n }\r\n head.innerHTML += this.returnStyleValues();\r\n head.innerHTML += this.returnStyleSheetLinkTags();\r\n head.innerHTML += components.styles;\r\n head.innerHTML += components.links;\r\n\r\n // Set body class and content\r\n if (printOptions.bodyClass) body.className = printOptions.bodyClass;\r\n body.innerHTML += components.printContents;\r\n\r\n // Assemble document\r\n html.appendChild(head);\r\n html.appendChild(body);\r\n doc.appendChild(html);\r\n\r\n return true;\r\n }\r\n}\r\n","import { Directive, Input, output } from '@angular/core';\r\nimport { PrintBase } from './ngx-print.base';\r\nimport { PrintOptions } from './print-options';\r\nimport { take } from 'rxjs';\r\n\r\n@Directive({\r\n selector: '[ngxPrint]',\r\n standalone: true,\r\n host: {\r\n '(click)': 'print()',\r\n },\r\n})\r\nexport class NgxPrintDirective extends PrintBase {\r\n private printOptions = new PrintOptions();\r\n\r\n /**\r\n * Prevents the print dialog from opening on the window\r\n *\r\n * @memberof NgxPrintDirective\r\n */\r\n @Input() set previewOnly(value: boolean) {\r\n this.printOptions = { ...this.printOptions, previewOnly: value };\r\n }\r\n\r\n /**\r\n *\r\n *\r\n * @memberof NgxPrintDirective\r\n */\r\n @Input() set printSectionId(value: string) {\r\n this.printOptions = { ...this.printOptions, printSectionId: value };\r\n }\r\n\r\n /**\r\n *\r\n *\r\n * @memberof NgxPrintDirective\r\n */\r\n @Input() set printTitle(value: string) {\r\n this.printOptions = { ...this.printOptions, printTitle: value };\r\n }\r\n\r\n /**\r\n *\r\n *\r\n * @memberof NgxPrintDirective\r\n */\r\n @Input() set useExistingCss(value: boolean) {\r\n this.printOptions = { ...this.printOptions, useExistingCss: value };\r\n }\r\n\r\n /**\r\n * A delay in milliseconds to force the print dialog to wait before opened. Default: 0\r\n *\r\n * @memberof NgxPrintDirective\r\n */\r\n @Input() set printDelay(value: number) {\r\n this.printOptions = { ...this.printOptions, printDelay: value };\r\n }\r\n\r\n /**\r\n * Whether to close the window after print() returns.\r\n *\r\n */\r\n @Input() set closeWindow(value: boolean) {\r\n this.printOptions = { ...this.printOptions, closeWindow: value };\r\n }\r\n\r\n /**\r\n * Class attribute to apply to the body element.\r\n *\r\n */\r\n @Input() set bodyClass(value: string) {\r\n this.printOptions = { ...this.printOptions, bodyClass: value };\r\n }\r\n\r\n /**\r\n * Which PrintMethod (iframe/window/tab) to use.\r\n *\r\n */\r\n @Input() set printMethod(value: typeof PrintOptions.prototype.printMethod) {\r\n this.printOptions = { ...this.printOptions, printMethod: value };\r\n }\r\n\r\n /**\r\n *\r\n *\r\n * @memberof NgxPrintDirective\r\n */\r\n @Input()\r\n set printStyle(values: { [key: string]: { [key: string]: string } }) {\r\n super.setPrintStyle(values);\r\n }\r\n\r\n /**\r\n * @memberof NgxPrintDirective\r\n * @param cssList\r\n */\r\n @Input()\r\n set styleSheetFile(cssList: string) {\r\n super.setStyleSheetFile(cssList);\r\n }\r\n\r\n /**\r\n *\r\n *\r\n * @memberof NgxPrintDirective\r\n */\r\n public override print(): void {\r\n super.print(this.printOptions);\r\n this.printComplete.pipe(take(1)).subscribe(() => {\r\n this.printCompleted.emit();\r\n });\r\n }\r\n\r\n readonly printCompleted = output<void>();\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { NgxPrintDirective } from './ngx-print.directive';\r\n\r\n@NgModule({\r\n imports: [NgxPrintDirective],\r\n exports: [NgxPrintDirective],\r\n})\r\nexport class NgxPrintModule {}\r\n","import { Injectable } from '@angular/core';\r\nimport { PrintBase } from './ngx-print.base';\r\nimport { PrintOptions } from './print-options';\r\n\r\n/**\r\n * Service for handling printing functionality in Angular applications.\r\n * Extends the base printing class (PrintBase).\r\n *\r\n * @export\r\n * @class NgxPrintService\r\n * @extends {PrintBase}\r\n */\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class NgxPrintService extends PrintBase {\r\n printComplete$ = this.printComplete.asObservable();\r\n\r\n /**\r\n * Initiates the printing process using the provided print options.\r\n *\r\n * @param {PrintOptions} printOptions - Options for configuring the printing process.\r\n * @memberof NgxPrintService\r\n * @returns {void}\r\n */\r\n public override print(printOptions?: Partial<PrintOptions>): void {\r\n // Call the print method in the parent class\r\n super.print(printOptions);\r\n }\r\n\r\n /**\r\n * Sets the print style for the printing process.\r\n *\r\n * @param {{ [key: string]: { [key: string]: string } }} values - A dictionary representing the print styles.\r\n * @memberof NgxPrintService\r\n * @setter\r\n */\r\n set printStyle(values: { [key: string]: { [key: string]: string } }) {\r\n super.setPrintStyle(values);\r\n }\r\n\r\n /**\r\n * Sets the stylesheet file for the printing process.\r\n *\r\n * @param {string} cssList - A string representing the path to the stylesheet file.\r\n * @memberof NgxPrintService\r\n * @setter\r\n */\r\n set styleSheetFile(cssList: string) {\r\n super.setStyleSheetFile(cssList);\r\n }\r\n}\r\n","/*\r\n * Public API Surface of ngx-print\r\n */\r\nexport { NgxPrintDirective } from './lib/ngx-print.directive';\r\nexport { NgxPrintModule } from './lib/ngx-print.module';\r\nexport { NgxPrintService } from './lib/ngx-print.service';\r\nexport { PrintOptions } from './lib/print-options';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ngx-print.mjs","sources":["../../../src/lib/print-options.ts","../../../src/lib/ngx-print.base.ts","../../../src/lib/ngx-print.directive.ts","../../../src/lib/ngx-print.module.ts","../../../src/lib/ngx-print.service.ts","../../../src/public_api.ts","../../../src/ngx-print.ts"],"sourcesContent":["export class PrintOptions {\r\n printSectionId = '';\r\n printTitle = '';\r\n useExistingCss = false;\r\n bodyClass = '';\r\n printMethod: 'window' | 'tab' | 'iframe' = 'window';\r\n previewOnly = false;\r\n closeWindow = true;\r\n printDelay = 0;\r\n\r\n constructor(options?: Partial<PrintOptions>) {\r\n if (options) {\r\n Object.assign(this, options);\r\n }\r\n }\r\n}\r\n","import { CSP_NONCE, DOCUMENT, inject, Injectable } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { PrintOptions } from './print-options';\r\n\r\n/** For example:\r\n * {\r\n * 'h2': { 'border': 'solid 1px' },\r\n * 'h1': { 'color': 'red', 'border': '1px solid' },\r\n * */\r\nexport type PrintStyle = Record<string, Record<string, string>>;\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class PrintBase {\r\n private document = inject(DOCUMENT);\r\n private nonce = inject(CSP_NONCE, { optional: true });\r\n\r\n private _iframeElement: HTMLIFrameElement | undefined;\r\n private _printStyle: string[] = [];\r\n private _styleSheetFile = '';\r\n protected printComplete = new Subject<void>();\r\n\r\n //#region Getters and Setters\r\n /**\r\n * Sets the print styles based on the provided values.\r\n *\r\n * @param {Object} values - Key-value pairs representing print styles.\r\n * @protected\r\n */\r\n protected setPrintStyle(values: PrintStyle) {\r\n this._printStyle = [];\r\n for (const key of Object.keys(values)) {\r\n this._printStyle.push((key + JSON.stringify(values[key])).replace(/['\"]+/g, ''));\r\n }\r\n }\r\n\r\n /**\r\n *\r\n *\r\n * @returns the string that create the stylesheet which will be injected\r\n * later within <style></style> tag.\r\n *\r\n * -join/replace to transform an array objects to css-styled string\r\n */\r\n public returnStyleValues(): string {\r\n const styleNonce = this.nonce ? ` nonce=\"${this.nonce}\"` : '';\r\n return `<style${styleNonce}> ${this._printStyle.join(' ').replace(/,/g, ';')} </style>`;\r\n }\r\n\r\n /**\r\n * @returns string which contains the link tags containing the css which will\r\n * be injected later within <head></head> tag.\r\n *\r\n */\r\n private returnStyleSheetLinkTags(): string {\r\n return this._styleSheetFile;\r\n }\r\n\r\n /**\r\n * Sets the style sheet file based on the provided CSS list.\r\n *\r\n * @param {string} cssList - CSS file or list of CSS files.\r\n * @protected\r\n */\r\n // prettier-ignore\r\n protected setStyleSheetFile(cssList: string): void {\r\n const files = cssList.split(',').map(f => f.trim());\r\n const nonceAttr = this.nonce ? ` nonce=\"${this.nonce}\"` : '';\r\n this._styleSheetFile = files\r\n .map(url => `<link${nonceAttr} rel=\"stylesheet\" type=\"text/css\" href=\"${url}\">`)\r\n .join('');\r\n }\r\n\r\n //#endregion\r\n\r\n //#region Private methods used by PrintBase\r\n\r\n private syncFormValues(source: HTMLElement, clone: HTMLElement): void {\r\n // Select all form elements\r\n const selector = 'input, select, textarea';\r\n const sourceEls = source.querySelectorAll(selector);\r\n const cloneEls = clone.querySelectorAll(selector);\r\n\r\n for (let i = 0; i < sourceEls.length; i++) {\r\n const srcNode = sourceEls[i] as HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement;\r\n const cloneNode = cloneEls[i] as typeof srcNode;\r\n\r\n if (srcNode instanceof HTMLInputElement) {\r\n if (srcNode.type === 'checkbox' || srcNode.type === 'radio') {\r\n if (srcNode.checked) cloneNode.setAttribute('checked', '');\r\n else cloneNode.removeAttribute('checked'); // Remove if unchecked\r\n } else if (srcNode.type === 'file') {\r\n // File inputs can't be set programmatically for security\r\n continue;\r\n } else {\r\n cloneNode.setAttribute('value', srcNode.value);\r\n }\r\n } else if (srcNode instanceof HTMLTextAreaElement) {\r\n cloneNode.textContent = srcNode.value; // Use textContent, not innerHTML\r\n } else if (srcNode instanceof HTMLSelectElement) {\r\n Array.from((cloneNode as HTMLSelectElement).options).forEach((opt, idx) => {\r\n if (idx === srcNode.selectedIndex) {\r\n opt.setAttribute('selected', '');\r\n } else {\r\n opt.removeAttribute('selected'); // Remove from non-selected\r\n }\r\n });\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Converts a canvas element to an image and returns its HTML string.\r\n *\r\n * @param {HTMLCanvasElement} canvasElm - The canvas element to convert.\r\n * @returns {HTMLImageElement | null} - HTML Element of the image.\r\n * @private\r\n */\r\n private canvasToImageHtml(canvasElm: HTMLCanvasElement): HTMLImageElement | null {\r\n try {\r\n const dataUrl = canvasElm.toDataURL(); // may throw if canvas is tainted\r\n const img = this.document.createElement('img');\r\n img.src = dataUrl;\r\n img.style.maxWidth = '100%';\r\n\r\n // Preserve displayed size (not just bitmap size)\r\n const rect = canvasElm.getBoundingClientRect();\r\n if (rect.width) img.style.width = `${rect.width}px`;\r\n if (rect.height) img.style.height = `${rect.height}px`;\r\n\r\n return img;\r\n } catch (err) {\r\n console.warn(`Canvas conversion failed for ${canvasElm}. Likely the canvas is tainted:`, err);\r\n // If toDataURL() fails (e.g., tainted canvas), keep canvas as-is in print output\r\n return null;\r\n }\r\n }\r\n\r\n /**\r\n * Includes canvas contents in the print section via img tags.\r\n *\r\n * @private\r\n * @param source\r\n * @param clone\r\n */\r\n private updateCanvasToImage(source: HTMLElement, clone: HTMLElement): void {\r\n const sourceCanvases = source.querySelectorAll('canvas');\r\n const cloneCanvases = clone.querySelectorAll('canvas');\r\n\r\n for (let i = 0; i < sourceCanvases.length; i++) {\r\n const srcCanvas = sourceCanvases[i];\r\n const cloneCanvas = cloneCanvases[i];\r\n const img = this.canvasToImageHtml(srcCanvas);\r\n if (img) {\r\n cloneCanvas.replaceWith(img);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Retrieves the HTML content of a specified printing section.\r\n *\r\n * @param {string} printSectionId - Id of the printing section.\r\n * @returns {string | null} - HTML content of the printing section, or null if not found.\r\n * @private\r\n */\r\n private getHtmlContents(printSectionId: string): string | null {\r\n const sourceElm = this.document.getElementById(printSectionId);\r\n if (!sourceElm) return null;\r\n\r\n const cloneElm = sourceElm.cloneNode(true) as HTMLElement; // cloneNode(true) deep clones subtree\r\n\r\n this.syncFormValues(sourceElm, cloneElm);\r\n this.updateCanvasToImage(sourceElm, cloneElm);\r\n\r\n return cloneElm.innerHTML;\r\n }\r\n\r\n /**\r\n * Retrieves the HTML content of elements with the specified tag.\r\n *\r\n * @param {keyof HTMLElementTagNameMap} tag - HTML tag name.\r\n * @returns {string} - Concatenated outerHTML of elements with the specified tag.\r\n * @private\r\n */\r\n private getElementTag(tag: keyof HTMLElementTagNameMap): string {\r\n const html: string[] = [];\r\n const elements = this.document.getElementsByTagName(tag);\r\n for (const el of Array.from(elements)) {\r\n html.push((el as Element).outerHTML);\r\n }\r\n return html.join('\\r\\n');\r\n }\r\n\r\n //#endregion\r\n\r\n protected notifyPrintComplete() {\r\n this.printComplete.next();\r\n }\r\n\r\n /**\r\n * Prints the specified content using the provided print options.\r\n *\r\n * @public\r\n * @param printOptionInput - Options for printing.\r\n */\r\n protected print(printOptionInput?: Partial<PrintOptions>): void {\r\n const printOptions = new PrintOptions(printOptionInput);\r\n if (printOptions.printMethod === 'iframe') {\r\n this.printWithIframe(printOptions);\r\n } else {\r\n this.printWithWindow(printOptions);\r\n }\r\n }\r\n\r\n protected printWithWindow(printOptions: PrintOptions) {\r\n // If the openNewTab option is set to true, then set the popOut option to an empty string\r\n // This will cause the print dialog to open in a new tab.\r\n const popOut = printOptions.printMethod === 'tab' ? '' : 'top=0,left=0,height=auto,width=auto';\r\n\r\n const popupWin = window.open('', '_blank', popOut);\r\n\r\n if (!popupWin) {\r\n // the popup window could not be opened.\r\n console.error('Could not open print window.');\r\n return;\r\n }\r\n\r\n popupWin.document.open();\r\n // Create the HTML structure\r\n this.buildPrintDocument(popupWin.document, printOptions);\r\n\r\n popupWin.document.close();\r\n\r\n // Listen for the window closing\r\n const checkClosedInterval = setInterval(() => {\r\n if (popupWin.closed) {\r\n clearInterval(checkClosedInterval);\r\n this.notifyPrintComplete();\r\n }\r\n }, 500);\r\n\r\n popupWin.addEventListener('load', () => {\r\n if (!printOptions.previewOnly) {\r\n setTimeout(() => {\r\n popupWin.print();\r\n if (printOptions.closeWindow) popupWin.close();\r\n }, printOptions.printDelay || 0);\r\n }\r\n });\r\n }\r\n\r\n private printWithIframe(printOptions: PrintOptions): void {\r\n if (this._iframeElement) {\r\n this._iframeElement.remove();\r\n }\r\n this._iframeElement = this.document.createElement('iframe');\r\n const iframe = this._iframeElement;\r\n iframe.id = 'print-iframe-' + new Date().getTime();\r\n iframe.style.position = 'absolute';\r\n iframe.style.left = '-9999px';\r\n iframe.style.top = '-9999px';\r\n iframe.style.width = '0px';\r\n iframe.style.height = '0px';\r\n iframe.ariaHidden = 'true';\r\n\r\n this.document.body.appendChild(iframe);\r\n\r\n const iframeDoc = iframe.contentDocument || iframe.contentWindow?.document;\r\n if (!iframeDoc) {\r\n console.error('Could not access iframe document.');\r\n this.document.body.removeChild(iframe);\r\n return;\r\n }\r\n\r\n iframeDoc.open();\r\n const success = this.buildPrintDocument(iframeDoc, printOptions);\r\n if (!success) {\r\n iframeDoc.close();\r\n this.document.body.removeChild(iframe);\r\n return;\r\n }\r\n iframeDoc.close();\r\n\r\n iframe.onload = () => {\r\n const printWindow = iframe.contentWindow;\r\n if (!printWindow) {\r\n console.error('Could not access iframe window.');\r\n this.document.body.removeChild(iframe);\r\n return;\r\n }\r\n\r\n setTimeout(() => {\r\n if (printOptions.previewOnly) {\r\n return;\r\n }\r\n printWindow.focus();\r\n printWindow.print();\r\n\r\n const mediaQueryList = printWindow.matchMedia('print');\r\n const listener = (mql: MediaQueryListEvent) => {\r\n if (!mql.matches) {\r\n this.notifyPrintComplete();\r\n mediaQueryList.removeEventListener('change', listener);\r\n }\r\n };\r\n\r\n mediaQueryList.addEventListener('change', listener);\r\n }, printOptions.printDelay || 0);\r\n };\r\n }\r\n\r\n private prepareDocumentComponents(printOptions: PrintOptions) {\r\n let styles = '';\r\n let links = '';\r\n const baseTag = this.getElementTag('base');\r\n\r\n if (printOptions.useExistingCss) {\r\n styles = this.getElementTag('style');\r\n links = this.getElementTag('link');\r\n }\r\n\r\n const printContents = this.getHtmlContents(printOptions.printSectionId);\r\n\r\n return { styles, links, baseTag, printContents };\r\n }\r\n\r\n private buildPrintDocument(doc: Document, printOptions: PrintOptions): boolean {\r\n const components = this.prepareDocumentComponents(printOptions);\r\n\r\n if (!components.printContents) {\r\n console.error(`Print section with id \"${printOptions.printSectionId}\" not found.`);\r\n return false;\r\n }\r\n\r\n const html = doc.createElement('html');\r\n const head = doc.createElement('head');\r\n const body = doc.createElement('body');\r\n\r\n // Set title\r\n const title = doc.createElement('title');\r\n title.textContent = printOptions.printTitle || '';\r\n head.appendChild(title);\r\n\r\n // Add all head content\r\n if (components.baseTag) {\r\n head.innerHTML += components.baseTag;\r\n }\r\n head.innerHTML += this.returnStyleValues();\r\n head.innerHTML += this.returnStyleSheetLinkTags();\r\n head.innerHTML += components.styles;\r\n head.innerHTML += components.links;\r\n\r\n // Set body class and content\r\n if (printOptions.bodyClass) body.className = printOptions.bodyClass;\r\n body.innerHTML += components.printContents;\r\n\r\n // Assemble document\r\n html.appendChild(head);\r\n html.appendChild(body);\r\n doc.appendChild(html);\r\n\r\n return true;\r\n }\r\n}\r\n","import { Directive, Input, output } from '@angular/core';\r\nimport { PrintBase, PrintStyle } from './ngx-print.base';\r\nimport { PrintOptions } from './print-options';\r\nimport { take } from 'rxjs';\r\n\r\n@Directive({\r\n selector: '[ngxPrint]',\r\n standalone: true,\r\n host: {\r\n '(click)': 'print()',\r\n },\r\n})\r\nexport class NgxPrintDirective extends PrintBase {\r\n private printOptions = new PrintOptions();\r\n\r\n /**\r\n * Prevents the print dialog from opening on the window\r\n *\r\n * @memberof NgxPrintDirective\r\n */\r\n @Input() set previewOnly(value: boolean) {\r\n this.printOptions = { ...this.printOptions, previewOnly: value };\r\n }\r\n\r\n /**\r\n *\r\n *\r\n * @memberof NgxPrintDirective\r\n */\r\n @Input() set printSectionId(value: string) {\r\n this.printOptions = { ...this.printOptions, printSectionId: value };\r\n }\r\n\r\n /**\r\n *\r\n *\r\n * @memberof NgxPrintDirective\r\n */\r\n @Input() set printTitle(value: string) {\r\n this.printOptions = { ...this.printOptions, printTitle: value };\r\n }\r\n\r\n /**\r\n *\r\n *\r\n * @memberof NgxPrintDirective\r\n */\r\n @Input() set useExistingCss(value: boolean) {\r\n this.printOptions = { ...this.printOptions, useExistingCss: value };\r\n }\r\n\r\n /**\r\n * A delay in milliseconds to force the print dialog to wait before opened. Default: 0\r\n *\r\n * @memberof NgxPrintDirective\r\n */\r\n @Input() set printDelay(value: number) {\r\n this.printOptions = { ...this.printOptions, printDelay: value };\r\n }\r\n\r\n /**\r\n * Whether to close the window after print() returns.\r\n *\r\n */\r\n @Input() set closeWindow(value: boolean) {\r\n this.printOptions = { ...this.printOptions, closeWindow: value };\r\n }\r\n\r\n /**\r\n * Class attribute to apply to the body element.\r\n *\r\n */\r\n @Input() set bodyClass(value: string) {\r\n this.printOptions = { ...this.printOptions, bodyClass: value };\r\n }\r\n\r\n /**\r\n * Which PrintMethod (iframe/window/tab) to use.\r\n *\r\n */\r\n @Input() set printMethod(value: typeof PrintOptions.prototype.printMethod) {\r\n this.printOptions = { ...this.printOptions, printMethod: value };\r\n }\r\n\r\n /**\r\n *\r\n *\r\n * @memberof NgxPrintDirective\r\n */\r\n @Input()\r\n set printStyle(values: PrintStyle) {\r\n super.setPrintStyle(values);\r\n }\r\n\r\n /**\r\n * @memberof NgxPrintDirective\r\n * @param cssList\r\n */\r\n @Input()\r\n set styleSheetFile(cssList: string) {\r\n super.setStyleSheetFile(cssList);\r\n }\r\n\r\n /**\r\n *\r\n *\r\n * @memberof NgxPrintDirective\r\n */\r\n public override print(): void {\r\n super.print(this.printOptions);\r\n this.printComplete.pipe(take(1)).subscribe(() => {\r\n this.printCompleted.emit();\r\n });\r\n }\r\n\r\n readonly printCompleted = output<void>();\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { NgxPrintDirective } from './ngx-print.directive';\r\n\r\n@NgModule({\r\n imports: [NgxPrintDirective],\r\n exports: [NgxPrintDirective],\r\n})\r\nexport class NgxPrintModule {}\r\n","import { Injectable } from '@angular/core';\r\nimport { PrintBase, PrintStyle } from './ngx-print.base';\r\nimport { PrintOptions } from './print-options';\r\n\r\n/**\r\n * Service for handling printing functionality in Angular applications.\r\n * Extends the base printing class (PrintBase).\r\n *\r\n * @export\r\n * @class NgxPrintService\r\n * @extends {PrintBase}\r\n */\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class NgxPrintService extends PrintBase {\r\n printComplete$ = this.printComplete.asObservable();\r\n\r\n /**\r\n * Initiates the printing process using the provided print options.\r\n *\r\n * @param {PrintOptions} printOptions - Options for configuring the printing process.\r\n * @memberof NgxPrintService\r\n * @returns {void}\r\n */\r\n public override print(printOptions?: Partial<PrintOptions>): void {\r\n // Call the print method in the parent class\r\n super.print(printOptions);\r\n }\r\n\r\n /**\r\n * Sets the print style for the printing process.\r\n *\r\n * @param {{ [key: string]: { [key: string]: string } }} values - A dictionary representing the print styles.\r\n * @memberof NgxPrintService\r\n * @setter\r\n */\r\n set printStyle(values: PrintStyle) {\r\n super.setPrintStyle(values);\r\n }\r\n\r\n /**\r\n * Sets the stylesheet file for the printing process.\r\n *\r\n * @param {string} cssList - A string representing the path to the stylesheet file.\r\n * @memberof NgxPrintService\r\n * @setter\r\n */\r\n set styleSheetFile(cssList: string) {\r\n super.setStyleSheetFile(cssList);\r\n }\r\n}\r\n","/*\r\n * Public API Surface of ngx-print\r\n */\r\nexport { NgxPrintDirective } from './lib/ngx-print.directive';\r\nexport { NgxPrintModule } from './lib/ngx-print.module';\r\nexport { NgxPrintService } from './lib/ngx-print.service';\r\nexport { PrintOptions } from './lib/print-options';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ngx-print",
|
|
3
|
-
"version": "
|
|
4
|
-
"description": "Plug n' Play Angular
|
|
3
|
+
"version": "22.0.0",
|
|
4
|
+
"description": "Plug n' Play Angular directive to print your stuff",
|
|
5
5
|
"author": "https://github.com/ngx-print/ngx-print/graphs/contributors",
|
|
6
6
|
"repository": {
|
|
7
7
|
"type": "git",
|
|
@@ -37,6 +37,7 @@
|
|
|
37
37
|
}
|
|
38
38
|
},
|
|
39
39
|
"sideEffects": false,
|
|
40
|
+
"type": "module",
|
|
40
41
|
"dependencies": {
|
|
41
42
|
"tslib": "^2.3.0"
|
|
42
43
|
}
|
package/types/ngx-print.d.ts
CHANGED
|
@@ -14,6 +14,12 @@ declare class PrintOptions {
|
|
|
14
14
|
constructor(options?: Partial<PrintOptions>);
|
|
15
15
|
}
|
|
16
16
|
|
|
17
|
+
/** For example:
|
|
18
|
+
* {
|
|
19
|
+
* 'h2': { 'border': 'solid 1px' },
|
|
20
|
+
* 'h1': { 'color': 'red', 'border': '1px solid' },
|
|
21
|
+
* */
|
|
22
|
+
type PrintStyle = Record<string, Record<string, string>>;
|
|
17
23
|
declare class PrintBase {
|
|
18
24
|
private document;
|
|
19
25
|
private nonce;
|
|
@@ -27,11 +33,7 @@ declare class PrintBase {
|
|
|
27
33
|
* @param {Object} values - Key-value pairs representing print styles.
|
|
28
34
|
* @protected
|
|
29
35
|
*/
|
|
30
|
-
protected setPrintStyle(values:
|
|
31
|
-
[key: string]: {
|
|
32
|
-
[key: string]: string;
|
|
33
|
-
};
|
|
34
|
-
}): void;
|
|
36
|
+
protected setPrintStyle(values: PrintStyle): void;
|
|
35
37
|
/**
|
|
36
38
|
*
|
|
37
39
|
*
|
|
@@ -155,11 +157,7 @@ declare class NgxPrintDirective extends PrintBase {
|
|
|
155
157
|
*
|
|
156
158
|
* @memberof NgxPrintDirective
|
|
157
159
|
*/
|
|
158
|
-
set printStyle(values:
|
|
159
|
-
[key: string]: {
|
|
160
|
-
[key: string]: string;
|
|
161
|
-
};
|
|
162
|
-
});
|
|
160
|
+
set printStyle(values: PrintStyle);
|
|
163
161
|
/**
|
|
164
162
|
* @memberof NgxPrintDirective
|
|
165
163
|
* @param cssList
|
|
@@ -207,11 +205,7 @@ declare class NgxPrintService extends PrintBase {
|
|
|
207
205
|
* @memberof NgxPrintService
|
|
208
206
|
* @setter
|
|
209
207
|
*/
|
|
210
|
-
set printStyle(values:
|
|
211
|
-
[key: string]: {
|
|
212
|
-
[key: string]: string;
|
|
213
|
-
};
|
|
214
|
-
});
|
|
208
|
+
set printStyle(values: PrintStyle);
|
|
215
209
|
/**
|
|
216
210
|
* Sets the stylesheet file for the printing process.
|
|
217
211
|
*
|
package/types/ngx-print.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngx-print.d.ts","sources":["../../../src/lib/print-options.ts","../../../src/lib/ngx-print.base.ts","../../../src/lib/ngx-print.directive.ts","../../../src/lib/ngx-print.module.ts","../../../src/lib/ngx-print.service.ts"],"
|
|
1
|
+
{"version":3,"file":"ngx-print.d.ts","sources":["../../../src/lib/print-options.ts","../../../src/lib/ngx-print.base.ts","../../../src/lib/ngx-print.directive.ts","../../../src/lib/ngx-print.module.ts","../../../src/lib/ngx-print.service.ts"],"mappings":";;;;AAAA,cAAa,YAAY;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEY,0BAAU,OAAO,CAAC,YAAY;AAK3C;;ACXD;;;;AAIO;AACD,KAAM,UAAU,GAAG,MAAM,SAAS,MAAM;AAE9C,cAGa,SAAS;;;;;;6BAOG,OAAA;AAGvB;;;;;AAKG;AACH,oCAAgC,UAAU;AAO1C;;;;;;;AAOG;AACI;AAKP;;;;AAIG;AACH;AAIA;;;;;AAKG;AAEH;AAYA;AAkCA;;;;;;AAMG;AACH;AAoBA;;;;;;AAMG;AACH;AAcA;;;;;;AAMG;AACH;AAYA;;;;;;AAMG;AACH;AAWA;AAIA;;;;;AAKG;uCACgC,OAAO,CAAC,YAAY;AASvD,4CAAwC,YAAY;AAqCpD;AA4DA;AAeA;yCA1TW,SAAS;6CAAT,SAAS;AA+VrB;;ACxWD,cAOa,iBAAkB,SAAQ,SAAS;;AAG9C;;;;AAIG;AACH;AAIA;;;;AAIG;AACH;AAIA;;;;AAIG;AACH;AAIA;;;;AAIG;AACH;AAIA;;;;AAIG;AACH;AAIA;;;AAGG;AACH;AAIA;;;AAGG;AACH;AAIA;;;AAGG;kCACoC,YAAY,CAAC,SAAS,CAAC,WAAW;AAIzE;;;;AAIG;AACH,2BACuB,UAAU;AAIjC;;;AAGG;AACH;AAKA;;;;AAIG;AACa;6BAOOA,EAAA,CAAA,gBAAA;yCAvGZ,iBAAiB;2CAAjB,iBAAiB;AAwG7B;;ACjHD,cAIa,cAAc;yCAAd,cAAc;0CAAd,cAAc,iBAAAC,iBAAA,WAAAA,iBAAA;0CAAd,cAAc;AAAG;;ACH9B;;;;;;;AAOG;AACH,cAGa,eAAgB,SAAQ,SAAS;AAC5C,oBAAc,IAAA,CAAA,UAAA;AAEd;;;;;;AAMG;yBACkC,OAAO,CAAC,YAAY;AAKzD;;;;;;AAMG;AACH,2BAAuB,UAAU;AAIjC;;;;;;AAMG;AACH;yCAjCW,eAAe;6CAAf,eAAe;AAoC3B;;;;","names":["_angular_core","i1.NgxPrintDirective"]}
|