diff --git a/pdf/CHANGELOG.md b/pdf/CHANGELOG.md index 7d9c6d95..2aadb813 100644 --- a/pdf/CHANGELOG.md +++ b/pdf/CHANGELOG.md @@ -3,6 +3,7 @@ * Change PdfColor.fromInt to const constructor * Fix drawShape Bézier curves * Add arcs to SVG drawShape +* Add default page margins # 1.1.0 * Rename classes to satisfy Dart conventions diff --git a/pdf/lib/src/page_format.dart b/pdf/lib/src/page_format.dart index ddb18525..5086f833 100644 --- a/pdf/lib/src/page_format.dart +++ b/pdf/lib/src/page_format.dart @@ -19,11 +19,11 @@ part of pdf; class PdfPageFormat { - static const a4 = PdfPageFormat(595.28, 841.89); - static const a3 = PdfPageFormat(841.89, 1190.55); - static const a5 = PdfPageFormat(420.94, 595.28); - static const letter = PdfPageFormat(612.0, 792.0); - static const legal = PdfPageFormat(612.0, 1008.0); + static const a3 = PdfPageFormat(29.7 * cm, 42 * cm, marginAll: 2.0 * cm); + static const a4 = PdfPageFormat(21.0 * cm, 29.7 * cm, marginAll: 2.0 * cm); + static const a5 = PdfPageFormat(14.8 * cm, 21.0 * cm, marginAll: 2.0 * cm); + static const letter = PdfPageFormat(8.5 * inch, 11.0 * inch, marginAll: inch); + static const legal = PdfPageFormat(8.5 * inch, 14.0 * inch, marginAll: inch); static const point = 1.0; static const inch = 72.0; @@ -33,15 +33,43 @@ class PdfPageFormat { final double width; final double height; - const PdfPageFormat(this.width, this.height); + final double marginTop; + final double marginBottom; + final double marginLeft; + final double marginRight; + + const PdfPageFormat(this.width, this.height, + {double marginTop = 0.0, + double marginBottom = 0.0, + double marginLeft = 0.0, + double marginRight = 0.0, + double marginAll}) + : marginTop = marginAll ?? marginTop, + marginBottom = marginAll ?? marginBottom, + marginLeft = marginAll ?? marginLeft, + marginRight = marginAll ?? marginRight; + + PdfPageFormat copyWith( + {double width, + double height, + double marginTop, + double marginBottom, + double marginLeft, + double marginRight}) { + return PdfPageFormat(width ?? this.width, height ?? this.height, + marginTop: marginTop ?? this.marginTop, + marginBottom: marginBottom ?? this.marginBottom, + marginLeft: marginLeft ?? this.marginLeft, + marginRight: marginRight ?? this.marginRight); + } PdfPoint get dimension => PdfPoint(width, height); PdfPageFormat get landscape => - width >= height ? this : PdfPageFormat(height, width); + width >= height ? this : copyWith(width: height, height: width); PdfPageFormat get portrait => - height >= width ? this : PdfPageFormat(height, width); + height >= width ? this : copyWith(width: height, height: width); @override String toString() {