Showing
3 changed files
with
27 additions
and
10 deletions
@@ -70,19 +70,16 @@ class PrintingPlugin extends PrintingPlatform { | @@ -70,19 +70,16 @@ class PrintingPlugin extends PrintingPlatform { | ||
70 | return false; | 70 | return false; |
71 | } | 71 | } |
72 | 72 | ||
73 | + final String userAgent = js.context['navigator']['userAgent']; | ||
73 | final isChrome = js.context['chrome'] != null; | 74 | final isChrome = js.context['chrome'] != null; |
74 | final isSafari = js.context['safari'] != null; | 75 | final isSafari = js.context['safari'] != null; |
75 | - // Maybe Firefox 75 will support iframe printing | 76 | + final isMobile = userAgent.contains('Mobile'); |
77 | + // Maybe Firefox will support iframe printing | ||
76 | // https://bugzilla.mozilla.org/show_bug.cgi?id=911444 | 78 | // https://bugzilla.mozilla.org/show_bug.cgi?id=911444 |
79 | + // final isFirefox = userAgent.contains('Firefox'); | ||
77 | 80 | ||
78 | - if (!isChrome && !isSafari) { | ||
79 | - final pr = 'data:application/pdf;base64,${base64.encode(result)}'; | ||
80 | - final html.Window win = js.context['window']; | ||
81 | - win.open(pr, name); | ||
82 | - | ||
83 | - return true; | ||
84 | - } | ||
85 | - | 81 | + // Chrome and Safari on a desktop computer |
82 | + if ((isChrome || isSafari) && !isMobile) { | ||
86 | final completer = Completer<bool>(); | 83 | final completer = Completer<bool>(); |
87 | final pdfFile = html.Blob( | 84 | final pdfFile = html.Blob( |
88 | <Uint8List>[Uint8List.fromList(result)], | 85 | <Uint8List>[Uint8List.fromList(result)], |
@@ -117,6 +114,21 @@ class PrintingPlugin extends PrintingPlatform { | @@ -117,6 +114,21 @@ class PrintingPlugin extends PrintingPlatform { | ||
117 | return completer.future; | 114 | return completer.future; |
118 | } | 115 | } |
119 | 116 | ||
117 | + // All the others | ||
118 | + final pdfFile = html.Blob( | ||
119 | + <Uint8List>[Uint8List.fromList(result)], | ||
120 | + 'application/pdf', | ||
121 | + ); | ||
122 | + final pdfUrl = html.Url.createObjectUrl(pdfFile); | ||
123 | + final html.HtmlDocument doc = js.context['document']; | ||
124 | + final html.AnchorElement link = doc.createElement('a'); | ||
125 | + link.href = pdfUrl; | ||
126 | + link.target = '_blank'; | ||
127 | + link.click(); | ||
128 | + link.remove(); | ||
129 | + return true; | ||
130 | + } | ||
131 | + | ||
120 | @override | 132 | @override |
121 | Future<bool> sharePdf( | 133 | Future<bool> sharePdf( |
122 | Uint8List bytes, | 134 | Uint8List bytes, |
@@ -133,6 +145,7 @@ class PrintingPlugin extends PrintingPlatform { | @@ -133,6 +145,7 @@ class PrintingPlugin extends PrintingPlatform { | ||
133 | link.href = pdfUrl; | 145 | link.href = pdfUrl; |
134 | link.download = filename; | 146 | link.download = filename; |
135 | link.click(); | 147 | link.click(); |
148 | + link.remove(); | ||
136 | return true; | 149 | return true; |
137 | } | 150 | } |
138 | 151 |
@@ -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: 3.7.1 | 7 | +version: 3.7.2 |
8 | 8 | ||
9 | environment: | 9 | environment: |
10 | sdk: ">=2.3.0 <3.0.0" | 10 | sdk: ">=2.3.0 <3.0.0" |
-
Please register or login to post a comment