Showing
18 changed files
with
98 additions
and
71 deletions
@@ -12,6 +12,7 @@ | @@ -12,6 +12,7 @@ | ||
12 | - Fix context painting empty Table | 12 | - Fix context painting empty Table |
13 | - Fix Text decoration placements | 13 | - Fix Text decoration placements |
14 | - Improve image buffer management | 14 | - Improve image buffer management |
15 | +- Optimize memory footprint | ||
15 | 16 | ||
16 | ## 1.5.0 | 17 | ## 1.5.0 |
17 | 18 |
@@ -18,9 +18,9 @@ | @@ -18,9 +18,9 @@ | ||
18 | 18 | ||
19 | part of pdf; | 19 | part of pdf; |
20 | 20 | ||
21 | -class Ascii85Encoder extends Converter<List<int>, List<int>> { | 21 | +class Ascii85Encoder extends Converter<Uint8List, Uint8List> { |
22 | @override | 22 | @override |
23 | - List<int> convert(List<int> input) { | 23 | + Uint8List convert(Uint8List input) { |
24 | final Uint8List output = Uint8List(_maxEncodedLen(input.length) + 2); | 24 | final Uint8List output = Uint8List(_maxEncodedLen(input.length) + 2); |
25 | 25 | ||
26 | int outputOffset = 0; | 26 | int outputOffset = 0; |
@@ -35,7 +35,7 @@ abstract class PdfDataType { | @@ -35,7 +35,7 @@ abstract class PdfDataType { | ||
35 | return String.fromCharCodes(toStream().output()); | 35 | return String.fromCharCodes(toStream().output()); |
36 | } | 36 | } |
37 | 37 | ||
38 | - List<int> toList() { | 38 | + Uint8List toList() { |
39 | return toStream().output(); | 39 | return toStream().output(); |
40 | } | 40 | } |
41 | } | 41 | } |
@@ -153,8 +153,8 @@ class PdfSecString extends PdfString { | @@ -153,8 +153,8 @@ class PdfSecString extends PdfString { | ||
153 | return super.output(s); | 153 | return super.output(s); |
154 | } | 154 | } |
155 | 155 | ||
156 | - final List<int> enc = object.pdfDocument.encryption.encrypt(value, object); | ||
157 | - _output(s, Uint8List.fromList(enc)); | 156 | + final Uint8List enc = object.pdfDocument.encryption.encrypt(value, object); |
157 | + _output(s, enc); | ||
158 | } | 158 | } |
159 | } | 159 | } |
160 | 160 |
@@ -116,14 +116,14 @@ class PdfDocument { | @@ -116,14 +116,14 @@ class PdfDocument { | ||
116 | final Set<PdfFont> fonts = <PdfFont>{}; | 116 | final Set<PdfFont> fonts = <PdfFont>{}; |
117 | 117 | ||
118 | /// Generates the document ID | 118 | /// Generates the document ID |
119 | - List<int> _documentID; | ||
120 | - List<int> get documentID { | 119 | + Uint8List _documentID; |
120 | + Uint8List get documentID { | ||
121 | if (_documentID == null) { | 121 | if (_documentID == null) { |
122 | final math.Random rnd = math.Random(); | 122 | final math.Random rnd = math.Random(); |
123 | - _documentID = sha256 | 123 | + _documentID = Uint8List.fromList(sha256 |
124 | .convert(DateTime.now().toIso8601String().codeUnits + | 124 | .convert(DateTime.now().toIso8601String().codeUnits + |
125 | List<int>.generate(32, (_) => rnd.nextInt(256))) | 125 | List<int>.generate(32, (_) => rnd.nextInt(256))) |
126 | - .bytes; | 126 | + .bytes); |
127 | } | 127 | } |
128 | 128 | ||
129 | return _documentID; | 129 | return _documentID; |
@@ -182,7 +182,7 @@ class PdfDocument { | @@ -182,7 +182,7 @@ class PdfDocument { | ||
182 | pos.close(); | 182 | pos.close(); |
183 | } | 183 | } |
184 | 184 | ||
185 | - List<int> save() { | 185 | + Uint8List save() { |
186 | final PdfStream os = PdfStream(); | 186 | final PdfStream os = PdfStream(); |
187 | _write(os); | 187 | _write(os); |
188 | return os.output(); | 188 | return os.output(); |
@@ -19,5 +19,5 @@ part of pdf; | @@ -19,5 +19,5 @@ part of pdf; | ||
19 | abstract class PdfEncryption extends PdfObject { | 19 | abstract class PdfEncryption extends PdfObject { |
20 | PdfEncryption(PdfDocument pdfDocument) : super(pdfDocument, null); | 20 | PdfEncryption(PdfDocument pdfDocument) : super(pdfDocument, null); |
21 | 21 | ||
22 | - List<int> encrypt(List<int> input, PdfObject object); | 22 | + Uint8List encrypt(Uint8List input, PdfObject object); |
23 | } | 23 | } |
@@ -35,7 +35,7 @@ class PdfObjectStream extends PdfObject { | @@ -35,7 +35,7 @@ class PdfObjectStream extends PdfObject { | ||
35 | /// defines if the stream needs to be converted to ascii85 | 35 | /// defines if the stream needs to be converted to ascii85 |
36 | final bool isBinary; | 36 | final bool isBinary; |
37 | 37 | ||
38 | - List<int> _data; | 38 | + Uint8List _data; |
39 | 39 | ||
40 | @override | 40 | @override |
41 | void _prepare() { | 41 | void _prepare() { |
@@ -20,30 +20,53 @@ part of pdf; | @@ -20,30 +20,53 @@ part of pdf; | ||
20 | 20 | ||
21 | class PdfStream { | 21 | class PdfStream { |
22 | static const int precision = 5; | 22 | static const int precision = 5; |
23 | - final List<int> _stream = <int>[]; | 23 | + |
24 | + static const int _grow = 65536; | ||
25 | + | ||
26 | + Uint8List _stream = Uint8List(_grow); | ||
27 | + | ||
28 | + int _offset = 0; | ||
29 | + | ||
30 | + void _ensureCapacity(int size) { | ||
31 | + if (_stream.length - _offset >= size) { | ||
32 | + return; | ||
33 | + } | ||
34 | + | ||
35 | + final int newSize = math.max(_offset + size + _grow, _offset * 2); | ||
36 | + final Uint8List newBuffer = Uint8List(newSize); | ||
37 | + newBuffer.setAll(0, _stream); | ||
38 | + _stream = newBuffer; | ||
39 | + } | ||
40 | + | ||
41 | + void putByte(int s) { | ||
42 | + _ensureCapacity(1); | ||
43 | + _stream[_offset++] = s; | ||
44 | + } | ||
45 | + | ||
46 | + void putBytes(List<int> s) { | ||
47 | + _ensureCapacity(s.length); | ||
48 | + _stream.setAll(_offset, s); | ||
49 | + _offset += s.length; | ||
50 | + } | ||
24 | 51 | ||
25 | void putStream(PdfStream s) { | 52 | void putStream(PdfStream s) { |
26 | - _stream.addAll(s._stream); | 53 | + putBytes(s._stream); |
27 | } | 54 | } |
28 | 55 | ||
56 | + int get offset => _offset; | ||
57 | + | ||
58 | + Uint8List output() => _stream.sublist(0, _offset); | ||
59 | + | ||
29 | void putString(String s) { | 60 | void putString(String s) { |
30 | for (int codeUnit in s.codeUnits) { | 61 | for (int codeUnit in s.codeUnits) { |
31 | if (codeUnit <= 0x7f) { | 62 | if (codeUnit <= 0x7f) { |
32 | - _stream.add(codeUnit); | 63 | + putByte(codeUnit); |
33 | } else { | 64 | } else { |
34 | - _stream.add(0x20); | 65 | + putByte(0x20); |
35 | } | 66 | } |
36 | } | 67 | } |
37 | } | 68 | } |
38 | 69 | ||
39 | - void putByte(int s) { | ||
40 | - _stream.add(s); | ||
41 | - } | ||
42 | - | ||
43 | - void putBytes(List<int> s) { | ||
44 | - _stream.addAll(s); | ||
45 | - } | ||
46 | - | ||
47 | void putNum(double d) { | 70 | void putNum(double d) { |
48 | assert(d != double.infinity); | 71 | assert(d != double.infinity); |
49 | putString(d.toStringAsFixed(precision)); | 72 | putString(d.toStringAsFixed(precision)); |
@@ -62,44 +85,40 @@ class PdfStream { | @@ -62,44 +85,40 @@ class PdfStream { | ||
62 | for (int c in s) { | 85 | for (int c in s) { |
63 | switch (c) { | 86 | switch (c) { |
64 | case 0x0a: // \n Line feed (LF) | 87 | case 0x0a: // \n Line feed (LF) |
65 | - _stream.add(0x5c); | ||
66 | - _stream.add(0x6e); | 88 | + putByte(0x5c); |
89 | + putByte(0x6e); | ||
67 | break; | 90 | break; |
68 | case 0x0d: // \r Carriage return (CR) | 91 | case 0x0d: // \r Carriage return (CR) |
69 | - _stream.add(0x5c); | ||
70 | - _stream.add(0x72); | 92 | + putByte(0x5c); |
93 | + putByte(0x72); | ||
71 | break; | 94 | break; |
72 | case 0x09: // \t Horizontal tab (HT) | 95 | case 0x09: // \t Horizontal tab (HT) |
73 | - _stream.add(0x5c); | ||
74 | - _stream.add(0x74); | 96 | + putByte(0x5c); |
97 | + putByte(0x74); | ||
75 | break; | 98 | break; |
76 | case 0x08: // \b Backspace (BS) | 99 | case 0x08: // \b Backspace (BS) |
77 | - _stream.add(0x5c); | ||
78 | - _stream.add(0x62); | 100 | + putByte(0x5c); |
101 | + putByte(0x62); | ||
79 | break; | 102 | break; |
80 | case 0x0c: // \f Form feed (FF) | 103 | case 0x0c: // \f Form feed (FF) |
81 | - _stream.add(0x5c); | ||
82 | - _stream.add(0x66); | 104 | + putByte(0x5c); |
105 | + putByte(0x66); | ||
83 | break; | 106 | break; |
84 | case 0x28: // \( Left parenthesis | 107 | case 0x28: // \( Left parenthesis |
85 | - _stream.add(0x5c); | ||
86 | - _stream.add(0x28); | 108 | + putByte(0x5c); |
109 | + putByte(0x28); | ||
87 | break; | 110 | break; |
88 | case 0x29: // \) Right parenthesis | 111 | case 0x29: // \) Right parenthesis |
89 | - _stream.add(0x5c); | ||
90 | - _stream.add(0x29); | 112 | + putByte(0x5c); |
113 | + putByte(0x29); | ||
91 | break; | 114 | break; |
92 | case 0x5c: // \\ Backslash | 115 | case 0x5c: // \\ Backslash |
93 | - _stream.add(0x5c); | ||
94 | - _stream.add(0x5c); | 116 | + putByte(0x5c); |
117 | + putByte(0x5c); | ||
95 | break; | 118 | break; |
96 | default: | 119 | default: |
97 | - _stream.add(c); | 120 | + putByte(c); |
98 | } | 121 | } |
99 | } | 122 | } |
100 | } | 123 | } |
101 | - | ||
102 | - int get offset => _stream.length; | ||
103 | - | ||
104 | - List<int> output() => _stream; | ||
105 | } | 124 | } |
@@ -66,7 +66,7 @@ class Document { | @@ -66,7 +66,7 @@ class Document { | ||
66 | _pages.add(page); | 66 | _pages.add(page); |
67 | } | 67 | } |
68 | 68 | ||
69 | - List<int> save() { | 69 | + Uint8List save() { |
70 | if (!_paint) { | 70 | if (!_paint) { |
71 | for (Page page in _pages) { | 71 | for (Page page in _pages) { |
72 | page.postProcess(this); | 72 | page.postProcess(this); |
@@ -61,7 +61,7 @@ void main() { | @@ -61,7 +61,7 @@ void main() { | ||
61 | final ReceivePort receivePort = ReceivePort(); | 61 | final ReceivePort receivePort = ReceivePort(); |
62 | 62 | ||
63 | receivePort.listen((dynamic data) async { | 63 | receivePort.listen((dynamic data) async { |
64 | - if (data is List<int>) { | 64 | + if (data is Uint8List) { |
65 | print('Received a ${data.length} bytes PDF'); | 65 | print('Received a ${data.length} bytes PDF'); |
66 | final File file = File('isolate.pdf'); | 66 | final File file = File('isolate.pdf'); |
67 | await file.writeAsBytes(data); | 67 | await file.writeAsBytes(data); |
@@ -15,9 +15,10 @@ | @@ -15,9 +15,10 @@ | ||
15 | */ | 15 | */ |
16 | 16 | ||
17 | import 'dart:async'; | 17 | import 'dart:async'; |
18 | +import 'dart:typed_data'; | ||
18 | 19 | ||
19 | import 'package:pdf/pdf.dart'; | 20 | import 'package:pdf/pdf.dart'; |
20 | 21 | ||
21 | /// Callback used to generate the Pdf document dynamically when the user | 22 | /// Callback used to generate the Pdf document dynamically when the user |
22 | /// changes the page settings: size and margins | 23 | /// changes the page settings: size and margins |
23 | -typedef LayoutCallback = FutureOr<List<int>> Function(PdfPageFormat format); | 24 | +typedef LayoutCallback = FutureOr<Uint8List> Function(PdfPageFormat format); |
@@ -15,6 +15,7 @@ | @@ -15,6 +15,7 @@ | ||
15 | */ | 15 | */ |
16 | 16 | ||
17 | import 'dart:async'; | 17 | import 'dart:async'; |
18 | +import 'dart:typed_data'; | ||
18 | 19 | ||
19 | import 'package:flutter/rendering.dart' show Rect; | 20 | import 'package:flutter/rendering.dart' show Rect; |
20 | import 'package:pdf/pdf.dart'; | 21 | import 'package:pdf/pdf.dart'; |
@@ -81,13 +82,13 @@ abstract class PrintingPlatform extends PlatformInterface { | @@ -81,13 +82,13 @@ abstract class PrintingPlatform extends PlatformInterface { | ||
81 | 82 | ||
82 | /// Displays a platform popup to share the Pdf document to another application | 83 | /// Displays a platform popup to share the Pdf document to another application |
83 | Future<bool> sharePdf( | 84 | Future<bool> sharePdf( |
84 | - List<int> bytes, | 85 | + Uint8List bytes, |
85 | String filename, | 86 | String filename, |
86 | Rect bounds, | 87 | Rect bounds, |
87 | ); | 88 | ); |
88 | 89 | ||
89 | /// Convert an html document to a pdf data | 90 | /// Convert an html document to a pdf data |
90 | - Future<List<int>> convertHtml( | 91 | + Future<Uint8List> convertHtml( |
91 | String html, | 92 | String html, |
92 | String baseUrl, | 93 | String baseUrl, |
93 | PdfPageFormat format, | 94 | PdfPageFormat format, |
@@ -95,7 +96,7 @@ abstract class PrintingPlatform extends PlatformInterface { | @@ -95,7 +96,7 @@ abstract class PrintingPlatform extends PlatformInterface { | ||
95 | 96 | ||
96 | /// Convert a Pdf document to bitmap images | 97 | /// Convert a Pdf document to bitmap images |
97 | Stream<PdfRaster> raster( | 98 | Stream<PdfRaster> raster( |
98 | - List<int> document, | 99 | + Uint8List document, |
99 | List<int> pages, | 100 | List<int> pages, |
100 | double dpi, | 101 | double dpi, |
101 | ); | 102 | ); |
@@ -54,7 +54,7 @@ class MethodChannelPrinting extends PrintingPlatform { | @@ -54,7 +54,7 @@ class MethodChannelPrinting extends PrintingPlatform { | ||
54 | marginBottom: call.arguments['marginBottom'], | 54 | marginBottom: call.arguments['marginBottom'], |
55 | ); | 55 | ); |
56 | 56 | ||
57 | - final List<int> bytes = await job.onLayout(format); | 57 | + final Uint8List bytes = await job.onLayout(format); |
58 | 58 | ||
59 | if (bytes == null) { | 59 | if (bytes == null) { |
60 | throw 'onLayout returned null'; | 60 | throw 'onLayout returned null'; |
@@ -186,7 +186,7 @@ class MethodChannelPrinting extends PrintingPlatform { | @@ -186,7 +186,7 @@ class MethodChannelPrinting extends PrintingPlatform { | ||
186 | onCompleted: Completer<bool>(), | 186 | onCompleted: Completer<bool>(), |
187 | )); | 187 | )); |
188 | 188 | ||
189 | - final List<int> bytes = await onLayout(format); | 189 | + final Uint8List bytes = await onLayout(format); |
190 | if (bytes == null) { | 190 | if (bytes == null) { |
191 | return false; | 191 | return false; |
192 | } | 192 | } |
@@ -205,7 +205,7 @@ class MethodChannelPrinting extends PrintingPlatform { | @@ -205,7 +205,7 @@ class MethodChannelPrinting extends PrintingPlatform { | ||
205 | 205 | ||
206 | @override | 206 | @override |
207 | Future<bool> sharePdf( | 207 | Future<bool> sharePdf( |
208 | - List<int> bytes, | 208 | + Uint8List bytes, |
209 | String filename, | 209 | String filename, |
210 | Rect bounds, | 210 | Rect bounds, |
211 | ) async { | 211 | ) async { |
@@ -221,10 +221,10 @@ class MethodChannelPrinting extends PrintingPlatform { | @@ -221,10 +221,10 @@ class MethodChannelPrinting extends PrintingPlatform { | ||
221 | } | 221 | } |
222 | 222 | ||
223 | @override | 223 | @override |
224 | - Future<List<int>> convertHtml( | 224 | + Future<Uint8List> convertHtml( |
225 | String html, String baseUrl, PdfPageFormat format) async { | 225 | String html, String baseUrl, PdfPageFormat format) async { |
226 | final PrintJob job = _newPrintJob(PrintJob( | 226 | final PrintJob job = _newPrintJob(PrintJob( |
227 | - onHtmlRendered: Completer<List<int>>(), | 227 | + onHtmlRendered: Completer<Uint8List>(), |
228 | )); | 228 | )); |
229 | 229 | ||
230 | final Map<String, dynamic> params = <String, dynamic>{ | 230 | final Map<String, dynamic> params = <String, dynamic>{ |
@@ -240,14 +240,14 @@ class MethodChannelPrinting extends PrintingPlatform { | @@ -240,14 +240,14 @@ class MethodChannelPrinting extends PrintingPlatform { | ||
240 | }; | 240 | }; |
241 | 241 | ||
242 | await _channel.invokeMethod<void>('convertHtml', params); | 242 | await _channel.invokeMethod<void>('convertHtml', params); |
243 | - final List<int> result = await job.onHtmlRendered.future; | 243 | + final Uint8List result = await job.onHtmlRendered.future; |
244 | _printJobs.remove(job.index); | 244 | _printJobs.remove(job.index); |
245 | return result; | 245 | return result; |
246 | } | 246 | } |
247 | 247 | ||
248 | @override | 248 | @override |
249 | Stream<PdfRaster> raster( | 249 | Stream<PdfRaster> raster( |
250 | - List<int> document, | 250 | + Uint8List document, |
251 | List<int> pages, | 251 | List<int> pages, |
252 | double dpi, | 252 | double dpi, |
253 | ) { | 253 | ) { |
@@ -15,6 +15,7 @@ | @@ -15,6 +15,7 @@ | ||
15 | */ | 15 | */ |
16 | 16 | ||
17 | import 'dart:async'; | 17 | import 'dart:async'; |
18 | +import 'dart:typed_data'; | ||
18 | 19 | ||
19 | import 'callback.dart'; | 20 | import 'callback.dart'; |
20 | import 'raster.dart'; | 21 | import 'raster.dart'; |
@@ -28,7 +29,7 @@ class PrintJob { | @@ -28,7 +29,7 @@ class PrintJob { | ||
28 | }); | 29 | }); |
29 | 30 | ||
30 | final LayoutCallback onLayout; | 31 | final LayoutCallback onLayout; |
31 | - final Completer<List<int>> onHtmlRendered; | 32 | + final Completer<Uint8List> onHtmlRendered; |
32 | final Completer<bool> onCompleted; | 33 | final Completer<bool> onCompleted; |
33 | final StreamController<PdfRaster> onPageRasterized; | 34 | final StreamController<PdfRaster> onPageRasterized; |
34 | 35 |
@@ -15,6 +15,7 @@ | @@ -15,6 +15,7 @@ | ||
15 | */ | 15 | */ |
16 | 16 | ||
17 | import 'dart:async'; | 17 | import 'dart:async'; |
18 | +import 'dart:typed_data'; | ||
18 | 19 | ||
19 | import 'package:flutter/rendering.dart' show Rect, Offset; | 20 | import 'package:flutter/rendering.dart' show Rect, Offset; |
20 | import 'package:meta/meta.dart'; | 21 | import 'package:meta/meta.dart'; |
@@ -83,7 +84,7 @@ mixin Printing { | @@ -83,7 +84,7 @@ mixin Printing { | ||
83 | /// Displays a platform popup to share the Pdf document to another application | 84 | /// Displays a platform popup to share the Pdf document to another application |
84 | static Future<bool> sharePdf({ | 85 | static Future<bool> sharePdf({ |
85 | @Deprecated('use bytes with document.save()') PdfDocument document, | 86 | @Deprecated('use bytes with document.save()') PdfDocument document, |
86 | - List<int> bytes, | 87 | + Uint8List bytes, |
87 | String filename = 'document.pdf', | 88 | String filename = 'document.pdf', |
88 | Rect bounds, | 89 | Rect bounds, |
89 | }) { | 90 | }) { |
@@ -105,7 +106,7 @@ mixin Printing { | @@ -105,7 +106,7 @@ mixin Printing { | ||
105 | } | 106 | } |
106 | 107 | ||
107 | /// Convert an html document to a pdf data | 108 | /// Convert an html document to a pdf data |
108 | - static Future<List<int>> convertHtml({ | 109 | + static Future<Uint8List> convertHtml({ |
109 | @required String html, | 110 | @required String html, |
110 | String baseUrl, | 111 | String baseUrl, |
111 | PdfPageFormat format = PdfPageFormat.standard, | 112 | PdfPageFormat format = PdfPageFormat.standard, |
@@ -134,7 +135,7 @@ mixin Printing { | @@ -134,7 +135,7 @@ mixin Printing { | ||
134 | } | 135 | } |
135 | 136 | ||
136 | static Stream<PdfRaster> raster( | 137 | static Stream<PdfRaster> raster( |
137 | - List<int> document, { | 138 | + Uint8List document, { |
138 | List<int> pages, | 139 | List<int> pages, |
139 | double dpi = PdfPageFormat.inch, | 140 | double dpi = PdfPageFormat.inch, |
140 | }) { | 141 | }) { |
@@ -150,7 +151,7 @@ mixin Printing { | @@ -150,7 +151,7 @@ mixin Printing { | ||
150 | @Deprecated('use Printing.layoutPdf(onLayout: (_) => document.save());') | 151 | @Deprecated('use Printing.layoutPdf(onLayout: (_) => document.save());') |
151 | static Future<void> printPdf({ | 152 | static Future<void> printPdf({ |
152 | @Deprecated('use bytes with document.save()') PdfDocument document, | 153 | @Deprecated('use bytes with document.save()') PdfDocument document, |
153 | - List<int> bytes, | 154 | + Uint8List bytes, |
154 | }) async { | 155 | }) async { |
155 | assert(document != null || bytes != null); | 156 | assert(document != null || bytes != null); |
156 | assert(!(document == null && bytes == null)); | 157 | assert(!(document == null && bytes == null)); |
@@ -56,7 +56,7 @@ class PrintingPlugin extends PrintingPlatform { | @@ -56,7 +56,7 @@ class PrintingPlugin extends PrintingPlatform { | ||
56 | String name, | 56 | String name, |
57 | PdfPageFormat format, | 57 | PdfPageFormat format, |
58 | ) async { | 58 | ) async { |
59 | - final List<int> result = await onLayout(format); | 59 | + final Uint8List result = await onLayout(format); |
60 | 60 | ||
61 | if (result == null || result.isEmpty) { | 61 | if (result == null || result.isEmpty) { |
62 | return false; | 62 | return false; |
@@ -83,7 +83,7 @@ class PrintingPlugin extends PrintingPlatform { | @@ -83,7 +83,7 @@ class PrintingPlugin extends PrintingPlatform { | ||
83 | final String pdfUrl = html.Url.createObjectUrl(pdfFile); | 83 | final String pdfUrl = html.Url.createObjectUrl(pdfFile); |
84 | final html.HtmlDocument doc = js.context['document']; | 84 | final html.HtmlDocument doc = js.context['document']; |
85 | 85 | ||
86 | - final html.IFrameElement frame = | 86 | + final html.Element frame = |
87 | doc.getElementById(_frameId) ?? doc.createElement('iframe'); | 87 | doc.getElementById(_frameId) ?? doc.createElement('iframe'); |
88 | frame.setAttribute( | 88 | frame.setAttribute( |
89 | 'style', | 89 | 'style', |
@@ -112,7 +112,7 @@ class PrintingPlugin extends PrintingPlatform { | @@ -112,7 +112,7 @@ class PrintingPlugin extends PrintingPlatform { | ||
112 | 112 | ||
113 | @override | 113 | @override |
114 | Future<bool> sharePdf( | 114 | Future<bool> sharePdf( |
115 | - List<int> bytes, | 115 | + Uint8List bytes, |
116 | String filename, | 116 | String filename, |
117 | Rect bounds, | 117 | Rect bounds, |
118 | ) async { | 118 | ) async { |
@@ -130,7 +130,7 @@ class PrintingPlugin extends PrintingPlatform { | @@ -130,7 +130,7 @@ class PrintingPlugin extends PrintingPlatform { | ||
130 | } | 130 | } |
131 | 131 | ||
132 | @override | 132 | @override |
133 | - Future<List<int>> convertHtml( | 133 | + Future<Uint8List> convertHtml( |
134 | String html, | 134 | String html, |
135 | String baseUrl, | 135 | String baseUrl, |
136 | PdfPageFormat format, | 136 | PdfPageFormat format, |
@@ -157,7 +157,7 @@ class PrintingPlugin extends PrintingPlatform { | @@ -157,7 +157,7 @@ class PrintingPlugin extends PrintingPlatform { | ||
157 | 157 | ||
158 | @override | 158 | @override |
159 | Stream<PdfRaster> raster( | 159 | Stream<PdfRaster> raster( |
160 | - List<int> document, | 160 | + Uint8List document, |
161 | List<int> pages, | 161 | List<int> pages, |
162 | double dpi, | 162 | double dpi, |
163 | ) { | 163 | ) { |
@@ -15,7 +15,7 @@ dependencies: | @@ -15,7 +15,7 @@ dependencies: | ||
15 | sdk: flutter | 15 | sdk: flutter |
16 | flutter_web_plugins: | 16 | flutter_web_plugins: |
17 | sdk: flutter | 17 | sdk: flutter |
18 | - pdf: ^1.3.15 | 18 | + pdf: ^1.6.0 |
19 | plugin_platform_interface: ^1.0.2 | 19 | plugin_platform_interface: ^1.0.2 |
20 | 20 | ||
21 | dev_dependencies: | 21 | dev_dependencies: |
@@ -14,6 +14,8 @@ | @@ -14,6 +14,8 @@ | ||
14 | * limitations under the License. | 14 | * limitations under the License. |
15 | */ | 15 | */ |
16 | 16 | ||
17 | +import 'dart:typed_data'; | ||
18 | + | ||
17 | import 'package:flutter_test/flutter_test.dart'; | 19 | import 'package:flutter_test/flutter_test.dart'; |
18 | import 'package:mockito/mockito.dart'; | 20 | import 'package:mockito/mockito.dart'; |
19 | import 'package:pdf/pdf.dart'; | 21 | import 'package:pdf/pdf.dart'; |
@@ -56,7 +58,7 @@ void main() { | @@ -56,7 +58,7 @@ void main() { | ||
56 | 58 | ||
57 | expect( | 59 | expect( |
58 | await Printing.sharePdf( | 60 | await Printing.sharePdf( |
59 | - bytes: <int>[], | 61 | + bytes: Uint8List(0), |
60 | ), | 62 | ), |
61 | null, | 63 | null, |
62 | ); | 64 | ); |
@@ -106,7 +108,7 @@ void main() { | @@ -106,7 +108,7 @@ void main() { | ||
106 | ); | 108 | ); |
107 | 109 | ||
108 | expect( | 110 | expect( |
109 | - Printing.raster(<int>[]), | 111 | + Printing.raster(Uint8List(0)), |
110 | null, | 112 | null, |
111 | ); | 113 | ); |
112 | }); | 114 | }); |
-
Please register or login to post a comment