David PHAM-VAN

Update Readme with more examples

  1 +# 1.3.11
  2 +* Update Readme
  3 +
1 # 1.3.10 4 # 1.3.10
2 * Deprecate the document argument in Printing.sharePdf() 5 * Deprecate the document argument in Printing.sharePdf()
3 * Add default value to alpha in PdfColor variants 6 * Add default value to alpha in PdfColor variants
@@ -10,8 +10,8 @@ images and text using TrueType fonts. With the ease of use you already know. @@ -10,8 +10,8 @@ images and text using TrueType fonts. With the ease of use you already know.
10 10
11 <img alt="Example document" src="https://raw.githubusercontent.com/DavBfr/dart_pdf/master/pdf/example.jpg"> 11 <img alt="Example document" src="https://raw.githubusercontent.com/DavBfr/dart_pdf/master/pdf/example.jpg">
12 12
13 -> Use the `printing` package <https://pub.dartlang.org/packages/printing>  
14 -> for full flutter print and share operation. 13 +Use the `printing` package <https://pub.dartlang.org/packages/printing>
  14 +for full flutter print and share operation.
15 15
16 The coordinate system is using the internal Pdf unit: 16 The coordinate system is using the internal Pdf unit:
17 * 1.0 is defined as 1 / 72.0 inch 17 * 1.0 is defined as 1 / 72.0 inch
@@ -19,8 +19,9 @@ The coordinate system is using the internal Pdf unit: @@ -19,8 +19,9 @@ The coordinate system is using the internal Pdf unit:
19 19
20 Example: 20 Example:
21 ```dart 21 ```dart
22 -final pdf = Document()  
23 - ..addPage(Page( 22 +final pdf = Document();
  23 +
  24 +pdf.addPage(Page(
24 pageFormat: PdfPageFormat.a4, 25 pageFormat: PdfPageFormat.a4,
25 build: (Context context) { 26 build: (Context context) {
26 return Center( 27 return Center(
@@ -32,30 +33,43 @@ final pdf = Document() @@ -32,30 +33,43 @@ final pdf = Document()
32 To load an image it is possible to use the dart library [image](https://pub.dartlang.org/packages/image): 33 To load an image it is possible to use the dart library [image](https://pub.dartlang.org/packages/image):
33 34
34 ```dart 35 ```dart
35 -Image image = decodeImage(Io.File('test.webp').readAsBytesSync());  
36 -PdfImage image = PdfImage(  
37 - pdf, 36 +final img = decodeImage(File('test.webp').readAsBytesSync());
  37 +final image = PdfImage(
  38 + pdf.document,
38 image: img.data.buffer.asUint8List(), 39 image: img.data.buffer.asUint8List(),
39 width: img.width, 40 width: img.width,
40 - height: img.height);  
41 -g.drawImage(image, 100.0, 100.0, 80.0); 41 + height: img.height,
  42 +);
  43 +
  44 +pdf.addPage(Page(
  45 + build: (Context context) {
  46 + return Center(
  47 + child: Image(image),
  48 + ); // Center
  49 + })); // Page
42 ``` 50 ```
43 51
44 To use a TrueType font: 52 To use a TrueType font:
45 53
46 ```dart 54 ```dart
47 -PdfTtfFont ttf = PdfTtfFont(  
48 - pdf,  
49 - (File("open-sans.ttf").readAsBytesSync() as Uint8List).buffer.asByteData());  
50 -g.setColor(PdfColor(0.3, 0.3, 0.3));  
51 -g.drawString(ttf, 20.0, "Dart is awesome", 50.0, 30.0); 55 +final Uint8List fontData = File('open-sans.ttf').readAsBytesSync();
  56 +final ttf = Font.ttf(fontData.buffer.asByteData());
  57 +
  58 +pdf.addPage(Page(
  59 + pageFormat: PdfPageFormat.a4,
  60 + build: (Context context) {
  61 + return Center(
  62 + child: Text('Hello World', style: TextStyle(font: ttf, fontSize: 40)),
  63 + ); // Center
  64 + })); // Page
52 ``` 65 ```
53 66
54 -To save the image on Flutter, use the [path_provider](https://pub.dartlang.org/packages/path_provider) library: 67 +To save the pdf file:
55 68
56 ```dart 69 ```dart
57 -Directory tempDir = await getTemporaryDirectory();  
58 -String tempPath = tempDir.path;  
59 -var file = File("$tempPath/file.pdf"); 70 +// On Flutter, use the [path_provider](https://pub.dartlang.org/packages/path_provider) library:
  71 +// final output = await getTemporaryDirectory();
  72 +// final file = File("${output.path}/example.pdf");
  73 +final file = File("example.pdf");
60 await file.writeAsBytes(pdf.save()); 74 await file.writeAsBytes(pdf.save());
61 ``` 75 ```
@@ -4,7 +4,7 @@ description: A pdf producer for Dart. It can create pdf files for both web or fl @@ -4,7 +4,7 @@ description: A pdf producer for Dart. It can create pdf files for both web or fl
4 homepage: https://github.com/DavBfr/dart_pdf/tree/master/pdf 4 homepage: https://github.com/DavBfr/dart_pdf/tree/master/pdf
5 repository: https://github.com/DavBfr/dart_pdf 5 repository: https://github.com/DavBfr/dart_pdf
6 issue_tracker: https://github.com/DavBfr/dart_pdf/issues 6 issue_tracker: https://github.com/DavBfr/dart_pdf/issues
7 -version: 1.3.10 7 +version: 1.3.11
8 8
9 environment: 9 environment:
10 sdk: ">=2.1.0 <3.0.0" 10 sdk: ">=2.1.0 <3.0.0"
  1 +# 2.0.4
  2 +* Update Readme
  3 +
1 # 2.0.3 4 # 2.0.3
2 * Add file save and view to example application 5 * Add file save and view to example application
3 * Convert print screen example to Widgets 6 * Convert print screen example to Widgets
@@ -7,32 +7,71 @@ See the example on how to use the plugin. @@ -7,32 +7,71 @@ See the example on how to use the plugin.
7 7
8 <img alt="Example document" src="https://raw.githubusercontent.com/DavBfr/dart_pdf/master/printing/example.png" width="300"> 8 <img alt="Example document" src="https://raw.githubusercontent.com/DavBfr/dart_pdf/master/printing/example.png" width="300">
9 9
10 -> This plugin uses the `pdf` package <https://pub.dartlang.org/packages/pdf>  
11 -> for pdf creation. Please refer to <https://pub.dartlang.org/documentation/pdf/latest/>  
12 -> for documentation. 10 +This plugin uses the `pdf` package <https://pub.dartlang.org/packages/pdf>
  11 +for pdf creation. Please refer to <https://pub.dartlang.org/documentation/pdf/latest/>
  12 +for documentation.
13 13
14 -To load an image it is possible to use  
15 -[Image.toByteData](https://docs.flutter.io/flutter/dart-ui/Image/toByteData.html): 14 +Example:
16 15
17 ```dart 16 ```dart
18 -var Image im;  
19 -var bytes = await im.toByteData(format: ui.ImageByteFormat.rawRgba);  
20 -  
21 -PdfImage image = PdfImage(  
22 - pdf,  
23 - image: bytes.buffer.asUint8List(),  
24 - width: im.width,  
25 - height: im.height);  
26 -g.drawImage(image, 100.0, 100.0, 80.0); 17 +final pdf = PdfDoc();
  18 +
  19 +pdf.addPage(Page(
  20 + pageFormat: PdfPageFormat.a4,
  21 + build: (Context context) {
  22 + return Center(
  23 + child: Text("Hello World"),
  24 + ); // Center
  25 + })); // Page
  26 +```
  27 +
  28 +To load an image from an ImageProvider:
  29 +
  30 +```dart
  31 +const imageProvider = const AssetImage('assets/image.png');
  32 +final PdfImage image = await pdfImageFromImageProvider(pdf: pdf.document, image: imageProvider);
  33 +
  34 +pdf.addPage(Page(
  35 + build: (Context context) {
  36 + return Center(
  37 + child: Image(image),
  38 + ); // Center
  39 + })); // Page
27 ``` 40 ```
28 41
29 To use a TrueType font from a flutter bundle: 42 To use a TrueType font from a flutter bundle:
30 43
31 ```dart 44 ```dart
32 -var font = await rootBundle.load("assets/open-sans.ttf");  
33 -PdfTtfFont ttf = PdfTtfFont(pdf, font);  
34 -g.setColor(PdfColor(0.3, 0.3, 0.3));  
35 -g.drawString(ttf, 20.0, "Dart is awesome", 50.0, 30.0); 45 +final font = await rootBundle.load("assets/open-sans.ttf");
  46 +final ttf = Font.ttf(font);
  47 +
  48 +pdf.addPage(Page(
  49 + build: (Context context) {
  50 + return Center(
  51 + child: Text('Dart is awesome', style: TextStyle(font: ttf, fontSize: 40)),
  52 + ); // Center
  53 + })); // Page
  54 +```
  55 +
  56 +To save the pdf file using the [path_provider](https://pub.dartlang.org/packages/path_provider) library:
  57 +
  58 +```dart
  59 +final output = await getTemporaryDirectory();
  60 +final file = File("${output.path}/example.pdf");
  61 +await file.writeAsBytes(pdf.save());
  62 +```
  63 +
  64 +You can also print the document using the iOS or Android print service:
  65 +
  66 +```dart
  67 +await Printing.layoutPdf(
  68 + onLayout: (PdfPageFormat format) async => pdf.save());
  69 +```
  70 +
  71 +Or share the document to other applications:
  72 +
  73 +```dart
  74 +await Printing.sharePdf(bytes: pdf.save(), filename: 'my-document.pdf');
36 ``` 75 ```
37 76
38 ## Installing 77 ## Installing
@@ -4,7 +4,7 @@ description: Plugin that allows Flutter apps to generate and print documents to @@ -4,7 +4,7 @@ description: Plugin that allows Flutter apps to generate and print documents to
4 homepage: https://github.com/DavBfr/dart_pdf/tree/master/printing 4 homepage: https://github.com/DavBfr/dart_pdf/tree/master/printing
5 repository: https://github.com/DavBfr/dart_pdf 5 repository: https://github.com/DavBfr/dart_pdf
6 issue_tracker: https://github.com/DavBfr/dart_pdf/issues 6 issue_tracker: https://github.com/DavBfr/dart_pdf/issues
7 -version: 2.0.3 7 +version: 2.0.4
8 8
9 environment: 9 environment:
10 sdk: ">=2.1.0 <3.0.0" 10 sdk: ">=2.1.0 <3.0.0"
  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 +import 'dart:io';
  18 +
  19 +import 'package:markdown/markdown.dart' as md;
  20 +
  21 +Iterable<String> getCode(List<md.Node> nodes, [bool isCode = false]) sync* {
  22 + for (md.Node node in nodes) {
  23 + if (node is md.Element) {
  24 + // print(node.tag);
  25 + // print(node.attributes);
  26 + yield* getCode(node.children,
  27 + node.tag == 'code' && node.attributes['class'] == 'language-dart');
  28 + } else if (node is md.Text) {
  29 + if (isCode) {
  30 + yield '// ------------';
  31 + yield node.text;
  32 + }
  33 + } else {
  34 + print(node);
  35 + }
  36 + }
  37 +}
  38 +
  39 +void main() {
  40 + final md.Document document = md.Document(
  41 + extensionSet: md.ExtensionSet.commonMark,
  42 + encodeHtml: false,
  43 + );
  44 +
  45 + final output = File('readme.dart');
  46 + final st = output.openWrite();
  47 + st.writeln('import \'dart:io\';');
  48 + st.writeln('import \'dart:typed_data\';');
  49 + st.writeln('import \'package:pdf/pdf.dart\';');
  50 + st.writeln('import \'package:pdf/widgets.dart\';');
  51 + st.writeln('import \'package:image/image.dart\' show decodeImage;');
  52 + st.writeln('import \'package:printing/printing.dart\';');
  53 + st.writeln('import \'package:flutter/services.dart\' show rootBundle;');
  54 + st.writeln('import \'package:flutter/widgets.dart\' show AssetImage;');
  55 + st.writeln('import \'package:path_provider/path_provider.dart\';');
  56 +
  57 + {
  58 + final data = File('../pdf/README.md').readAsStringSync();
  59 + final List<String> lines = data.replaceAll('\r\n', '\n').split('\n');
  60 + final List<md.Node> parsedLines = document.parseLines(lines);
  61 + final Iterable<String> code = getCode(parsedLines);
  62 +
  63 + st.writeln('Future pdfReadme() async {');
  64 + st.writeln(code.join('\n'));
  65 + st.writeln('}');
  66 + }
  67 + {
  68 + final data = File('../printing/README.md').readAsStringSync();
  69 + final List<String> lines = data.replaceAll('\r\n', '\n').split('\n');
  70 + final List<md.Node> parsedLines = document.parseLines(lines);
  71 + final Iterable<String> code = getCode(parsedLines);
  72 +
  73 + st.writeln('Future printingReadme() async {');
  74 + st.writeln(code.join('\n'));
  75 + st.writeln('}');
  76 + }
  77 + st.writeln('Future main() async {');
  78 + st.writeln('await pdfReadme();');
  79 + st.writeln('await printingReadme();');
  80 + st.writeln('}');
  81 + st.close();
  82 +}
  1 +name: readme_to_dart
  2 +author: David PHAM-VAN <dev.nfet.net@gmail.com>
  3 +description: Readme Markdown to dart source converter.
  4 +homepage: https://github.com/DavBfr/dart_pdf/tree/master/test
  5 +repository: https://github.com/DavBfr/dart_pdf
  6 +issue_tracker: https://github.com/DavBfr/dart_pdf/issues
  7 +version: 1.0.0
  8 +
  9 +environment:
  10 + sdk: ">=2.1.0 <3.0.0"
  11 +
  12 +dependencies:
  13 + pdf:
  14 + printing:
  15 + markdown:
  16 + meta:
  17 + string_scanner:
  18 + path:
  19 + image:
  20 + path_provider: