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
2023-03-25 11:27:05 -0300
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
34ccefd591b62d08ad9e3273b285ce9487d75762
34ccefd5
1 parent
9726828d
Move Pdf generation settings to PdfSettings
Show whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
162 additions
and
137 deletions
pdf/CHANGELOG.md
pdf/lib/src/pdf/document.dart
pdf/lib/src/pdf/format/base.dart
pdf/lib/src/pdf/format/dict_stream.dart
pdf/lib/src/pdf/format/object_base.dart
pdf/lib/src/pdf/format/string.dart
pdf/lib/src/pdf/format/xref.dart
pdf/lib/src/pdf/graphics.dart
pdf/lib/src/pdf/obj/object.dart
pdf/lib/src/pdf/obj/object_dict.dart
pdf/lib/src/pdf/obj/object_stream.dart
pdf/lib/src/pdf/obj/type1_font.dart
pdf/test/minimal_test.dart
pdf/CHANGELOG.md
View file @
34ccefd
...
...
@@ -14,6 +14,7 @@
-
Reorganize data types
-
Improve Documents conformity
-
Make PdfXref a PdfIndirect descendent
-
Move Pdf generation settings to PdfSettings
## 3.9.0
...
...
pdf/lib/src/pdf/document.dart
View file @
34ccefd
...
...
@@ -71,11 +71,17 @@ class PdfDocument {
PdfPageMode
pageMode
=
PdfPageMode
.
none
,
DeflateCallback
?
deflate
,
bool
compress
=
true
,
this
.
verbose
=
false
,
this
.
version
=
PdfVersion
.
pdf_1_5
,
})
:
deflate
=
compress
?
(
deflate
??
defaultDeflate
)
:
null
,
prev
=
null
,
bool
verbose
=
false
,
PdfVersion
version
=
PdfVersion
.
pdf_1_5
,
})
:
prev
=
null
,
_objser
=
1
{
settings
=
PdfSettings
(
deflate:
compress
?
(
deflate
??
defaultDeflate
)
:
null
,
verbose:
verbose
,
version:
version
,
encryptCallback:
(
input
,
object
)
=>
encryption
?.
encrypt
(
input
,
object
)
??
input
,
);
// create the catalog
catalog
=
PdfCatalog
(
this
,
PdfPageList
(
this
),
pageMode:
pageMode
);
}
...
...
@@ -84,10 +90,16 @@ class PdfDocument {
this
.
prev
,
{
DeflateCallback
?
deflate
,
bool
compress
=
true
,
this
.
verbose
=
false
,
})
:
deflate
=
compress
?
(
deflate
??
defaultDeflate
)
:
null
,
_objser
=
prev
!.
size
,
version
=
prev
.
version
{
bool
verbose
=
false
,
})
:
_objser
=
prev
!.
size
{
settings
=
PdfSettings
(
deflate:
compress
?
(
deflate
??
defaultDeflate
)
:
null
,
verbose:
verbose
,
version:
prev
!.
version
,
encryptCallback:
(
input
,
object
)
=>
encryption
?.
encrypt
(
input
,
object
)
??
input
,
);
// Import the existing document
prev
!.
mergeDocument
(
this
);
}
...
...
@@ -105,8 +117,12 @@ class PdfDocument {
/// This is the Catalog object, which is required by each Pdf Document
late
final
PdfCatalog
catalog
;
/// PDF generation settings
late
final
PdfSettings
settings
;
/// PDF version to generate
final
PdfVersion
version
;
@Deprecated
(
'Use settings.version'
)
PdfVersion
get
version
=>
settings
.
version
;
/// This is the info object. Although this is an optional object, we
/// include it.
...
...
@@ -129,7 +145,8 @@ class PdfDocument {
/// Callback to compress the stream in the pdf file.
/// Use `deflate: zlib.encode` if using dart:io
/// No compression by default
final
DeflateCallback
?
deflate
;
@Deprecated
(
'Use settings.deflate'
)
DeflateCallback
?
get
deflate
=>
settings
.
deflate
;
/// Object used to encrypt the document
PdfEncryption
?
encryption
;
...
...
@@ -148,10 +165,12 @@ class PdfDocument {
Uint8List
?
_documentID
;
bool
get
compress
=>
deflate
!=
null
;
@Deprecated
(
'Use settings.compress'
)
bool
get
compress
=>
settings
.
deflate
!=
null
;
/// Output a PDF document with comments and formatted data
final
bool
verbose
;
@Deprecated
(
'Use settings.verbose'
)
bool
get
verbose
=>
settings
.
verbose
;
/// Generates the document ID
Uint8List
get
documentID
{
...
...
pdf/lib/src/pdf/format/base.dart
View file @
34ccefd
...
...
@@ -30,7 +30,13 @@ abstract class PdfDataType {
PdfStream
_toStream
()
{
final
s
=
PdfStream
();
output
(
PdfObjectBase
(
objser:
0
,
params:
this
),
s
);
output
(
PdfObjectBase
(
objser:
0
,
params:
this
,
settings:
const
PdfSettings
(),
),
s
);
return
s
;
}
...
...
pdf/lib/src/pdf/format/dict_stream.dart
View file @
34ccefd
...
...
@@ -66,9 +66,9 @@ class PdfDictStream extends PdfDict<PdfDataType> {
if
(
_values
.
containsKey
(
'/Filter'
))
{
// The data is already in the right format
_data
=
data
;
}
else
if
(
compress
&&
o
.
deflate
!=
null
)
{
}
else
if
(
compress
&&
o
.
settings
.
deflate
!=
null
)
{
// Compress the data
final
newData
=
Uint8List
.
fromList
(
o
.
deflate
!(
data
));
final
newData
=
Uint8List
.
fromList
(
o
.
settings
.
deflate
!(
data
));
if
(
newData
.
lengthInBytes
<
data
.
lengthInBytes
)
{
_values
[
'/Filter'
]
=
const
PdfName
(
'/FlateDecode'
);
_data
=
newData
;
...
...
@@ -87,8 +87,8 @@ class PdfDictStream extends PdfDict<PdfDataType> {
}
}
if
(
encrypt
&&
o
.
encryptCallback
!=
null
)
{
_data
=
o
.
encryptCallback
!(
_data
,
o
);
if
(
encrypt
&&
o
.
settings
.
encryptCallback
!=
null
)
{
_data
=
o
.
settings
.
encryptCallback
!(
_data
,
o
);
}
_values
[
'/Length'
]
=
PdfNum
(
_data
.
length
);
...
...
pdf/lib/src/pdf/format/object_base.dart
View file @
34ccefd
...
...
@@ -37,26 +37,17 @@ enum PdfVersion {
pdf_1_5
,
}
class
PdfObjectBase
<
T
extends
PdfDataType
>
with
PdfDiagnostic
{
PdfObjectBase
({
required
this
.
objser
,
this
.
objgen
=
0
,
required
this
.
params
,
class
PdfSettings
{
const
PdfSettings
({
this
.
deflate
,
this
.
encryptCallback
,
this
.
verbose
=
false
,
this
.
version
=
PdfVersion
.
pdf_1_5
,
});
/// This is the unique serial number for this object.
final
int
objser
;
/// This is the generation number for this object.
final
int
objgen
;
final
T
params
;
/// Callback used to compress the data
/// Callback to compress the streams in the pdf file.
/// Use `deflate: zlib.encode` if using dart:io
/// No compression by default
final
DeflateCallback
?
deflate
;
/// Callback used to encrypt the value of a [PdfDictStream] or a [PdfEncStream]
...
...
@@ -68,12 +59,34 @@ class PdfObjectBase<T extends PdfDataType> with PdfDiagnostic {
/// PDF version to generate
final
PdfVersion
version
;
/// Compress the document
bool
get
compress
=>
deflate
!=
null
;
}
class
PdfObjectBase
<
T
extends
PdfDataType
>
with
PdfDiagnostic
{
PdfObjectBase
({
required
this
.
objser
,
this
.
objgen
=
0
,
required
this
.
params
,
required
this
.
settings
,
});
/// This is the unique serial number for this object.
final
int
objser
;
/// This is the generation number for this object.
final
int
objgen
;
final
T
params
;
final
PdfSettings
settings
;
/// Returns the unique serial number in Pdf format
PdfIndirect
ref
()
=>
PdfIndirect
(
objser
,
objgen
);
int
output
(
PdfStream
s
)
{
assert
(()
{
if
(
verbose
)
{
if
(
settings
.
verbose
)
{
setInsertion
(
s
,
160
);
startStopwatch
();
}
...
...
@@ -86,7 +99,7 @@ class PdfObjectBase<T extends PdfDataType> with PdfDiagnostic {
s
.
putString
(
'endobj
\n
'
);
assert
(()
{
if
(
verbose
)
{
if
(
settings
.
verbose
)
{
stopStopwatch
();
debugFill
(
'Creation time:
${elapsedStopwatch / Duration.microsecondsPerSecond}
seconds'
);
...
...
@@ -98,7 +111,7 @@ class PdfObjectBase<T extends PdfDataType> with PdfDiagnostic {
}
void
writeContent
(
PdfStream
s
)
{
params
.
output
(
this
,
s
,
verbose
?
0
:
null
);
params
.
output
(
this
,
s
,
settings
.
verbose
?
0
:
null
);
s
.
putByte
(
0x0a
);
}
}
...
...
pdf/lib/src/pdf/format/string.dart
View file @
34ccefd
...
...
@@ -184,11 +184,11 @@ class PdfString extends PdfDataType {
@override
void
output
(
PdfObjectBase
o
,
PdfStream
s
,
[
int
?
indent
])
{
if
(!
encrypted
||
o
.
encryptCallback
==
null
)
{
if
(!
encrypted
||
o
.
settings
.
encryptCallback
==
null
)
{
return
_output
(
s
,
value
);
}
final
enc
=
o
.
encryptCallback
!(
value
,
o
);
final
enc
=
o
.
settings
.
encryptCallback
!(
value
,
o
);
_output
(
s
,
enc
);
}
...
...
pdf/lib/src/pdf/format/xref.dart
View file @
34ccefd
...
...
@@ -115,7 +115,7 @@ class PdfXrefTable extends PdfDataType with PdfDiagnostic {
@override
void
output
(
PdfObjectBase
o
,
PdfStream
s
,
[
int
?
indent
])
{
String
v
;
switch
(
o
.
version
)
{
switch
(
o
.
settings
.
version
)
{
case
PdfVersion
.
pdf_1_4
:
v
=
'1.4'
;
break
;
...
...
@@ -127,7 +127,7 @@ class PdfXrefTable extends PdfDataType with PdfDiagnostic {
s
.
putString
(
'%PDF-
$v
\n
'
);
s
.
putBytes
(
const
<
int
>[
0x25
,
0xC2
,
0xA5
,
0xC2
,
0xB1
,
0xC3
,
0xAB
,
0x0A
]);
assert
(()
{
if
(
o
.
verbose
)
{
if
(
o
.
settings
.
verbose
)
{
setInsertion
(
s
);
startStopwatch
();
debugFill
(
'Verbose dart_pdf'
);
...
...
@@ -146,7 +146,7 @@ class PdfXrefTable extends PdfDataType with PdfDiagnostic {
params
[
'/Root'
]
=
o
.
ref
();
switch
(
o
.
version
)
{
switch
(
o
.
settings
.
version
)
{
case
PdfVersion
.
pdf_1_4
:
xrefOffset
=
outputLegacy
(
o
,
s
);
break
;
...
...
@@ -156,7 +156,7 @@ class PdfXrefTable extends PdfDataType with PdfDiagnostic {
}
assert
(()
{
if
(
o
.
verbose
)
{
if
(
o
.
settings
.
verbose
)
{
s
.
putComment
(
''
);
s
.
putComment
(
'-'
*
78
);
s
.
putComment
(
'
$runtimeType
'
);
...
...
@@ -168,7 +168,7 @@ class PdfXrefTable extends PdfDataType with PdfDiagnostic {
s
.
putString
(
'startxref
\n
$xrefOffset
\n
%%EOF
\n
'
);
assert
(()
{
if
(
o
.
verbose
)
{
if
(
o
.
settings
.
verbose
)
{
stopStopwatch
();
debugFill
(
'Creation time:
${elapsedStopwatch / Duration.microsecondsPerSecond}
seconds'
);
...
...
@@ -195,10 +195,10 @@ class PdfXrefTable extends PdfDataType with PdfDiagnostic {
final
size
=
_offsets
.
last
.
ser
+
1
;
assert
(()
{
if
(
o
.
verbose
)
{
if
(
o
.
settings
.
verbose
)
{
s
.
putComment
(
''
);
s
.
putComment
(
'-'
*
78
);
s
.
putComment
(
'
$runtimeType
${o.version.name}
\n
$this
'
);
s
.
putComment
(
'
$runtimeType
${o.
settings.
version.name}
\n
$this
'
);
}
return
true
;
}());
...
...
@@ -237,14 +237,14 @@ class PdfXrefTable extends PdfDataType with PdfDiagnostic {
// the trailer object
assert
(()
{
if
(
o
.
verbose
)
{
if
(
o
.
settings
.
verbose
)
{
s
.
putComment
(
''
);
}
return
true
;
}());
s
.
putString
(
'trailer
\n
'
);
params
[
'/Size'
]
=
PdfNum
(
size
);
params
.
output
(
o
,
s
,
o
.
verbose
?
0
:
null
);
params
.
output
(
o
,
s
,
o
.
settings
.
verbose
?
0
:
null
);
s
.
putByte
(
0x0a
);
return
objOffset
;
...
...
@@ -304,10 +304,10 @@ class PdfXrefTable extends PdfDataType with PdfDiagnostic {
// Write the object
assert
(()
{
if
(
o
.
verbose
)
{
if
(
o
.
settings
.
verbose
)
{
s
.
putComment
(
''
);
s
.
putComment
(
'-'
*
78
);
s
.
putComment
(
'
$runtimeType
${o.version.name}
\n
$this
'
);
s
.
putComment
(
'
$runtimeType
${o.
settings.
version.name}
\n
$this
'
);
}
return
true
;
}());
...
...
@@ -322,9 +322,7 @@ class PdfXrefTable extends PdfDataType with PdfDiagnostic {
encrypt:
false
,
values:
params
.
values
,
),
deflate:
o
.
deflate
,
verbose:
o
.
verbose
,
version:
o
.
version
,
settings:
o
.
settings
,
).
output
(
s
);
return
objOffset
;
...
...
pdf/lib/src/pdf/graphics.dart
View file @
34ccefd
...
...
@@ -132,7 +132,7 @@ class PdfGraphics {
void
fillPath
({
bool
evenOdd
=
false
})
{
var
o
=
0
;
assert
(()
{
if
(
_page
.
pdfDocument
.
verbose
)
{
if
(
_page
.
pdfDocument
.
settings
.
verbose
)
{
o
=
_buf
.
offset
;
_buf
.
putString
(
' '
*
(
_indent
));
}
...
...
@@ -143,7 +143,7 @@ class PdfGraphics {
_page
.
altered
=
true
;
assert
(()
{
if
(
_page
.
pdfDocument
.
verbose
)
{
if
(
_page
.
pdfDocument
.
settings
.
verbose
)
{
_buf
.
putString
(
' '
*
math
.
max
(
0
,
_commentIndent
-
_buf
.
offset
+
o
));
_buf
.
putComment
(
'fillPath(evenOdd:
$evenOdd
)'
);
}
...
...
@@ -155,7 +155,7 @@ class PdfGraphics {
void
strokePath
({
bool
close
=
false
})
{
var
o
=
0
;
assert
(()
{
if
(
_page
.
pdfDocument
.
verbose
)
{
if
(
_page
.
pdfDocument
.
settings
.
verbose
)
{
o
=
_buf
.
offset
;
_buf
.
putString
(
' '
*
(
_indent
));
}
...
...
@@ -166,7 +166,7 @@ class PdfGraphics {
_page
.
altered
=
true
;
assert
(()
{
if
(
_page
.
pdfDocument
.
verbose
)
{
if
(
_page
.
pdfDocument
.
settings
.
verbose
)
{
_buf
.
putString
(
' '
*
math
.
max
(
0
,
_commentIndent
-
_buf
.
offset
+
o
));
_buf
.
putComment
(
'strokePath(close:
$close
)'
);
}
...
...
@@ -177,7 +177,7 @@ class PdfGraphics {
/// Close the path with a line
void
closePath
()
{
assert
(()
{
if
(
_page
.
pdfDocument
.
verbose
)
{
if
(
_page
.
pdfDocument
.
settings
.
verbose
)
{
_buf
.
putString
(
' '
*
(
_indent
));
}
return
true
;
...
...
@@ -187,7 +187,7 @@ class PdfGraphics {
_page
.
altered
=
true
;
assert
(()
{
if
(
_page
.
pdfDocument
.
verbose
)
{
if
(
_page
.
pdfDocument
.
settings
.
verbose
)
{
_buf
.
putString
(
' '
*
(
_commentIndent
-
2
-
_indent
));
_buf
.
putComment
(
'closePath()'
);
}
...
...
@@ -200,7 +200,7 @@ class PdfGraphics {
void
clipPath
({
bool
evenOdd
=
false
,
bool
end
=
true
})
{
var
o
=
0
;
assert
(()
{
if
(
_page
.
pdfDocument
.
verbose
)
{
if
(
_page
.
pdfDocument
.
settings
.
verbose
)
{
o
=
_buf
.
offset
;
_buf
.
putString
(
' '
*
(
_indent
));
}
...
...
@@ -210,7 +210,7 @@ class PdfGraphics {
_buf
.
putString
(
'W
${evenOdd ? '*' : ''}${end ? ' n' : ''}
'
);
assert
(()
{
if
(
_page
.
pdfDocument
.
verbose
)
{
if
(
_page
.
pdfDocument
.
settings
.
verbose
)
{
_buf
.
putString
(
' '
*
math
.
max
(
0
,
_commentIndent
-
_buf
.
offset
+
o
));
_buf
.
putComment
(
'clipPath(evenOdd:
$evenOdd
, end:
$end
)'
);
}
...
...
@@ -223,7 +223,7 @@ class PdfGraphics {
void
fillAndStrokePath
({
bool
evenOdd
=
false
,
bool
close
=
false
})
{
var
o
=
0
;
assert
(()
{
if
(
_page
.
pdfDocument
.
verbose
)
{
if
(
_page
.
pdfDocument
.
settings
.
verbose
)
{
o
=
_buf
.
offset
;
_buf
.
putString
(
' '
*
(
_indent
));
}
...
...
@@ -234,7 +234,7 @@ class PdfGraphics {
_page
.
altered
=
true
;
assert
(()
{
if
(
_page
.
pdfDocument
.
verbose
)
{
if
(
_page
.
pdfDocument
.
settings
.
verbose
)
{
_buf
.
putString
(
' '
*
math
.
max
(
0
,
_commentIndent
-
_buf
.
offset
+
o
));
_buf
.
putComment
(
'fillAndStrokePath(evenOdd:
$evenOdd
, close:
$close
)'
);
}
...
...
@@ -246,7 +246,7 @@ class PdfGraphics {
void
applyShader
(
PdfShading
shader
)
{
var
o
=
0
;
assert
(()
{
if
(
_page
.
pdfDocument
.
verbose
)
{
if
(
_page
.
pdfDocument
.
settings
.
verbose
)
{
o
=
_buf
.
offset
;
_buf
.
putString
(
' '
*
(
_indent
));
}
...
...
@@ -259,7 +259,7 @@ class PdfGraphics {
_page
.
altered
=
true
;
assert
(()
{
if
(
_page
.
pdfDocument
.
verbose
)
{
if
(
_page
.
pdfDocument
.
settings
.
verbose
)
{
_buf
.
putString
(
' '
*
math
.
max
(
0
,
_commentIndent
-
_buf
.
offset
+
o
));
_buf
.
putComment
(
'applyShader(
${shader.ref()}
)'
);
}
...
...
@@ -276,7 +276,7 @@ class PdfGraphics {
if
(
_contextQueue
.
isNotEmpty
)
{
assert
(()
{
_indent
-=
_indentAmount
;
if
(
_page
.
pdfDocument
.
verbose
)
{
if
(
_page
.
pdfDocument
.
settings
.
verbose
)
{
_buf
.
putString
(
' '
*
(
_indent
));
}
return
true
;
...
...
@@ -287,7 +287,7 @@ class PdfGraphics {
_context
=
_contextQueue
.
removeLast
();
assert
(()
{
if
(
_page
.
pdfDocument
.
verbose
)
{
if
(
_page
.
pdfDocument
.
settings
.
verbose
)
{
_buf
.
putString
(
' '
*
(
_commentIndent
-
2
-
_indent
));
_buf
.
putComment
(
'restoreContext()'
);
}
...
...
@@ -299,7 +299,7 @@ class PdfGraphics {
/// Save the graphic context
void
saveContext
()
{
assert
(()
{
if
(
_page
.
pdfDocument
.
verbose
)
{
if
(
_page
.
pdfDocument
.
settings
.
verbose
)
{
_buf
.
putString
(
' '
*
(
_indent
));
}
return
true
;
...
...
@@ -307,7 +307,7 @@ class PdfGraphics {
_buf
.
putString
(
'q '
);
_contextQueue
.
addLast
(
_context
.
copy
());
assert
(()
{
if
(
_page
.
pdfDocument
.
verbose
)
{
if
(
_page
.
pdfDocument
.
settings
.
verbose
)
{
_buf
.
putString
(
' '
*
(
_commentIndent
-
2
-
_indent
));
_buf
.
putComment
(
'saveContext()'
);
}
...
...
@@ -320,7 +320,7 @@ class PdfGraphics {
void
drawImage
(
PdfImage
img
,
double
x
,
double
y
,
[
double
?
w
,
double
?
h
])
{
var
o
=
0
;
assert
(()
{
if
(
_page
.
pdfDocument
.
verbose
)
{
if
(
_page
.
pdfDocument
.
settings
.
verbose
)
{
o
=
_buf
.
offset
;
_buf
.
putString
(
' '
*
(
_indent
));
}
...
...
@@ -366,7 +366,7 @@ class PdfGraphics {
_page
.
altered
=
true
;
assert
(()
{
if
(
_page
.
pdfDocument
.
verbose
)
{
if
(
_page
.
pdfDocument
.
settings
.
verbose
)
{
_buf
.
putString
(
' '
*
math
.
max
(
0
,
_commentIndent
-
_buf
.
offset
+
o
));
_buf
.
putComment
(
'drawImage(
${img.ref()}
, x:
$x
, y:
$y
, w:
$w
, h:
$h
)'
);
}
...
...
@@ -403,7 +403,7 @@ class PdfGraphics {
void
drawRect
(
double
x
,
double
y
,
double
w
,
double
h
)
{
var
o
=
0
;
assert
(()
{
if
(
_page
.
pdfDocument
.
verbose
)
{
if
(
_page
.
pdfDocument
.
settings
.
verbose
)
{
o
=
_buf
.
offset
;
_buf
.
putString
(
' '
*
(
_indent
));
}
...
...
@@ -414,7 +414,7 @@ class PdfGraphics {
_buf
.
putString
(
' re '
);
assert
(()
{
if
(
_page
.
pdfDocument
.
verbose
)
{
if
(
_page
.
pdfDocument
.
settings
.
verbose
)
{
_buf
.
putString
(
' '
*
math
.
max
(
0
,
_commentIndent
-
_buf
.
offset
+
o
));
_buf
.
putComment
(
'drawRect(x:
$x
, y:
$y
, w:
$w
, h:
$h
)'
);
}
...
...
@@ -453,7 +453,7 @@ class PdfGraphics {
})
{
var
o
=
0
;
assert
(()
{
if
(
_page
.
pdfDocument
.
verbose
)
{
if
(
_page
.
pdfDocument
.
settings
.
verbose
)
{
o
=
_buf
.
offset
;
_buf
.
putString
(
' '
*
(
_indent
));
}
...
...
@@ -486,7 +486,7 @@ class PdfGraphics {
}
assert
(()
{
if
(
_page
.
pdfDocument
.
verbose
)
{
if
(
_page
.
pdfDocument
.
settings
.
verbose
)
{
_buf
.
putString
(
' '
*
math
.
max
(
0
,
_commentIndent
-
_buf
.
offset
+
o
));
_buf
.
putComment
(
'setFont(
${font.ref()}
, size:
$size
, charSpace:
$charSpace
, wordSpace:
$wordSpace
, scale:
$scale
, mode:
${mode.name}
, rise:
$rise
)'
);
...
...
@@ -509,7 +509,7 @@ class PdfGraphics {
double
?
rise
,
})
{
assert
(()
{
if
(
_page
.
pdfDocument
.
verbose
)
{
if
(
_page
.
pdfDocument
.
settings
.
verbose
)
{
_buf
.
putString
(
' '
*
(
_indent
));
}
return
true
;
...
...
@@ -518,7 +518,7 @@ class PdfGraphics {
_buf
.
putString
(
'BT '
);
assert
(()
{
if
(
_page
.
pdfDocument
.
verbose
)
{
if
(
_page
.
pdfDocument
.
settings
.
verbose
)
{
_buf
.
putString
(
' '
*
(
_commentIndent
-
3
-
_indent
));
_buf
.
putComment
(
'beginText()'
);
_indent
+=
_indentAmount
;
...
...
@@ -535,7 +535,7 @@ class PdfGraphics {
var
o
=
0
;
assert
(()
{
if
(
_page
.
pdfDocument
.
verbose
)
{
if
(
_page
.
pdfDocument
.
settings
.
verbose
)
{
o
=
_buf
.
offset
;
_buf
.
putString
(
' '
*
(
_indent
));
}
...
...
@@ -546,7 +546,7 @@ class PdfGraphics {
_buf
.
putString
(
' Td '
);
assert
(()
{
if
(
_page
.
pdfDocument
.
verbose
)
{
if
(
_page
.
pdfDocument
.
settings
.
verbose
)
{
_buf
.
putString
(
' '
*
math
.
max
(
0
,
_commentIndent
-
_buf
.
offset
+
o
));
_buf
.
putComment
(
'moveCursor(
$x
,
$y
)'
);
o
=
_buf
.
offset
;
...
...
@@ -560,7 +560,7 @@ class PdfGraphics {
_buf
.
putString
(
']TJ '
);
assert
(()
{
if
(
_page
.
pdfDocument
.
verbose
)
{
if
(
_page
.
pdfDocument
.
settings
.
verbose
)
{
_buf
.
putString
(
' '
*
math
.
max
(
0
,
_commentIndent
-
_buf
.
offset
+
o
));
_buf
.
putComment
(
'drawString("
$s
")'
);
o
=
_buf
.
offset
;
...
...
@@ -573,7 +573,7 @@ class PdfGraphics {
_buf
.
putString
(
'ET '
);
assert
(()
{
if
(
_page
.
pdfDocument
.
verbose
)
{
if
(
_page
.
pdfDocument
.
settings
.
verbose
)
{
_buf
.
putString
(
' '
*
(
_commentIndent
-
3
-
_indent
));
_buf
.
putComment
(
'endText()'
);
}
...
...
@@ -585,7 +585,7 @@ class PdfGraphics {
void
reset
()
{
assert
(()
{
if
(
_page
.
pdfDocument
.
verbose
)
{
if
(
_page
.
pdfDocument
.
settings
.
verbose
)
{
_buf
.
putString
(
' '
*
(
_indent
));
}
return
true
;
...
...
@@ -594,7 +594,7 @@ class PdfGraphics {
_buf
.
putString
(
'0 Tr '
);
assert
(()
{
if
(
_page
.
pdfDocument
.
verbose
)
{
if
(
_page
.
pdfDocument
.
settings
.
verbose
)
{
_buf
.
putString
(
' '
*
(
_commentIndent
-
5
-
_indent
));
_buf
.
putComment
(
'reset()'
);
}
...
...
@@ -612,7 +612,7 @@ class PdfGraphics {
void
setFillColor
(
PdfColor
?
color
)
{
var
o
=
0
;
assert
(()
{
if
(
_page
.
pdfDocument
.
verbose
)
{
if
(
_page
.
pdfDocument
.
settings
.
verbose
)
{
o
=
_buf
.
offset
;
_buf
.
putString
(
' '
*
(
_indent
));
}
...
...
@@ -630,7 +630,7 @@ class PdfGraphics {
}
assert
(()
{
if
(
_page
.
pdfDocument
.
verbose
)
{
if
(
_page
.
pdfDocument
.
settings
.
verbose
)
{
_buf
.
putString
(
' '
*
math
.
max
(
0
,
_commentIndent
-
_buf
.
offset
+
o
));
_buf
.
putComment
(
'setFillColor(
${color?.toHex()}
)'
);
}
...
...
@@ -642,7 +642,7 @@ class PdfGraphics {
void
setStrokeColor
(
PdfColor
?
color
)
{
var
o
=
0
;
assert
(()
{
if
(
_page
.
pdfDocument
.
verbose
)
{
if
(
_page
.
pdfDocument
.
settings
.
verbose
)
{
o
=
_buf
.
offset
;
_buf
.
putString
(
' '
*
(
_indent
));
}
...
...
@@ -660,7 +660,7 @@ class PdfGraphics {
}
assert
(()
{
if
(
_page
.
pdfDocument
.
verbose
)
{
if
(
_page
.
pdfDocument
.
settings
.
verbose
)
{
_buf
.
putString
(
' '
*
math
.
max
(
0
,
_commentIndent
-
_buf
.
offset
+
o
));
_buf
.
putComment
(
'setStrokeColor(
${color?.toHex()}
)'
);
}
...
...
@@ -672,7 +672,7 @@ class PdfGraphics {
void
setFillPattern
(
PdfPattern
pattern
)
{
var
o
=
0
;
assert
(()
{
if
(
_page
.
pdfDocument
.
verbose
)
{
if
(
_page
.
pdfDocument
.
settings
.
verbose
)
{
o
=
_buf
.
offset
;
_buf
.
putString
(
' '
*
(
_indent
));
}
...
...
@@ -684,7 +684,7 @@ class PdfGraphics {
_buf
.
putString
(
'/Pattern cs
${pattern.name}
scn '
);
assert
(()
{
if
(
_page
.
pdfDocument
.
verbose
)
{
if
(
_page
.
pdfDocument
.
settings
.
verbose
)
{
_buf
.
putString
(
' '
*
math
.
max
(
0
,
_commentIndent
-
_buf
.
offset
+
o
));
_buf
.
putComment
(
'setFillPattern(
${pattern.ref()}
)'
);
}
...
...
@@ -696,7 +696,7 @@ class PdfGraphics {
void
setStrokePattern
(
PdfPattern
pattern
)
{
var
o
=
0
;
assert
(()
{
if
(
_page
.
pdfDocument
.
verbose
)
{
if
(
_page
.
pdfDocument
.
settings
.
verbose
)
{
o
=
_buf
.
offset
;
_buf
.
putString
(
' '
*
(
_indent
));
}
...
...
@@ -708,7 +708,7 @@ class PdfGraphics {
_buf
.
putString
(
'/Pattern CS
${pattern.name}
SCN '
);
assert
(()
{
if
(
_page
.
pdfDocument
.
verbose
)
{
if
(
_page
.
pdfDocument
.
settings
.
verbose
)
{
_buf
.
putString
(
' '
*
math
.
max
(
0
,
_commentIndent
-
_buf
.
offset
+
o
));
_buf
.
putComment
(
'setStrokePattern(
${pattern.ref()}
)'
);
}
...
...
@@ -720,7 +720,7 @@ class PdfGraphics {
void
setGraphicState
(
PdfGraphicState
state
)
{
var
o
=
0
;
assert
(()
{
if
(
_page
.
pdfDocument
.
verbose
)
{
if
(
_page
.
pdfDocument
.
settings
.
verbose
)
{
o
=
_buf
.
offset
;
_buf
.
putString
(
' '
*
(
_indent
));
}
...
...
@@ -731,7 +731,7 @@ class PdfGraphics {
_buf
.
putString
(
'
$name
gs '
);
assert
(()
{
if
(
_page
.
pdfDocument
.
verbose
)
{
if
(
_page
.
pdfDocument
.
settings
.
verbose
)
{
_buf
.
putString
(
' '
*
math
.
max
(
0
,
_commentIndent
-
_buf
.
offset
+
o
));
_buf
.
putComment
(
'setGraphicState(
$state
)'
);
}
...
...
@@ -743,7 +743,7 @@ class PdfGraphics {
void
setTransform
(
Matrix4
t
)
{
var
o
=
0
;
assert
(()
{
if
(
_page
.
pdfDocument
.
verbose
)
{
if
(
_page
.
pdfDocument
.
settings
.
verbose
)
{
o
=
_buf
.
offset
;
_buf
.
putString
(
' '
*
(
_indent
));
}
...
...
@@ -757,7 +757,7 @@ class PdfGraphics {
_context
.
ctm
.
multiply
(
t
);
assert
(()
{
if
(
_page
.
pdfDocument
.
verbose
)
{
if
(
_page
.
pdfDocument
.
settings
.
verbose
)
{
final
n
=
math
.
max
(
0
,
_commentIndent
-
_buf
.
offset
+
o
);
_buf
.
putString
(
' '
*
n
);
_buf
.
putComment
(
'setTransform(
$s
)'
);
...
...
@@ -775,7 +775,7 @@ class PdfGraphics {
void
lineTo
(
double
x
,
double
y
)
{
var
o
=
0
;
assert
(()
{
if
(
_page
.
pdfDocument
.
verbose
)
{
if
(
_page
.
pdfDocument
.
settings
.
verbose
)
{
o
=
_buf
.
offset
;
_buf
.
putString
(
' '
*
(
_indent
));
}
...
...
@@ -786,7 +786,7 @@ class PdfGraphics {
_buf
.
putString
(
' l '
);
assert
(()
{
if
(
_page
.
pdfDocument
.
verbose
)
{
if
(
_page
.
pdfDocument
.
settings
.
verbose
)
{
_buf
.
putString
(
' '
*
math
.
max
(
0
,
_commentIndent
-
_buf
.
offset
+
o
));
_buf
.
putComment
(
'lineTo(
$x
,
$y
)'
);
}
...
...
@@ -798,7 +798,7 @@ class PdfGraphics {
void
moveTo
(
double
x
,
double
y
)
{
var
o
=
0
;
assert
(()
{
if
(
_page
.
pdfDocument
.
verbose
)
{
if
(
_page
.
pdfDocument
.
settings
.
verbose
)
{
o
=
_buf
.
offset
;
_buf
.
putString
(
' '
*
(
_indent
));
}
...
...
@@ -809,7 +809,7 @@ class PdfGraphics {
_buf
.
putString
(
' m '
);
assert
(()
{
if
(
_page
.
pdfDocument
.
verbose
)
{
if
(
_page
.
pdfDocument
.
settings
.
verbose
)
{
_buf
.
putString
(
' '
*
math
.
max
(
0
,
_commentIndent
-
_buf
.
offset
+
o
));
_buf
.
putComment
(
'moveTo(
$x
,
$y
)'
);
}
...
...
@@ -824,7 +824,7 @@ class PdfGraphics {
double
x1
,
double
y1
,
double
x2
,
double
y2
,
double
x3
,
double
y3
)
{
var
o
=
0
;
assert
(()
{
if
(
_page
.
pdfDocument
.
verbose
)
{
if
(
_page
.
pdfDocument
.
settings
.
verbose
)
{
o
=
_buf
.
offset
;
_buf
.
putString
(
' '
*
(
_indent
));
}
...
...
@@ -835,7 +835,7 @@ class PdfGraphics {
_buf
.
putString
(
' c '
);
assert
(()
{
if
(
_page
.
pdfDocument
.
verbose
)
{
if
(
_page
.
pdfDocument
.
settings
.
verbose
)
{
_buf
.
putString
(
' '
*
math
.
max
(
0
,
_commentIndent
-
_buf
.
offset
+
o
));
_buf
.
putComment
(
'curveTo(
$x1
,
$y1
,
$x2
,
$y2
,
$x3
,
$y3
)'
);
}
...
...
@@ -1001,7 +1001,7 @@ class PdfGraphics {
/// Set line starting and ending cap type
void
setLineCap
(
PdfLineCap
cap
)
{
assert
(()
{
if
(
_page
.
pdfDocument
.
verbose
)
{
if
(
_page
.
pdfDocument
.
settings
.
verbose
)
{
_buf
.
putString
(
' '
*
(
_indent
));
}
return
true
;
...
...
@@ -1010,7 +1010,7 @@ class PdfGraphics {
_buf
.
putString
(
'
${cap.index}
J '
);
assert
(()
{
if
(
_page
.
pdfDocument
.
verbose
)
{
if
(
_page
.
pdfDocument
.
settings
.
verbose
)
{
_buf
.
putString
(
' '
*
(
_commentIndent
-
4
-
_indent
));
_buf
.
putComment
(
'setLineCap(
${cap.name}
)'
);
}
...
...
@@ -1021,7 +1021,7 @@ class PdfGraphics {
/// Set line join type
void
setLineJoin
(
PdfLineJoin
join
)
{
assert
(()
{
if
(
_page
.
pdfDocument
.
verbose
)
{
if
(
_page
.
pdfDocument
.
settings
.
verbose
)
{
_buf
.
putString
(
' '
*
(
_indent
));
}
return
true
;
...
...
@@ -1030,7 +1030,7 @@ class PdfGraphics {
_buf
.
putString
(
'
${join.index}
j '
);
assert
(()
{
if
(
_page
.
pdfDocument
.
verbose
)
{
if
(
_page
.
pdfDocument
.
settings
.
verbose
)
{
_buf
.
putString
(
' '
*
(
_commentIndent
-
4
-
_indent
));
_buf
.
putComment
(
'setLineJoin(
${join.name}
)'
);
}
...
...
@@ -1042,7 +1042,7 @@ class PdfGraphics {
void
setLineWidth
(
double
width
)
{
var
o
=
0
;
assert
(()
{
if
(
_page
.
pdfDocument
.
verbose
)
{
if
(
_page
.
pdfDocument
.
settings
.
verbose
)
{
o
=
_buf
.
offset
;
_buf
.
putString
(
' '
*
(
_indent
));
}
...
...
@@ -1053,7 +1053,7 @@ class PdfGraphics {
_buf
.
putString
(
' w '
);
assert
(()
{
if
(
_page
.
pdfDocument
.
verbose
)
{
if
(
_page
.
pdfDocument
.
settings
.
verbose
)
{
_buf
.
putString
(
' '
*
math
.
max
(
0
,
_commentIndent
-
_buf
.
offset
+
o
));
_buf
.
putComment
(
'setLineWidth(
$width
)'
);
}
...
...
@@ -1065,7 +1065,7 @@ class PdfGraphics {
void
setMiterLimit
(
double
limit
)
{
var
o
=
0
;
assert
(()
{
if
(
_page
.
pdfDocument
.
verbose
)
{
if
(
_page
.
pdfDocument
.
settings
.
verbose
)
{
o
=
_buf
.
offset
;
_buf
.
putString
(
' '
*
(
_indent
));
}
...
...
@@ -1077,7 +1077,7 @@ class PdfGraphics {
_buf
.
putString
(
' M '
);
assert
(()
{
if
(
_page
.
pdfDocument
.
verbose
)
{
if
(
_page
.
pdfDocument
.
settings
.
verbose
)
{
_buf
.
putString
(
' '
*
math
.
max
(
0
,
_commentIndent
-
_buf
.
offset
+
o
));
_buf
.
putComment
(
'setMiterLimit(
$limit
)'
);
}
...
...
@@ -1092,7 +1092,7 @@ class PdfGraphics {
void
setLineDashPattern
([
List
<
num
>
array
=
const
<
num
>[],
int
phase
=
0
])
{
var
o
=
0
;
assert
(()
{
if
(
_page
.
pdfDocument
.
verbose
)
{
if
(
_page
.
pdfDocument
.
settings
.
verbose
)
{
o
=
_buf
.
offset
;
_buf
.
putString
(
' '
*
(
_indent
));
}
...
...
@@ -1103,7 +1103,7 @@ class PdfGraphics {
_buf
.
putString
(
'
$phase
d '
);
assert
(()
{
if
(
_page
.
pdfDocument
.
verbose
)
{
if
(
_page
.
pdfDocument
.
settings
.
verbose
)
{
_buf
.
putString
(
' '
*
math
.
max
(
0
,
_commentIndent
-
_buf
.
offset
+
o
));
_buf
.
putComment
(
'setLineDashPattern(
$array
,
$phase
)'
);
}
...
...
@@ -1114,7 +1114,7 @@ class PdfGraphics {
void
markContentBegin
(
PdfName
tag
)
{
var
o
=
0
;
assert
(()
{
if
(
_page
.
pdfDocument
.
verbose
)
{
if
(
_page
.
pdfDocument
.
settings
.
verbose
)
{
o
=
_buf
.
offset
;
_buf
.
putString
(
' '
*
(
_indent
));
}
...
...
@@ -1125,7 +1125,7 @@ class PdfGraphics {
_buf
.
putString
(
' BMC '
);
assert
(()
{
if
(
_page
.
pdfDocument
.
verbose
)
{
if
(
_page
.
pdfDocument
.
settings
.
verbose
)
{
_buf
.
putString
(
' '
*
math
.
max
(
0
,
_commentIndent
-
_buf
.
offset
+
o
));
_buf
.
putComment
(
'markContentBegin(
$tag
)'
);
}
...
...
@@ -1135,7 +1135,7 @@ class PdfGraphics {
void
markContentEnd
()
{
assert
(()
{
if
(
_page
.
pdfDocument
.
verbose
)
{
if
(
_page
.
pdfDocument
.
settings
.
verbose
)
{
_buf
.
putString
(
' '
*
(
_indent
));
}
return
true
;
...
...
@@ -1144,7 +1144,7 @@ class PdfGraphics {
_buf
.
putString
(
'EMC '
);
assert
(()
{
if
(
_page
.
pdfDocument
.
verbose
)
{
if
(
_page
.
pdfDocument
.
settings
.
verbose
)
{
_buf
.
putString
(
' '
*
(
_commentIndent
-
4
-
_indent
));
_buf
.
putComment
(
'markContentEnd()'
);
}
...
...
pdf/lib/src/pdf/obj/object.dart
View file @
34ccefd
...
...
@@ -33,6 +33,7 @@ abstract class PdfObject<T extends PdfDataType> extends PdfObjectBase<T> {
objser:
objser
??
pdfDocument
.
genSerial
(),
objgen:
objgen
,
params:
params
,
settings:
pdfDocument
.
settings
,
)
{
pdfDocument
.
objects
.
add
(
this
);
}
...
...
@@ -42,18 +43,6 @@ abstract class PdfObject<T extends PdfDataType> extends PdfObjectBase<T> {
var
inUse
=
true
;
@override
DeflateCallback
?
get
deflate
=>
pdfDocument
.
deflate
;
@override
PdfEncryptCallback
?
get
encryptCallback
=>
pdfDocument
.
encryption
?.
encrypt
;
@override
bool
get
verbose
=>
pdfDocument
.
verbose
;
@override
PdfVersion
get
version
=>
pdfDocument
.
version
;
/// Prepare the object to be written to the stream
@mustCallSuper
void
prepare
()
{}
...
...
pdf/lib/src/pdf/obj/object_dict.dart
View file @
34ccefd
...
...
@@ -38,7 +38,7 @@ class PdfObjectDict extends PdfObject<PdfDict> {
@override
void
writeContent
(
PdfStream
s
)
{
if
(
params
.
isNotEmpty
)
{
params
.
output
(
this
,
s
,
pdfDocument
.
verbose
?
0
:
null
);
params
.
output
(
this
,
s
,
pdfDocument
.
settings
.
verbose
?
0
:
null
);
s
.
putByte
(
0x0a
);
}
}
...
...
pdf/lib/src/pdf/obj/object_stream.dart
View file @
34ccefd
...
...
@@ -40,7 +40,7 @@ class PdfObjectStream extends PdfObjectDict {
isBinary:
isBinary
,
values:
params
.
values
,
data:
buf
.
output
(),
).
output
(
this
,
s
,
pdfDocument
.
verbose
?
0
:
null
);
).
output
(
this
,
s
,
pdfDocument
.
settings
.
verbose
?
0
:
null
);
s
.
putByte
(
0x0a
);
}
}
...
...
pdf/lib/src/pdf/obj/type1_font.dart
View file @
34ccefd
...
...
@@ -52,7 +52,7 @@ class PdfType1Font extends PdfFont {
}()),
super
.
create
(
pdfDocument
,
subtype:
'/Type1'
)
{
params
[
'/BaseFont'
]
=
PdfName
(
'/
$fontName
'
);
if
(
version
.
index
>=
PdfVersion
.
pdf_1_5
.
index
)
{
if
(
settings
.
version
.
index
>=
PdfVersion
.
pdf_1_5
.
index
)
{
params
[
'/FirstChar'
]
=
const
PdfNum
(
0
);
params
[
'/LastChar'
]
=
const
PdfNum
(
256
);
params
[
'/Widths'
]
=
PdfArray
.
fromNum
(
widths
.
map
((
e
)
=>
e
*
1000
));
...
...
pdf/test/minimal_test.dart
View file @
34ccefd
...
...
@@ -24,13 +24,15 @@ import 'package:test/test.dart';
void
main
(
)
{
test
(
'Pdf Minimal'
,
()
async
{
var
objser
=
1
;
const
verbose
=
true
;
const
version
=
PdfVersion
.
pdf_1_4
;
const
settings
=
PdfSettings
(
verbose:
true
,
version:
PdfVersion
.
pdf_1_4
,
);
final
pages
=
PdfObjectBase
(
objser:
objser
++,
verbose:
verbose
,
version:
version
,
settings:
settings
,
params:
PdfDict
({
'/Type'
:
const
PdfName
(
'/Pages'
),
'/Count'
:
const
PdfNum
(
1
),
...
...
@@ -38,16 +40,14 @@ void main() {
final
content
=
PdfObjectBase
(
objser:
objser
++,
verbose:
verbose
,
version:
version
,
settings:
settings
,
params:
PdfDictStream
(
data:
latin1
.
encode
(
'30 811.88976 m 200 641.88976 l S'
),
));
final
page
=
PdfObjectBase
(
objser:
objser
++,
verbose:
verbose
,
version:
version
,
settings:
settings
,
params:
PdfDict
({
'/Type'
:
const
PdfName
(
'/Page'
),
'/Parent'
:
pages
.
ref
(),
...
...
@@ -64,8 +64,7 @@ void main() {
final
catalog
=
PdfObjectBase
(
objser:
objser
++,
verbose:
verbose
,
version:
version
,
settings:
settings
,
params:
PdfDict
({
'/Type'
:
const
PdfName
(
'/Catalog'
),
'/Pages'
:
pages
.
ref
(),
...
...
Please
register
or
login
to post a comment