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-06-19 07:46:48 -0300
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
dc2a0bc10a7860c68375d121bd69e2410736b8df
dc2a0bc1
1 parent
191b7eeb
Update Demo project
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
38 additions
and
74 deletions
Makefile
demo/lib/examples/calendar.dart
demo/lib/examples/certificate.dart
demo/lib/examples/document.dart
demo/lib/examples/invoice.dart
demo/lib/examples/report.dart
demo/lib/examples/resume.dart
demo/pubspec.yaml
Makefile
View file @
dc2a0bc
...
...
@@ -18,7 +18,7 @@ DART_BIN=$(FLUTTER)/bin/dart
DART_SRC
=
$(
shell
find . -name
'*.dart'
)
CLNG_SRC
=
$(
shell
find printing/ios printing/macos printing/windows printing/linux printing/android -name
'*.cpp'
-o -name
'*.cc'
-o -name
'*.m'
-o -name
'*.h'
-o -name
'*.java'
)
SWFT_SRC
=
$(
shell
find printing/ios printing/macos -name
'*.swift'
)
FONTS
=
pdf/open-sans.ttf pdf/open-sans-bold.ttf pdf/roboto.ttf pdf/noto-sans.ttf pdf/genyomintw.ttf
demo/assets/roboto1.ttf demo/assets/roboto2.ttf demo/assets/roboto3.ttf demo/assets/open-sans.ttf demo/assets/open-sans-bold.ttf pdf/hacen-tunisia.ttf pdf/material.ttf demo/assets
/material.ttf
FONTS
=
pdf/open-sans.ttf pdf/open-sans-bold.ttf pdf/roboto.ttf pdf/noto-sans.ttf pdf/genyomintw.ttf
pdf/hacen-tunisia.ttf pdf
/material.ttf
COV_PORT
=
9292
SVG
=
blend_and_mask blend_mode_devil clip_path clip_path_2 clip_path_2 clip_path_3 clip_path_3 dash_path ellipse empty_defs equation fill-rule-inherit group_composite_opacity group_fill_opacity group_mask group_opacity group_opacity_transform hidden href-fill image image_def implicit_fill_with_opacity linear_gradient linear_gradient_2 linear_gradient_absolute_user_space_translate linear_gradient_percentage_bounding_translate linear_gradient_percentage_user_space_translate linear_gradient_xlink male mask mask_with_gradient mask_with_use mask_with_use2 nested_group opacity_on_path radial_gradient radial_gradient_absolute_user_space_translate radial_gradient_focal radial_gradient_percentage_bounding_translate radial_gradient_percentage_user_space_translate radial_gradient_xlink radial_ref_linear_gradient rect_rrect rect_rrect_no_ry stroke_inherit_circles style_attr text text_2 text_3 use_circles use_circles_def use_emc2 use_fill use_opacity_grid width_height_viewbox flutter_logo emoji_u1f600 text_transform dart new-pause-button new-send-circle new-gif new-camera new-image numeric_25 new-mention new-gif-button new-action-expander new-play-button aa alphachannel Ghostscript_Tiger Firefox_Logo_2017 chess_knight Flag_of_the_United_States
...
...
@@ -27,16 +27,6 @@ all: $(FONTS) demo/assets/logo.svg demo/assets/profile.jpg format printing/examp
pdf/open-sans.ttf
:
curl -L
"https://fonts.gstatic.com/s/opensans/v17/mem8YaGs126MiZpBA-U1Ug.ttf"
>
$@
demo/assets/open-sans.ttf
:
pdf/open-sans.ttf
cp
$^
$@
pdf/open-sans-bold.ttf
:
curl -L
"https://fonts.gstatic.com/s/opensans/v17/mem5YaGs126MiZpBA-UN7rg-VQ.ttf"
>
$@
cp
$@
demo/assets/
demo/assets/open-sans-bold.ttf
:
pdf/open-sans-bold.ttf
cp
$^
$@
pdf/roboto.ttf
:
curl -L
"https://fonts.gstatic.com/s/robotomono/v7/L0x5DF4xlVMF-BfR8bXMIghM.ttf"
>
$@
...
...
@@ -49,21 +39,9 @@ pdf/genyomintw.ttf:
pdf/material.ttf
:
curl -L
"https://github.com/google/material-design-icons/raw/master/font/MaterialIcons-Regular.ttf"
>
$@
demo/assets/roboto1.ttf
:
curl -L
"https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmSU5vAw.ttf"
>
$@
demo/assets/roboto2.ttf
:
curl -L
"https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmWUlvAw.ttf"
>
$@
demo/assets/roboto3.ttf
:
curl -L
"https://fonts.gstatic.com/s/roboto/v20/KFOkCnqEu92Fr1MmgWxP.ttf"
>
$@
demo/assets/logo.svg
:
curl -L
"http://pigment.github.io/fake-logos/logos/vector/color/auto-speed.svg"
>
$@
demo/assets/material.ttf
:
pdf/material.ttf
cp
$<
$@
demo/assets/profile.jpg
:
curl -L
"https://www.fakepersongenerator.com/Face/female/female20151024334209870.jpg"
>
$@
...
...
demo/lib/examples/calendar.dart
View file @
dc2a0bc
...
...
@@ -20,6 +20,7 @@ import 'package:flutter/services.dart';
import
'package:intl/intl.dart'
;
import
'package:pdf/pdf.dart'
;
import
'package:pdf/widgets.dart'
;
import
'package:printing/printing.dart'
;
import
'../data.dart'
;
...
...
@@ -197,8 +198,8 @@ Future<Uint8List> generateCalendar(
pageFormat:
pageFormat
,
orientation:
PageOrientation
.
landscape
,
theme:
ThemeData
.
withFont
(
base:
Font
.
ttf
(
await
rootBundle
.
load
(
'assets/open-sans.ttf'
)),
bold:
Font
.
ttf
(
await
rootBundle
.
load
(
'assets/open-sans-bold.ttf'
)),
base:
await
PdfGoogleFonts
.
openSansRegular
(),
bold:
await
PdfGoogleFonts
.
openSansBold
(),
),
buildForeground:
bg
==
null
?
null
...
...
demo/lib/examples/certificate.dart
View file @
dc2a0bc
...
...
@@ -18,43 +18,22 @@ import 'dart:typed_data';
import
'package:flutter/material.dart'
;
import
'package:flutter/services.dart'
;
import
'package:http/http.dart'
as
http
;
import
'package:pdf/pdf.dart'
;
import
'package:pdf/widgets.dart'
as
pw
;
import
'package:printing/printing.dart'
;
import
'package:vector_math/vector_math_64.dart'
;
import
'../data.dart'
;
final
_cache
=
<
String
,
Uint8List
>{};
Future
<
Uint8List
>
_download
(
String
url
)
async
{
if
(!
_cache
.
containsKey
(
url
))
{
print
(
'Downloading
$url
'
);
final
response
=
await
http
.
get
(
Uri
.
parse
(
url
));
final
data
=
response
.
bodyBytes
;
_cache
[
url
]
=
Uint8List
.
fromList
(
data
);
}
return
_cache
[
url
]!;
}
Future
<
pw
.
Font
>
_downloadFont
(
String
url
)
async
{
final
data
=
await
_download
(
url
);
return
pw
.
Font
.
ttf
(
data
.
buffer
.
asByteData
());
}
Future
<
Uint8List
>
generateCertificate
(
PdfPageFormat
pageFormat
,
CustomData
data
)
async
{
final
lorem
=
pw
.
LoremText
();
final
pdf
=
pw
.
Document
();
final
libreBaskerville
=
await
_downloadFont
(
'https://fonts.gstatic.com/s/librebaskerville/v9/kmKnZrc3Hgbbcjq75U4uslyuy4kn0pNe.ttf'
);
final
libreBaskervilleItalic
=
await
_downloadFont
(
'https://fonts.gstatic.com/s/librebaskerville/v9/kmKhZrc3Hgbbcjq75U4uslyuy4kn0qNcaxY.ttf'
);
final
libreBaskervilleBold
=
await
_downloadFont
(
'https://fonts.gstatic.com/s/librebaskerville/v9/kmKiZrc3Hgbbcjq75U4uslyuy4kn0qviTjYw.ttf'
);
final
robotoLight
=
pw
.
Font
.
ttf
(
await
rootBundle
.
load
(
'assets/roboto3.ttf'
));
final
libreBaskerville
=
await
PdfGoogleFonts
.
libreBaskervilleRegular
();
final
libreBaskervilleItalic
=
await
PdfGoogleFonts
.
libreBaskervilleItalic
();
final
libreBaskervilleBold
=
await
PdfGoogleFonts
.
libreBaskervilleBold
();
final
robotoLight
=
await
PdfGoogleFonts
.
robotoLight
();
final
medail
=
await
rootBundle
.
loadString
(
'assets/medail.svg'
);
final
swirls
=
await
rootBundle
.
loadString
(
'assets/swirls.svg'
);
final
swirls1
=
await
rootBundle
.
loadString
(
'assets/swirls1.svg'
);
...
...
demo/lib/examples/document.dart
View file @
dc2a0bc
...
...
@@ -19,6 +19,7 @@ import 'dart:typed_data';
import
'package:flutter/services.dart'
;
import
'package:pdf/pdf.dart'
;
import
'package:pdf/widgets.dart'
as
pw
;
import
'package:printing/printing.dart'
;
import
'../data.dart'
;
...
...
@@ -26,8 +27,8 @@ Future<Uint8List> generateDocument(
PdfPageFormat
format
,
CustomData
data
)
async
{
final
doc
=
pw
.
Document
(
pageMode:
PdfPageMode
.
outlines
);
final
font1
=
await
rootBundle
.
load
(
'assets/open-sans.ttf'
);
final
font2
=
await
rootBundle
.
load
(
'assets/open-sans-bold.ttf'
);
final
font1
=
await
PdfGoogleFonts
.
openSansRegular
();
final
font2
=
await
PdfGoogleFonts
.
openSansBold
();
final
shape
=
await
rootBundle
.
loadString
(
'assets/document.svg'
);
final
swirls
=
await
rootBundle
.
loadString
(
'assets/swirls2.svg'
);
...
...
@@ -43,6 +44,10 @@ Future<Uint8List> generateDocument(
orientation:
pw
.
PageOrientation
.
portrait
,
buildBackground:
(
context
)
=>
pw
.
SvgImage
(
svg:
shape
,
fit:
pw
.
BoxFit
.
fill
),
theme:
pw
.
ThemeData
.
withFont
(
base:
font1
,
bold:
font2
,
),
),
build:
(
context
)
{
return
pw
.
Padding
(
...
...
@@ -100,6 +105,10 @@ Future<Uint8List> generateDocument(
doc
.
addPage
(
pw
.
Page
(
theme:
pw
.
ThemeData
.
withFont
(
base:
font1
,
bold:
font2
,
),
pageFormat:
format
.
copyWith
(
marginBottom:
1.5
*
PdfPageFormat
.
cm
),
orientation:
pw
.
PageOrientation
.
portrait
,
build:
(
context
)
{
...
...
@@ -124,8 +133,8 @@ Future<Uint8List> generateDocument(
doc
.
addPage
(
pw
.
MultiPage
(
theme:
pw
.
ThemeData
.
withFont
(
base:
pw
.
Font
.
ttf
(
font1
),
bold:
pw
.
Font
.
ttf
(
font2
),
base:
font1
,
bold:
font2
,
),
pageFormat:
format
.
copyWith
(
marginBottom:
1.5
*
PdfPageFormat
.
cm
),
orientation:
pw
.
PageOrientation
.
portrait
,
...
...
demo/lib/examples/invoice.dart
View file @
dc2a0bc
...
...
@@ -20,6 +20,7 @@ import 'package:flutter/services.dart';
import
'package:intl/intl.dart'
;
import
'package:pdf/pdf.dart'
;
import
'package:pdf/widgets.dart'
as
pw
;
import
'package:printing/printing.dart'
;
import
'../data.dart'
;
...
...
@@ -100,10 +101,6 @@ class Invoice {
// Create a PDF document.
final
doc
=
pw
.
Document
();
final
font1
=
await
rootBundle
.
load
(
'assets/roboto1.ttf'
);
final
font2
=
await
rootBundle
.
load
(
'assets/roboto2.ttf'
);
final
font3
=
await
rootBundle
.
load
(
'assets/roboto3.ttf'
);
_logo
=
await
rootBundle
.
loadString
(
'assets/logo.svg'
);
_bgShape
=
await
rootBundle
.
loadString
(
'assets/invoice.svg'
);
...
...
@@ -112,9 +109,9 @@ class Invoice {
pw
.
MultiPage
(
pageTheme:
_buildTheme
(
pageFormat
,
pw
.
Font
.
ttf
(
font1
),
pw
.
Font
.
ttf
(
font2
),
pw
.
Font
.
ttf
(
font3
),
await
PdfGoogleFonts
.
robotoRegular
(),
await
PdfGoogleFonts
.
robotoBold
(),
await
PdfGoogleFonts
.
robotoItalic
(),
),
header:
_buildHeader
,
footer:
_buildFooter
,
...
...
demo/lib/examples/report.dart
View file @
dc2a0bc
...
...
@@ -17,9 +17,9 @@
import
'dart:math'
;
import
'dart:typed_data'
;
import
'package:flutter/services.dart'
;
import
'package:pdf/pdf.dart'
;
import
'package:pdf/widgets.dart'
as
pw
;
import
'package:printing/printing.dart'
;
import
'../data.dart'
;
...
...
@@ -51,8 +51,8 @@ Future<Uint8List> generateReport(
final
document
=
pw
.
Document
();
final
theme
=
pw
.
ThemeData
.
withFont
(
base:
pw
.
Font
.
ttf
(
await
rootBundle
.
load
(
'assets/open-sans.ttf'
)),
bold:
pw
.
Font
.
ttf
(
await
rootBundle
.
load
(
'assets/open-sans-bold.ttf'
)),
base:
await
PdfGoogleFonts
.
openSansRegular
(),
bold:
await
PdfGoogleFonts
.
openSansBold
(),
);
// Top bar chart
...
...
demo/lib/examples/resume.dart
View file @
dc2a0bc
...
...
@@ -21,6 +21,7 @@ import 'dart:typed_data';
import
'package:flutter/services.dart'
;
import
'package:pdf/pdf.dart'
;
import
'package:pdf/widgets.dart'
as
pw
;
import
'package:printing/printing.dart'
;
import
'package:printing_demo/data.dart'
;
const
PdfColor
green
=
PdfColor
.
fromInt
(
0xff9ce5d0
);
...
...
@@ -168,9 +169,9 @@ Future<pw.PageTheme> _myPageTheme(PdfPageFormat format) async {
return
pw
.
PageTheme
(
pageFormat:
format
,
theme:
pw
.
ThemeData
.
withFont
(
base:
pw
.
Font
.
ttf
(
await
rootBundle
.
load
(
'assets/open-sans.ttf'
)),
bold:
pw
.
Font
.
ttf
(
await
rootBundle
.
load
(
'assets/open-sans-bold.ttf'
)),
icons:
pw
.
Font
.
ttf
(
await
rootBundle
.
load
(
'assets/material.ttf'
)),
base:
await
PdfGoogleFonts
.
openSansRegular
(),
bold:
await
PdfGoogleFonts
.
openSansBold
(),
icons:
await
PdfGoogleFonts
.
materialIcons
(),
),
buildBackground:
(
pw
.
Context
context
)
{
return
pw
.
FullPage
(
...
...
demo/pubspec.yaml
View file @
dc2a0bc
...
...
@@ -4,18 +4,17 @@ publish_to: "none"
version
:
1.0.0+1
environment
:
sdk
:
"
>=2.12.0
-0
<3.0.0"
sdk
:
"
>=2.12.0
<3.0.0"
flutter
:
"
>=1.16.0"
dependencies
:
flutter
:
sdk
:
flutter
http
:
^0.13.1
intl
:
^0.17.0
open_file
:
^3.1.0
path_provider
:
^2.0.1
printing
:
^5.0.4
url_launcher
:
^6.0.3
open_file
:
^3.2.1
path_provider
:
^2.0.2
printing
:
^5.3.0
url_launcher
:
^6.0.6
dev_dependencies
:
flutter_test
:
...
...
Please
register
or
login
to post a comment