Committed by
David PHAM-VAN
Save in an isolate when available
Showing
5 changed files
with
20 additions
and
1 deletions
@@ -251,11 +251,13 @@ class PdfDocument { | @@ -251,11 +251,13 @@ class PdfDocument { | ||
251 | 251 | ||
252 | /// Generate the PDF document as a memory file | 252 | /// Generate the PDF document as a memory file |
253 | Future<Uint8List> save() async { | 253 | Future<Uint8List> save() async { |
254 | + return pdfCompute(() async { | ||
254 | final os = PdfStream(); | 255 | final os = PdfStream(); |
255 | if (prev != null) { | 256 | if (prev != null) { |
256 | os.putBytes(prev!.bytes); | 257 | os.putBytes(prev!.bytes); |
257 | } | 258 | } |
258 | await _write(os); | 259 | await _write(os); |
259 | return os.output(); | 260 | return os.output(); |
261 | + }); | ||
260 | } | 262 | } |
261 | } | 263 | } |
@@ -20,3 +20,10 @@ import '../format/object_base.dart'; | @@ -20,3 +20,10 @@ import '../format/object_base.dart'; | ||
20 | 20 | ||
21 | /// Zip compression function | 21 | /// Zip compression function |
22 | DeflateCallback defaultDeflate = const ZLibEncoder().encode; | 22 | DeflateCallback defaultDeflate = const ZLibEncoder().encode; |
23 | + | ||
24 | +/// The dart:html implementation of [pdfCompute]. | ||
25 | +@pragma('dart2js:tryInline') | ||
26 | +Future<R> pdfCompute<R>(Future<R> Function() computation) async { | ||
27 | + await null; | ||
28 | + return computation(); | ||
29 | +} |
@@ -15,8 +15,14 @@ | @@ -15,8 +15,14 @@ | ||
15 | */ | 15 | */ |
16 | 16 | ||
17 | import 'dart:io'; | 17 | import 'dart:io'; |
18 | +import 'dart:isolate'; | ||
18 | 19 | ||
19 | import '../format/object_base.dart'; | 20 | import '../format/object_base.dart'; |
20 | 21 | ||
21 | /// Zip compression function | 22 | /// Zip compression function |
22 | DeflateCallback defaultDeflate = zlib.encode; | 23 | DeflateCallback defaultDeflate = zlib.encode; |
24 | + | ||
25 | +/// The dart:io implementation of [pdfCompute]. | ||
26 | +@pragma('vm:prefer-inline') | ||
27 | +Future<R> pdfCompute<R>(Future<R> Function() computation) async => | ||
28 | + Isolate.run<R>(computation, debugName: 'dart_pdf'); |
-
Please register or login to post a comment