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
2019-09-03 17:26:14 -0400
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
eda21431449e277c5d404b147400b8486d751f0b
eda21431
1 parent
fa1195c3
Add Isolates test
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
87 additions
and
0 deletions
pdf/test/all_tests.dart
pdf/test/isolate_test.dart
pdf/test/all_tests.dart
View file @
eda2143
...
...
@@ -20,6 +20,7 @@ import '../example/main.dart' as example;
import
'annotations_test.dart'
as
annotations
;
import
'colors_test.dart'
as
colors
;
import
'complex_test.dart'
as
complex
;
import
'isolate_test.dart'
as
isolate
;
import
'jpeg_test.dart'
as
jpeg
;
import
'metrics_test.dart'
as
metrics
;
import
'minimal_test.dart'
as
minimal
;
...
...
@@ -40,6 +41,7 @@ void main() {
colors
.
main
();
complex
.
main
();
example
.
main
();
isolate
.
main
();
jpeg
.
main
();
metrics
.
main
();
minimal
.
main
();
...
...
pdf/test/isolate_test.dart
0 → 100644
View file @
eda2143
/*
* 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:io'
;
import
'dart:isolate'
;
import
'dart:typed_data'
;
import
'package:pdf/pdf.dart'
;
import
'package:pdf/widgets.dart'
;
import
'package:test/test.dart'
;
class
Message
{
Message
(
this
.
image
,
this
.
sendPort
);
final
Uint8List
image
;
final
SendPort
sendPort
;
}
Future
<
Uint8List
>
download
(
String
url
)
async
{
final
HttpClient
client
=
HttpClient
();
final
HttpClientRequest
request
=
await
client
.
getUrl
(
Uri
.
parse
(
url
));
final
HttpClientResponse
response
=
await
request
.
close
();
final
BytesBuilder
builder
=
await
response
.
fold
(
BytesBuilder
(),
(
BytesBuilder
b
,
List
<
int
>
d
)
=>
b
..
add
(
d
));
final
List
<
int
>
data
=
builder
.
takeBytes
();
return
Uint8List
.
fromList
(
data
);
}
void
compute
(
Message
message
)
{
final
Document
pdf
=
Document
();
final
PdfImage
image
=
PdfImage
.
jpeg
(
pdf
.
document
,
image:
message
.
image
,
);
pdf
.
addPage
(
Page
(
build:
(
Context
context
)
=>
Center
(
child:
Image
(
image
))));
message
.
sendPort
.
send
(
pdf
.
save
());
}
void
main
(
)
{
test
(
'Pdf Isolate'
,
()
async
{
final
Completer
<
void
>
completer
=
Completer
<
void
>();
final
ReceivePort
receivePort
=
ReceivePort
();
receivePort
.
listen
((
dynamic
data
)
async
{
if
(
data
is
List
<
int
>)
{
print
(
'Received a
${data.length}
bytes PDF'
);
final
File
file
=
File
(
'isolate.pdf'
);
await
file
.
writeAsBytes
(
data
);
print
(
'File saved'
);
}
completer
.
complete
();
});
print
(
'Download image'
);
final
Uint8List
imageBytes
=
await
download
(
'https://www.nfet.net/nfet.jpg'
);
print
(
'Generate PDF'
);
await
Isolate
.
spawn
<
Message
>(
compute
,
Message
(
imageBytes
,
receivePort
.
sendPort
),
);
print
(
'Wait PDF to be generated'
);
await
completer
.
future
;
print
(
'Done'
);
});
}
...
...
Please
register
or
login
to post a comment