Showing
6 changed files
with
97 additions
and
53 deletions
| @@ -25,6 +25,8 @@ import 'package:pdf/pdf.dart'; | @@ -25,6 +25,8 @@ import 'package:pdf/pdf.dart'; | ||
| 25 | import 'package:pdf/widgets.dart'; | 25 | import 'package:pdf/widgets.dart'; |
| 26 | import 'package:test/test.dart'; | 26 | import 'package:test/test.dart'; |
| 27 | 27 | ||
| 28 | +import 'utils.dart'; | ||
| 29 | + | ||
| 28 | class Message { | 30 | class Message { |
| 29 | Message(this.image, this.sendPort); | 31 | Message(this.image, this.sendPort); |
| 30 | 32 | ||
| @@ -32,16 +34,6 @@ class Message { | @@ -32,16 +34,6 @@ class Message { | ||
| 32 | final SendPort sendPort; | 34 | final SendPort sendPort; |
| 33 | } | 35 | } |
| 34 | 36 | ||
| 35 | -Future<Uint8List> download(String url) async { | ||
| 36 | - final HttpClient client = HttpClient(); | ||
| 37 | - final HttpClientRequest request = await client.getUrl(Uri.parse(url)); | ||
| 38 | - final HttpClientResponse response = await request.close(); | ||
| 39 | - final BytesBuilder builder = await response.fold( | ||
| 40 | - BytesBuilder(), (BytesBuilder b, List<int> d) => b..add(d)); | ||
| 41 | - final List<int> data = builder.takeBytes(); | ||
| 42 | - return Uint8List.fromList(data); | ||
| 43 | -} | ||
| 44 | - | ||
| 45 | void compute(Message message) { | 37 | void compute(Message message) { |
| 46 | final Document pdf = Document(); | 38 | final Document pdf = Document(); |
| 47 | 39 |
| @@ -16,15 +16,15 @@ | @@ -16,15 +16,15 @@ | ||
| 16 | 16 | ||
| 17 | // ignore_for_file: omit_local_variable_types | 17 | // ignore_for_file: omit_local_variable_types |
| 18 | 18 | ||
| 19 | -import 'dart:async'; | ||
| 20 | import 'dart:convert'; | 19 | import 'dart:convert'; |
| 21 | import 'dart:io'; | 20 | import 'dart:io'; |
| 22 | -import 'dart:typed_data'; | ||
| 23 | 21 | ||
| 24 | import 'package:pdf/pdf.dart'; | 22 | import 'package:pdf/pdf.dart'; |
| 25 | import 'package:pdf/widgets.dart'; | 23 | import 'package:pdf/widgets.dart'; |
| 26 | import 'package:test/test.dart'; | 24 | import 'package:test/test.dart'; |
| 27 | 25 | ||
| 26 | +import 'utils.dart'; | ||
| 27 | + | ||
| 28 | Document pdf; | 28 | Document pdf; |
| 29 | PdfImage image; | 29 | PdfImage image; |
| 30 | 30 | ||
| @@ -118,16 +118,6 @@ void main() { | @@ -118,16 +118,6 @@ void main() { | ||
| 118 | }); | 118 | }); |
| 119 | } | 119 | } |
| 120 | 120 | ||
| 121 | -Future<Uint8List> download(String url) async { | ||
| 122 | - final HttpClient client = HttpClient(); | ||
| 123 | - final HttpClientRequest request = await client.getUrl(Uri.parse(url)); | ||
| 124 | - final HttpClientResponse response = await request.close(); | ||
| 125 | - final BytesBuilder builder = await response.fold( | ||
| 126 | - BytesBuilder(), (BytesBuilder b, List<int> d) => b..add(d)); | ||
| 127 | - final List<int> data = builder.takeBytes(); | ||
| 128 | - return Uint8List.fromList(data); | ||
| 129 | -} | ||
| 130 | - | ||
| 131 | const List<String> images = <String>[ | 121 | const List<String> images = <String>[ |
| 132 | '/9j/4AAQSkZJRgABAQEA3ADcAAD/4QAiRXhpZgAASUkqAAgAAAABABIBAwABAAAAAQAAAAAAAAD/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/2wBDAQcHBwoIChMKChMoGhYaKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCj/wAARCABQADADASIAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAAAAkI/8QAFBABAAAAAAAAAAAAAAAAAAAAAP/EABQBAQAAAAAAAAAAAAAAAAAAAAD/xAAUEQEAAAAAAAAAAAAAAAAAAAAA/9oADAMBAAIRAxEAPwDKgAAAAAAAKqAAAAlWAAACqgAJVgAqoAAACVYAKqAAAA//2Q==', | 122 | '/9j/4AAQSkZJRgABAQEA3ADcAAD/4QAiRXhpZgAASUkqAAgAAAABABIBAwABAAAAAQAAAAAAAAD/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/2wBDAQcHBwoIChMKChMoGhYaKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCj/wAARCABQADADASIAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAAAAkI/8QAFBABAAAAAAAAAAAAAAAAAAAAAP/EABQBAQAAAAAAAAAAAAAAAAAAAAD/xAAUEQEAAAAAAAAAAAAAAAAAAAAA/9oADAMBAAIRAxEAPwDKgAAAAAAAKqAAAAlWAAACqgAJVgAqoAAACVYAKqAAAA//2Q==', |
| 133 | '/9j/4AAQSkZJRgABAQEA3ADcAAD/4QAiRXhpZgAASUkqAAgAAAABABIBAwABAAAAAgAAAAAAAAD/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/2wBDAQcHBwoIChMKChMoGhYaKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCj/wAARCABQADADASIAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAAAAkI/8QAFBABAAAAAAAAAAAAAAAAAAAAAP/EABQBAQAAAAAAAAAAAAAAAAAAAAD/xAAUEQEAAAAAAAAAAAAAAAAAAAAA/9oADAMBAAIRAxEAPwDKgAAAAAKqAAAAlWACqgAJVgAAAqoAAACVYAKqAAAAlWAD/9k=', | 123 | '/9j/4AAQSkZJRgABAQEA3ADcAAD/4QAiRXhpZgAASUkqAAgAAAABABIBAwABAAAAAgAAAAAAAAD/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/2wBDAQcHBwoIChMKChMoGhYaKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCj/wAARCABQADADASIAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAAAAkI/8QAFBABAAAAAAAAAAAAAAAAAAAAAP/EABQBAQAAAAAAAAAAAAAAAAAAAAD/xAAUEQEAAAAAAAAAAAAAAAAAAAAA/9oADAMBAAIRAxEAPwDKgAAAAAKqAAAAlWACqgAJVgAAAqoAAACVYAKqAAAAlWAD/9k=', |
pdf/test/utils.dart
0 → 100644
| 1 | +/* | ||
| 2 | + * Copyright (C) 2017, David PHAM-VAN <dev.nfet.net@gmail.com> | ||
| 3 | + * | ||
| 4 | + * Licensed under the Apache License, Version 2.0 (the "License"); | ||
| 5 | + * you may not use this file except in compliance with the License. | ||
| 6 | + * You may obtain a copy of the License at | ||
| 7 | + * | ||
| 8 | + * http://www.apache.org/licenses/LICENSE-2.0 | ||
| 9 | + * | ||
| 10 | + * Unless required by applicable law or agreed to in writing, software | ||
| 11 | + * distributed under the License is distributed on an "AS IS" BASIS, | ||
| 12 | + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
| 13 | + * See the License for the specific language governing permissions and | ||
| 14 | + * limitations under the License. | ||
| 15 | + */ | ||
| 16 | + | ||
| 17 | +// ignore_for_file: omit_local_variable_types | ||
| 18 | + | ||
| 19 | +import 'dart:async'; | ||
| 20 | +import 'dart:io'; | ||
| 21 | +import 'dart:math' as math; | ||
| 22 | +import 'dart:typed_data'; | ||
| 23 | + | ||
| 24 | +import 'package:pdf/pdf.dart'; | ||
| 25 | +import 'package:pdf/widgets.dart'; | ||
| 26 | + | ||
| 27 | +Future<Uint8List> download( | ||
| 28 | + String url, { | ||
| 29 | + bool cache = true, | ||
| 30 | + String prefix = 'cache_', | ||
| 31 | + String suffix, | ||
| 32 | +}) async { | ||
| 33 | + File file; | ||
| 34 | + if (cache) { | ||
| 35 | + if (suffix == null) { | ||
| 36 | + final int l = url.lastIndexOf('.'); | ||
| 37 | + if (l >= 0) { | ||
| 38 | + suffix = url.substring(l); | ||
| 39 | + } | ||
| 40 | + } | ||
| 41 | + file = File('$prefix${url.hashCode}$suffix'); | ||
| 42 | + if (file.existsSync()) { | ||
| 43 | + return await file.readAsBytes(); | ||
| 44 | + } | ||
| 45 | + } | ||
| 46 | + | ||
| 47 | + print('Downloading $url'); | ||
| 48 | + final HttpClient client = HttpClient(); | ||
| 49 | + final HttpClientRequest request = await client.getUrl(Uri.parse(url)); | ||
| 50 | + final HttpClientResponse response = await request.close(); | ||
| 51 | + final BytesBuilder builder = await response.fold( | ||
| 52 | + BytesBuilder(), (BytesBuilder b, List<int> d) => b..add(d)); | ||
| 53 | + final List<int> data = builder.takeBytes(); | ||
| 54 | + | ||
| 55 | + if (cache) { | ||
| 56 | + await file.writeAsBytes(data); | ||
| 57 | + } | ||
| 58 | + return Uint8List.fromList(data); | ||
| 59 | +} | ||
| 60 | + | ||
| 61 | +PdfImage generateBitmap(PdfDocument pdf, int w, int h) { | ||
| 62 | + final Uint32List bm = Uint32List(w * h); | ||
| 63 | + final double dw = w.toDouble(); | ||
| 64 | + final double dh = h.toDouble(); | ||
| 65 | + for (int y = 0; y < h; y++) { | ||
| 66 | + for (int x = 0; x < w; x++) { | ||
| 67 | + bm[y * w + x] = (math.sin(x / dw) * 256).toInt() | | ||
| 68 | + (math.sin(y / dh) * 256).toInt() << 8 | | ||
| 69 | + (math.sin(x / dw * y / dh) * 256).toInt() << 16 | | ||
| 70 | + 0xff000000; | ||
| 71 | + } | ||
| 72 | + } | ||
| 73 | + | ||
| 74 | + return PdfImage( | ||
| 75 | + pdf, | ||
| 76 | + image: bm.buffer.asUint8List(), | ||
| 77 | + width: w, | ||
| 78 | + height: h, | ||
| 79 | + ); | ||
| 80 | +} | ||
| 81 | + | ||
| 82 | +Font loadFont(String filename) { | ||
| 83 | + final Uint8List data = File(filename).readAsBytesSync(); | ||
| 84 | + return Font.ttf(data.buffer.asByteData()); | ||
| 85 | +} |
| @@ -17,35 +17,14 @@ | @@ -17,35 +17,14 @@ | ||
| 17 | // ignore_for_file: omit_local_variable_types | 17 | // ignore_for_file: omit_local_variable_types |
| 18 | 18 | ||
| 19 | import 'dart:io'; | 19 | import 'dart:io'; |
| 20 | -import 'dart:math' as math; | ||
| 21 | -import 'dart:typed_data'; | ||
| 22 | 20 | ||
| 23 | -import 'package:test/test.dart'; | ||
| 24 | import 'package:pdf/pdf.dart'; | 21 | import 'package:pdf/pdf.dart'; |
| 25 | import 'package:pdf/widgets.dart'; | 22 | import 'package:pdf/widgets.dart'; |
| 23 | +import 'package:test/test.dart'; | ||
| 26 | 24 | ||
| 27 | -Document pdf; | 25 | +import 'utils.dart'; |
| 28 | 26 | ||
| 29 | -PdfImage generateBitmap(PdfDocument pdf, int w, int h) { | ||
| 30 | - final Uint32List bm = Uint32List(w * h); | ||
| 31 | - final double dw = w.toDouble(); | ||
| 32 | - final double dh = h.toDouble(); | ||
| 33 | - for (int y = 0; y < h; y++) { | ||
| 34 | - for (int x = 0; x < w; x++) { | ||
| 35 | - bm[y * w + x] = (math.sin(x / dw) * 256).toInt() | | ||
| 36 | - (math.sin(y / dh) * 256).toInt() << 8 | | ||
| 37 | - (math.sin(x / dw * y / dh) * 256).toInt() << 16 | | ||
| 38 | - 0xff000000; | ||
| 39 | - } | ||
| 40 | - } | ||
| 41 | - | ||
| 42 | - return PdfImage( | ||
| 43 | - pdf, | ||
| 44 | - image: bm.buffer.asUint8List(), | ||
| 45 | - width: w, | ||
| 46 | - height: h, | ||
| 47 | - ); | ||
| 48 | -} | 27 | +Document pdf; |
| 49 | 28 | ||
| 50 | void main() { | 29 | void main() { |
| 51 | setUpAll(() { | 30 | setUpAll(() { |
| @@ -17,11 +17,12 @@ | @@ -17,11 +17,12 @@ | ||
| 17 | // ignore_for_file: omit_local_variable_types | 17 | // ignore_for_file: omit_local_variable_types |
| 18 | 18 | ||
| 19 | import 'dart:io'; | 19 | import 'dart:io'; |
| 20 | -import 'dart:typed_data'; | ||
| 21 | 20 | ||
| 22 | import 'package:pdf/pdf.dart'; | 21 | import 'package:pdf/pdf.dart'; |
| 23 | -import 'package:test/test.dart'; | ||
| 24 | import 'package:pdf/widgets.dart'; | 22 | import 'package:pdf/widgets.dart'; |
| 23 | +import 'package:test/test.dart'; | ||
| 24 | + | ||
| 25 | +import 'utils.dart'; | ||
| 25 | 26 | ||
| 26 | Document pdf; | 27 | Document pdf; |
| 27 | Font openSans; | 28 | Font openSans; |
| @@ -30,11 +31,6 @@ Font roboto; | @@ -30,11 +31,6 @@ Font roboto; | ||
| 30 | Font notoSans; | 31 | Font notoSans; |
| 31 | Font genyomintw; | 32 | Font genyomintw; |
| 32 | 33 | ||
| 33 | -Font loadFont(String filename) { | ||
| 34 | - final Uint8List data = File(filename).readAsBytesSync(); | ||
| 35 | - return Font.ttf(data.buffer.asByteData()); | ||
| 36 | -} | ||
| 37 | - | ||
| 38 | void main() { | 34 | void main() { |
| 39 | setUpAll(() { | 35 | setUpAll(() { |
| 40 | Document.debug = true; | 36 | Document.debug = true; |
-
Please register or login to post a comment