Toggle navigation
Toggle navigation
This project
Loading...
Sign in
flutter_package
/
dart_pdf
Go to a project
Toggle navigation
Projects
Groups
Snippets
Help
Toggle navigation pinning
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Builds
Commits
Authored by
Marco Papula
2020-03-24 14:57:17 +0100
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Committed by
David PHAM-VAN
2020-04-02 18:47:29 -0400
Commit
04d0ce6771fcbfa06d09e0a9da6393e6604d5051
04d0ce67
1 parent
6e433972
Create wrapWidget helper
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
92 additions
and
16 deletions
printing/CHANGELOG.md
printing/example/lib/main.dart
printing/lib/printing.dart
printing/lib/src/widget_wrapper.dart
printing/pubspec.yaml
printing/CHANGELOG.md
View file @
04d0ce6
# Changelog
## 3.3.0
-
Add wrapWidget helper
## 3.2.1
-
Add meta and image dependencies
...
...
printing/example/lib/main.dart
View file @
04d0ce6
import
'dart:async'
;
import
'dart:io'
;
import
'dart:typed_data'
;
import
'dart:ui'
as
ui
;
import
'package:flutter/foundation.dart'
;
import
'package:flutter/material.dart'
;
...
...
@@ -9,7 +7,6 @@ import 'package:flutter/rendering.dart';
import
'package:flutter/services.dart'
;
import
'package:markdown/markdown.dart'
as
markdown
;
import
'package:path_provider/path_provider.dart'
;
import
'package:pdf/pdf.dart'
;
import
'package:pdf/widgets.dart'
as
pw
;
import
'package:printing/printing.dart'
;
...
...
@@ -156,21 +153,17 @@ class MyAppState extends State<MyApp> {
}
Future
<
void
>
_printScreen
()
async
{
final
RenderRepaintBoundary
boundary
=
previewContainer
.
currentContext
.
findRenderObject
();
final
ui
.
Image
im
=
await
boundary
.
toImage
();
final
ByteData
bytes
=
await
im
.
toByteData
(
format:
ui
.
ImageByteFormat
.
rawRgba
);
print
(
'Print Screen
${im.width}
x
${im.height}
...'
);
final
bool
result
=
await
Printing
.
layoutPdf
(
onLayout:
(
PdfPageFormat
format
)
{
await
Printing
.
layoutPdf
(
onLayout:
(
PdfPageFormat
format
)
async
{
final
pw
.
Document
document
=
pw
.
Document
();
final
PdfImage
image
=
PdfImage
(
document
.
document
,
image:
bytes
.
buffer
.
asUint8List
(),
width:
im
.
width
,
height:
im
.
height
);
final
PdfImage
image
=
await
wrapWidget
(
document
.
document
,
key:
previewContainer
,
pixelRatio:
2.0
,
);
print
(
'Print Screen
${image.width}
x
${image.height}
...'
);
document
.
addPage
(
pw
.
Page
(
pageFormat:
format
,
...
...
printing/lib/printing.dart
View file @
04d0ce6
...
...
@@ -20,3 +20,4 @@ export 'src/printer.dart';
export
'src/printing.dart'
;
export
'src/printing_info.dart'
;
export
'src/raster.dart'
;
export
'src/widget_wrapper.dart'
;
...
...
printing/lib/src/widget_wrapper.dart
0 → 100644
View file @
04d0ce6
/*
* Copyright (C) 2017, David PHAM-VAN <dev.nfet.net@gmail.com>
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import
'dart:async'
;
import
'dart:typed_data'
;
import
'dart:ui'
as
ui
;
import
'package:flutter/material.dart'
;
import
'package:flutter/rendering.dart'
;
import
'package:pdf/pdf.dart'
;
/// Wrap a Flutter Widget identified by a GlobalKey to a PdfImage.
Future
<
PdfImage
>
wrapWidget
(
PdfDocument
document
,
{
@required
GlobalKey
key
,
int
width
,
int
height
,
double
pixelRatio
=
1.0
,
})
async
{
assert
(
key
!=
null
);
assert
(
pixelRatio
!=
null
&&
pixelRatio
>
0
);
final
RenderRepaintBoundary
wrappedWidget
=
key
.
currentContext
.
findRenderObject
();
ui
.
Image
image
=
await
wrappedWidget
.
toImage
(
pixelRatio:
pixelRatio
);
image
=
await
_resize
(
image
,
width
,
height
);
final
ByteData
byteData
=
await
image
.
toByteData
(
format:
ui
.
ImageByteFormat
.
rawRgba
);
final
Uint8List
imageData
=
byteData
.
buffer
.
asUint8List
();
return
PdfImage
(
document
,
image:
imageData
,
width:
image
.
width
,
height:
image
.
height
);
}
Future
<
ui
.
Image
>
_resize
(
ui
.
Image
image
,
int
width
,
int
height
,
)
async
{
if
(
width
==
null
&&
height
==
null
)
{
return
image
;
}
width
??=
(
height
/
image
.
height
*
image
.
width
).
toInt
();
height
??=
(
width
/
image
.
width
*
image
.
height
).
toInt
();
final
Completer
<
ui
.
Image
>
ptr
=
Completer
<
ui
.
Image
>();
final
Uint8List
data
=
(
await
image
.
toByteData
(
format:
ui
.
ImageByteFormat
.
rawRgba
))
.
buffer
.
asUint8List
();
ui
.
decodeImageFromPixels
(
data
,
image
.
width
,
image
.
height
,
ui
.
PixelFormat
.
rgba8888
,
(
ui
.
Image
result
)
{
ptr
.
complete
(
result
);
},
targetWidth:
width
,
targetHeight:
height
,
);
return
ptr
.
future
;
}
...
...
printing/pubspec.yaml
View file @
04d0ce6
...
...
@@ -4,7 +4,7 @@ description: Plugin that allows Flutter apps to generate and print documents to
homepage
:
https://github.com/DavBfr/dart_pdf/tree/master/printing
repository
:
https://github.com/DavBfr/dart_pdf
issue_tracker
:
https://github.com/DavBfr/dart_pdf/issues
version
:
3.
2.1
version
:
3.
3.0
environment
:
sdk
:
"
>=2.3.0
<3.0.0"
...
...
Please
register
or
login
to post a comment