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
David PHAM-VAN
2021-02-13 08:06:34 -0400
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
e4f020b10960f977d1b106a892208445885e4831
e4f020b1
1 parent
03333c18
Improve PrintJob object
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
72 additions
and
26 deletions
printing/CHANGELOG.md
printing/lib/src/method_channel.dart
printing/lib/src/print_job.dart
printing/CHANGELOG.md
View file @
e4f020b
...
...
@@ -4,6 +4,7 @@
-
Add imageFromAssetBundle and networkImage
-
Add Page orientation on PdfPreview
-
Improve PrintJob object
## 5.0.0-nullsafety.1
...
...
printing/lib/src/method_channel.dart
View file @
e4f020b
...
...
@@ -37,14 +37,16 @@ class MethodChannelPrinting extends PrintingPlatform {
_channel
.
setMethodCallHandler
(
_handleMethod
);
}
static
final
Map
<
int
,
PrintJob
>
_printJobs
=
<
int
,
PrintJob
>{};
static
int
_jobIndex
=
0
;
static
final
_printJobs
=
PrintJobs
();
/// Callbacks from platform plugin
static
Future
<
dynamic
>
_handleMethod
(
MethodCall
call
)
async
{
switch
(
call
.
method
)
{
case
'onLayout'
:
final
job
=
_printJobs
[
call
.
arguments
[
'job'
]]!;
final
job
=
_printJobs
.
getJob
(
call
.
arguments
[
'job'
]);
if
(
job
==
null
)
{
return
;
}
final
format
=
PdfPageFormat
(
call
.
arguments
[
'width'
],
call
.
arguments
[
'height'
],
...
...
@@ -60,42 +62,46 @@ class MethodChannelPrinting extends PrintingPlatform {
case
'onCompleted'
:
final
bool
?
completed
=
call
.
arguments
[
'completed'
];
final
String
?
error
=
call
.
arguments
[
'error'
];
final
job
=
_printJobs
[
call
.
arguments
[
'job'
]];
final
job
=
_printJobs
.
getJob
(
call
.
arguments
[
'job'
]);
if
(
job
!=
null
)
{
if
(
completed
==
false
&&
error
!=
null
)
{
job
!
.
onCompleted
!.
completeError
(
error
);
job
.
onCompleted
!.
completeError
(
error
);
}
else
{
job
!.
onCompleted
!.
complete
(
completed
);
job
.
onCompleted
!.
complete
(
completed
);
}
}
break
;
case
'onHtmlRendered'
:
final
job
=
_printJobs
[
call
.
arguments
[
'job'
]]!;
final
job
=
_printJobs
.
getJob
(
call
.
arguments
[
'job'
]);
if
(
job
!=
null
)
{
job
.
onHtmlRendered
!.
complete
(
call
.
arguments
[
'doc'
]);
}
break
;
case
'onHtmlError'
:
final
job
=
_printJobs
[
call
.
arguments
[
'job'
]]!;
final
job
=
_printJobs
.
getJob
(
call
.
arguments
[
'job'
]);
if
(
job
!=
null
)
{
job
.
onHtmlRendered
!.
completeError
(
call
.
arguments
[
'error'
]);
}
break
;
case
'onPageRasterized'
:
final
job
=
_printJobs
[
call
.
arguments
[
'job'
]]!;
final
job
=
_printJobs
.
getJob
(
call
.
arguments
[
'job'
]);
if
(
job
!=
null
)
{
final
raster
=
PdfRaster
(
call
.
arguments
[
'width'
],
call
.
arguments
[
'height'
],
call
.
arguments
[
'image'
],
);
job
.
onPageRasterized
!.
add
(
raster
);
}
break
;
case
'onPageRasterEnd'
:
final
job
=
_printJobs
[
call
.
arguments
[
'job'
]]!;
final
job
=
_printJobs
.
getJob
(
call
.
arguments
[
'job'
]);
if
(
job
!=
null
)
{
await
job
.
onPageRasterized
!.
close
();
_printJobs
.
remove
(
job
.
index
);
break
;
}
break
;
}
static
PrintJob
_newPrintJob
(
PrintJob
job
)
{
job
.
index
=
_jobIndex
++;
_printJobs
[
job
.
index
!]
=
job
;
return
job
;
}
@override
...
...
@@ -122,10 +128,10 @@ class MethodChannelPrinting extends PrintingPlatform {
String
name
,
PdfPageFormat
format
,
)
async
{
final
job
=
_
newPrintJob
(
PrintJob
(
final
job
=
_
printJobs
.
add
(
onCompleted:
Completer
<
bool
>(),
onLayout:
onLayout
,
)
)
;
);
final
params
=
<
String
,
dynamic
>{
'name'
:
name
,
...
...
@@ -184,9 +190,9 @@ class MethodChannelPrinting extends PrintingPlatform {
String
name
,
PdfPageFormat
format
,
)
async
{
final
job
=
_
newPrintJob
(
PrintJob
(
final
job
=
_
printJobs
.
add
(
onCompleted:
Completer
<
bool
>(),
)
)
;
);
final
bytes
=
await
onLayout
(
format
);
...
...
@@ -228,9 +234,9 @@ class MethodChannelPrinting extends PrintingPlatform {
@override
Future
<
Uint8List
>
convertHtml
(
String
html
,
String
?
baseUrl
,
PdfPageFormat
format
)
async
{
final
job
=
_
newPrintJob
(
PrintJob
(
final
job
=
_
printJobs
.
add
(
onHtmlRendered:
Completer
<
Uint8List
>(),
)
)
;
);
final
params
=
<
String
,
dynamic
>{
'html'
:
html
,
...
...
@@ -256,9 +262,9 @@ class MethodChannelPrinting extends PrintingPlatform {
List
<
int
>?
pages
,
double
dpi
,
)
{
final
job
=
_
newPrintJob
(
PrintJob
(
final
job
=
_
printJobs
.
add
(
onPageRasterized:
StreamController
<
PdfRaster
>(),
)
)
;
);
final
params
=
<
String
,
dynamic
>{
'doc'
:
Uint8List
.
fromList
(
document
),
...
...
printing/lib/src/print_job.dart
View file @
e4f020b
...
...
@@ -23,7 +23,8 @@ import 'raster.dart';
/// Represents a print job to communicate with the platform implementation
class
PrintJob
{
/// Create a print job
PrintJob
({
const
PrintJob
.
_
({
required
this
.
index
,
this
.
onLayout
,
this
.
onHtmlRendered
,
this
.
onCompleted
,
...
...
@@ -43,5 +44,43 @@ class PrintJob {
final
StreamController
<
PdfRaster
>?
onPageRasterized
;
/// The Job number
int
?
index
;
final
int
index
;
}
/// Represents a list of print jobs
class
PrintJobs
{
/// Create a list print jobs
PrintJobs
();
static
var
_currentIndex
=
0
;
final
_printJobs
=
<
int
,
PrintJob
>{};
/// Add a print job to the list
PrintJob
add
({
LayoutCallback
?
onLayout
,
Completer
<
Uint8List
>?
onHtmlRendered
,
Completer
<
bool
>?
onCompleted
,
StreamController
<
PdfRaster
>?
onPageRasterized
,
})
{
final
job
=
PrintJob
.
_
(
index:
_currentIndex
++,
onLayout:
onLayout
,
onHtmlRendered:
onHtmlRendered
,
onCompleted:
onCompleted
,
onPageRasterized:
onPageRasterized
,
);
_printJobs
[
job
.
index
]
=
job
;
return
job
;
}
/// Retrive an existing job
PrintJob
?
getJob
(
int
index
)
{
return
_printJobs
[
index
];
}
/// remove a print job from the list
void
remove
(
int
index
)
{
_printJobs
.
remove
(
index
);
}
}
...
...
Please
register
or
login
to post a comment