Showing
9 changed files
with
68 additions
and
49 deletions
| @@ -78,7 +78,8 @@ class PdfDocument { | @@ -78,7 +78,8 @@ class PdfDocument { | ||
| 78 | PdfPageMode pageMode = PdfPageMode.none, | 78 | PdfPageMode pageMode = PdfPageMode.none, |
| 79 | DeflateCallback? deflate, | 79 | DeflateCallback? deflate, |
| 80 | bool compress = true, | 80 | bool compress = true, |
| 81 | - this.version = PdfVersion.pdf_1_4, | 81 | + this.verbose = false, |
| 82 | + this.version = PdfVersion.pdf_1_5, | ||
| 82 | }) : deflate = compress ? (deflate ?? defaultDeflate) : null, | 83 | }) : deflate = compress ? (deflate ?? defaultDeflate) : null, |
| 83 | prev = null, | 84 | prev = null, |
| 84 | _objser = 1 { | 85 | _objser = 1 { |
| @@ -93,6 +94,7 @@ class PdfDocument { | @@ -93,6 +94,7 @@ class PdfDocument { | ||
| 93 | PdfPageMode pageMode = PdfPageMode.none, | 94 | PdfPageMode pageMode = PdfPageMode.none, |
| 94 | DeflateCallback? deflate, | 95 | DeflateCallback? deflate, |
| 95 | bool compress = true, | 96 | bool compress = true, |
| 97 | + this.verbose = false, | ||
| 96 | }) : deflate = compress ? (deflate ?? defaultDeflate) : null, | 98 | }) : deflate = compress ? (deflate ?? defaultDeflate) : null, |
| 97 | _objser = prev!.size, | 99 | _objser = prev!.size, |
| 98 | version = prev.version { | 100 | version = prev.version { |
| @@ -163,6 +165,8 @@ class PdfDocument { | @@ -163,6 +165,8 @@ class PdfDocument { | ||
| 163 | 165 | ||
| 164 | bool get compress => deflate != null; | 166 | bool get compress => deflate != null; |
| 165 | 167 | ||
| 168 | + final bool verbose; | ||
| 169 | + | ||
| 166 | /// Generates the document ID | 170 | /// Generates the document ID |
| 167 | Uint8List get documentID { | 171 | Uint8List get documentID { |
| 168 | if (_documentID == null) { | 172 | if (_documentID == null) { |
| @@ -205,7 +209,7 @@ class PdfDocument { | @@ -205,7 +209,7 @@ class PdfDocument { | ||
| 205 | 209 | ||
| 206 | /// This writes the document to an OutputStream. | 210 | /// This writes the document to an OutputStream. |
| 207 | Future<void> _write(PdfStream os) async { | 211 | Future<void> _write(PdfStream os) async { |
| 208 | - final pos = PdfOutput(os, version, compress); | 212 | + final pos = PdfOutput(os, version, verbose); |
| 209 | 213 | ||
| 210 | // Write each object to the [PdfStream]. We call via the output | 214 | // Write each object to the [PdfStream]. We call via the output |
| 211 | // as that builds the xref table | 215 | // as that builds the xref table |
| @@ -123,7 +123,7 @@ class PdfGraphics { | @@ -123,7 +123,7 @@ class PdfGraphics { | ||
| 123 | /// set evenOdd to false to use the nonzero winding number rule to determine the region to fill and to true to use the even-odd rule to determine the region to fill | 123 | /// set evenOdd to false to use the nonzero winding number rule to determine the region to fill and to true to use the even-odd rule to determine the region to fill |
| 124 | void fillPath({bool evenOdd = false}) { | 124 | void fillPath({bool evenOdd = false}) { |
| 125 | assert(() { | 125 | assert(() { |
| 126 | - if (!_page.pdfDocument.compress) { | 126 | + if (_page.pdfDocument.verbose) { |
| 127 | _buf.putComment('fillPath evenOdd:$evenOdd'); | 127 | _buf.putComment('fillPath evenOdd:$evenOdd'); |
| 128 | } | 128 | } |
| 129 | return true; | 129 | return true; |
| @@ -135,7 +135,7 @@ class PdfGraphics { | @@ -135,7 +135,7 @@ class PdfGraphics { | ||
| 135 | /// Draw the contour of the previously defined shape | 135 | /// Draw the contour of the previously defined shape |
| 136 | void strokePath({bool close = false}) { | 136 | void strokePath({bool close = false}) { |
| 137 | assert(() { | 137 | assert(() { |
| 138 | - if (!_page.pdfDocument.compress) { | 138 | + if (_page.pdfDocument.verbose) { |
| 139 | _buf.putComment('strokePath close:$close'); | 139 | _buf.putComment('strokePath close:$close'); |
| 140 | } | 140 | } |
| 141 | return true; | 141 | return true; |
| @@ -147,7 +147,7 @@ class PdfGraphics { | @@ -147,7 +147,7 @@ class PdfGraphics { | ||
| 147 | /// Close the path with a line | 147 | /// Close the path with a line |
| 148 | void closePath() { | 148 | void closePath() { |
| 149 | assert(() { | 149 | assert(() { |
| 150 | - if (!_page.pdfDocument.compress) { | 150 | + if (_page.pdfDocument.verbose) { |
| 151 | _buf.putComment('closePath'); | 151 | _buf.putComment('closePath'); |
| 152 | } | 152 | } |
| 153 | return true; | 153 | return true; |
| @@ -160,7 +160,7 @@ class PdfGraphics { | @@ -160,7 +160,7 @@ class PdfGraphics { | ||
| 160 | /// to prevent any further drawing outside | 160 | /// to prevent any further drawing outside |
| 161 | void clipPath({bool evenOdd = false, bool end = true}) { | 161 | void clipPath({bool evenOdd = false, bool end = true}) { |
| 162 | assert(() { | 162 | assert(() { |
| 163 | - if (!_page.pdfDocument.compress) { | 163 | + if (_page.pdfDocument.verbose) { |
| 164 | _buf.putComment('clipPath evenOdd:$evenOdd end:$end'); | 164 | _buf.putComment('clipPath evenOdd:$evenOdd end:$end'); |
| 165 | } | 165 | } |
| 166 | return true; | 166 | return true; |
| @@ -173,7 +173,7 @@ class PdfGraphics { | @@ -173,7 +173,7 @@ class PdfGraphics { | ||
| 173 | /// set evenOdd to false to use the nonzero winding number rule to determine the region to fill and to true to use the even-odd rule to determine the region to fill | 173 | /// set evenOdd to false to use the nonzero winding number rule to determine the region to fill and to true to use the even-odd rule to determine the region to fill |
| 174 | void fillAndStrokePath({bool evenOdd = false, bool close = false}) { | 174 | void fillAndStrokePath({bool evenOdd = false, bool close = false}) { |
| 175 | assert(() { | 175 | assert(() { |
| 176 | - if (!_page.pdfDocument.compress) { | 176 | + if (_page.pdfDocument.verbose) { |
| 177 | _buf.putComment('fillAndStrokePath evenOdd:$evenOdd close:$close'); | 177 | _buf.putComment('fillAndStrokePath evenOdd:$evenOdd close:$close'); |
| 178 | } | 178 | } |
| 179 | return true; | 179 | return true; |
| @@ -185,7 +185,7 @@ class PdfGraphics { | @@ -185,7 +185,7 @@ class PdfGraphics { | ||
| 185 | /// Apply a shader | 185 | /// Apply a shader |
| 186 | void applyShader(PdfShading shader) { | 186 | void applyShader(PdfShading shader) { |
| 187 | assert(() { | 187 | assert(() { |
| 188 | - if (!_page.pdfDocument.compress) { | 188 | + if (_page.pdfDocument.verbose) { |
| 189 | _buf.putComment('applyShader'); | 189 | _buf.putComment('applyShader'); |
| 190 | } | 190 | } |
| 191 | return true; | 191 | return true; |
| @@ -203,7 +203,7 @@ class PdfGraphics { | @@ -203,7 +203,7 @@ class PdfGraphics { | ||
| 203 | /// which will draw over this one. | 203 | /// which will draw over this one. |
| 204 | void restoreContext() { | 204 | void restoreContext() { |
| 205 | assert(() { | 205 | assert(() { |
| 206 | - if (!_page.pdfDocument.compress) { | 206 | + if (_page.pdfDocument.verbose) { |
| 207 | _buf.putComment('restoreContext'); | 207 | _buf.putComment('restoreContext'); |
| 208 | } | 208 | } |
| 209 | return true; | 209 | return true; |
| @@ -219,7 +219,7 @@ class PdfGraphics { | @@ -219,7 +219,7 @@ class PdfGraphics { | ||
| 219 | /// Save the graphc context | 219 | /// Save the graphc context |
| 220 | void saveContext() { | 220 | void saveContext() { |
| 221 | assert(() { | 221 | assert(() { |
| 222 | - if (!_page.pdfDocument.compress) { | 222 | + if (_page.pdfDocument.verbose) { |
| 223 | _buf.putComment('saveContext'); | 223 | _buf.putComment('saveContext'); |
| 224 | } | 224 | } |
| 225 | return true; | 225 | return true; |
| @@ -232,7 +232,7 @@ class PdfGraphics { | @@ -232,7 +232,7 @@ class PdfGraphics { | ||
| 232 | /// Draws an image onto the page. | 232 | /// Draws an image onto the page. |
| 233 | void drawImage(PdfImage img, double x, double y, [double? w, double? h]) { | 233 | void drawImage(PdfImage img, double x, double y, [double? w, double? h]) { |
| 234 | assert(() { | 234 | assert(() { |
| 235 | - if (!_page.pdfDocument.compress) { | 235 | + if (_page.pdfDocument.verbose) { |
| 236 | _buf.putComment('drawImage x:$x y:$y'); | 236 | _buf.putComment('drawImage x:$x y:$y'); |
| 237 | } | 237 | } |
| 238 | return true; | 238 | return true; |
| @@ -279,7 +279,7 @@ class PdfGraphics { | @@ -279,7 +279,7 @@ class PdfGraphics { | ||
| 279 | /// Draws a line between two coordinates. | 279 | /// Draws a line between two coordinates. |
| 280 | void drawLine(double x1, double y1, double x2, double y2) { | 280 | void drawLine(double x1, double y1, double x2, double y2) { |
| 281 | assert(() { | 281 | assert(() { |
| 282 | - if (!_page.pdfDocument.compress) { | 282 | + if (_page.pdfDocument.verbose) { |
| 283 | _buf.putComment('drawLine x1:$x1 y1:$y1 x2:$x2 y2:$y2'); | 283 | _buf.putComment('drawLine x1:$x1 y1:$y1 x2:$x2 y2:$y2'); |
| 284 | } | 284 | } |
| 285 | return true; | 285 | return true; |
| @@ -295,7 +295,7 @@ class PdfGraphics { | @@ -295,7 +295,7 @@ class PdfGraphics { | ||
| 295 | void drawEllipse(double x, double y, double r1, double r2, | 295 | void drawEllipse(double x, double y, double r1, double r2, |
| 296 | {bool clockwise = true}) { | 296 | {bool clockwise = true}) { |
| 297 | assert(() { | 297 | assert(() { |
| 298 | - if (!_page.pdfDocument.compress) { | 298 | + if (_page.pdfDocument.verbose) { |
| 299 | _buf.putComment('drawEllipse x:$x y:$y r1:$r1 r2:$r2'); | 299 | _buf.putComment('drawEllipse x:$x y:$y r1:$r1 r2:$r2'); |
| 300 | } | 300 | } |
| 301 | return true; | 301 | return true; |
| @@ -323,7 +323,7 @@ class PdfGraphics { | @@ -323,7 +323,7 @@ class PdfGraphics { | ||
| 323 | double h, | 323 | double h, |
| 324 | ) { | 324 | ) { |
| 325 | assert(() { | 325 | assert(() { |
| 326 | - if (!_page.pdfDocument.compress) { | 326 | + if (_page.pdfDocument.verbose) { |
| 327 | _buf.putComment('drawRect x:$x y:$y w:$w h:$h'); | 327 | _buf.putComment('drawRect x:$x y:$y w:$w h:$h'); |
| 328 | } | 328 | } |
| 329 | return true; | 329 | return true; |
| @@ -341,7 +341,7 @@ class PdfGraphics { | @@ -341,7 +341,7 @@ class PdfGraphics { | ||
| 341 | /// Draws a Rounded Rectangle | 341 | /// Draws a Rounded Rectangle |
| 342 | void drawRRect(double x, double y, double w, double h, double rv, double rh) { | 342 | void drawRRect(double x, double y, double w, double h, double rv, double rh) { |
| 343 | assert(() { | 343 | assert(() { |
| 344 | - if (!_page.pdfDocument.compress) { | 344 | + if (_page.pdfDocument.verbose) { |
| 345 | _buf.putComment('drawRRect x:$x y:$y w:$w h:$h rv:$rv rh:$rh'); | 345 | _buf.putComment('drawRRect x:$x y:$y w:$w h:$h rv:$rv rh:$rh'); |
| 346 | } | 346 | } |
| 347 | return true; | 347 | return true; |
| @@ -370,7 +370,7 @@ class PdfGraphics { | @@ -370,7 +370,7 @@ class PdfGraphics { | ||
| 370 | double? rise, | 370 | double? rise, |
| 371 | }) { | 371 | }) { |
| 372 | assert(() { | 372 | assert(() { |
| 373 | - if (!_page.pdfDocument.compress) { | 373 | + if (_page.pdfDocument.verbose) { |
| 374 | _buf.putComment('setFont'); | 374 | _buf.putComment('setFont'); |
| 375 | } | 375 | } |
| 376 | return true; | 376 | return true; |
| @@ -414,7 +414,7 @@ class PdfGraphics { | @@ -414,7 +414,7 @@ class PdfGraphics { | ||
| 414 | double rise = 0, | 414 | double rise = 0, |
| 415 | }) { | 415 | }) { |
| 416 | assert(() { | 416 | assert(() { |
| 417 | - if (!_page.pdfDocument.compress) { | 417 | + if (_page.pdfDocument.verbose) { |
| 418 | _buf.putComment('drawString x:$x y:$y size:$size "$s"'); | 418 | _buf.putComment('drawString x:$x y:$y size:$size "$s"'); |
| 419 | } | 419 | } |
| 420 | return true; | 420 | return true; |
| @@ -438,7 +438,7 @@ class PdfGraphics { | @@ -438,7 +438,7 @@ class PdfGraphics { | ||
| 438 | 438 | ||
| 439 | void reset() { | 439 | void reset() { |
| 440 | assert(() { | 440 | assert(() { |
| 441 | - if (!_page.pdfDocument.compress) { | 441 | + if (_page.pdfDocument.verbose) { |
| 442 | _buf.putComment('reset'); | 442 | _buf.putComment('reset'); |
| 443 | } | 443 | } |
| 444 | return true; | 444 | return true; |
| @@ -456,7 +456,7 @@ class PdfGraphics { | @@ -456,7 +456,7 @@ class PdfGraphics { | ||
| 456 | /// Sets the fill color for drawing | 456 | /// Sets the fill color for drawing |
| 457 | void setFillColor(PdfColor? color) { | 457 | void setFillColor(PdfColor? color) { |
| 458 | assert(() { | 458 | assert(() { |
| 459 | - if (!_page.pdfDocument.compress) { | 459 | + if (_page.pdfDocument.verbose) { |
| 460 | _buf.putComment('setFillColor ${color?.toHex()}'); | 460 | _buf.putComment('setFillColor ${color?.toHex()}'); |
| 461 | } | 461 | } |
| 462 | return true; | 462 | return true; |
| @@ -475,7 +475,7 @@ class PdfGraphics { | @@ -475,7 +475,7 @@ class PdfGraphics { | ||
| 475 | /// Sets the stroke color for drawing | 475 | /// Sets the stroke color for drawing |
| 476 | void setStrokeColor(PdfColor? color) { | 476 | void setStrokeColor(PdfColor? color) { |
| 477 | assert(() { | 477 | assert(() { |
| 478 | - if (!_page.pdfDocument.compress) { | 478 | + if (_page.pdfDocument.verbose) { |
| 479 | _buf.putComment('setStrokeColor ${color?.toHex()}'); | 479 | _buf.putComment('setStrokeColor ${color?.toHex()}'); |
| 480 | } | 480 | } |
| 481 | return true; | 481 | return true; |
| @@ -494,7 +494,7 @@ class PdfGraphics { | @@ -494,7 +494,7 @@ class PdfGraphics { | ||
| 494 | /// Sets the fill pattern for drawing | 494 | /// Sets the fill pattern for drawing |
| 495 | void setFillPattern(PdfPattern pattern) { | 495 | void setFillPattern(PdfPattern pattern) { |
| 496 | assert(() { | 496 | assert(() { |
| 497 | - if (!_page.pdfDocument.compress) { | 497 | + if (_page.pdfDocument.verbose) { |
| 498 | _buf.putComment('setFillPattern'); | 498 | _buf.putComment('setFillPattern'); |
| 499 | } | 499 | } |
| 500 | return true; | 500 | return true; |
| @@ -508,7 +508,7 @@ class PdfGraphics { | @@ -508,7 +508,7 @@ class PdfGraphics { | ||
| 508 | /// Sets the stroke pattern for drawing | 508 | /// Sets the stroke pattern for drawing |
| 509 | void setStrokePattern(PdfPattern pattern) { | 509 | void setStrokePattern(PdfPattern pattern) { |
| 510 | assert(() { | 510 | assert(() { |
| 511 | - if (!_page.pdfDocument.compress) { | 511 | + if (_page.pdfDocument.verbose) { |
| 512 | _buf.putComment('setStrokePattern'); | 512 | _buf.putComment('setStrokePattern'); |
| 513 | } | 513 | } |
| 514 | return true; | 514 | return true; |
| @@ -522,7 +522,7 @@ class PdfGraphics { | @@ -522,7 +522,7 @@ class PdfGraphics { | ||
| 522 | /// Set the graphic state for drawing | 522 | /// Set the graphic state for drawing |
| 523 | void setGraphicState(PdfGraphicState state) { | 523 | void setGraphicState(PdfGraphicState state) { |
| 524 | assert(() { | 524 | assert(() { |
| 525 | - if (!_page.pdfDocument.compress) { | 525 | + if (_page.pdfDocument.verbose) { |
| 526 | _buf.putComment('setGraphicState $state'); | 526 | _buf.putComment('setGraphicState $state'); |
| 527 | } | 527 | } |
| 528 | return true; | 528 | return true; |
| @@ -535,7 +535,7 @@ class PdfGraphics { | @@ -535,7 +535,7 @@ class PdfGraphics { | ||
| 535 | /// Set the transformation Matrix | 535 | /// Set the transformation Matrix |
| 536 | void setTransform(Matrix4 t) { | 536 | void setTransform(Matrix4 t) { |
| 537 | assert(() { | 537 | assert(() { |
| 538 | - if (!_page.pdfDocument.compress) { | 538 | + if (_page.pdfDocument.verbose) { |
| 539 | _buf.putComment('setTransform\n$t'); | 539 | _buf.putComment('setTransform\n$t'); |
| 540 | } | 540 | } |
| 541 | return true; | 541 | return true; |
| @@ -555,7 +555,7 @@ class PdfGraphics { | @@ -555,7 +555,7 @@ class PdfGraphics { | ||
| 555 | /// This adds a line segment to the current path | 555 | /// This adds a line segment to the current path |
| 556 | void lineTo(double x, double y) { | 556 | void lineTo(double x, double y) { |
| 557 | assert(() { | 557 | assert(() { |
| 558 | - if (!_page.pdfDocument.compress) { | 558 | + if (_page.pdfDocument.verbose) { |
| 559 | _buf.putComment('lineTo x:$x y:$y'); | 559 | _buf.putComment('lineTo x:$x y:$y'); |
| 560 | } | 560 | } |
| 561 | return true; | 561 | return true; |
| @@ -568,7 +568,7 @@ class PdfGraphics { | @@ -568,7 +568,7 @@ class PdfGraphics { | ||
| 568 | /// This moves the current drawing point. | 568 | /// This moves the current drawing point. |
| 569 | void moveTo(double x, double y) { | 569 | void moveTo(double x, double y) { |
| 570 | assert(() { | 570 | assert(() { |
| 571 | - if (!_page.pdfDocument.compress) { | 571 | + if (_page.pdfDocument.verbose) { |
| 572 | _buf.putComment('moveTo x:$x y:$y'); | 572 | _buf.putComment('moveTo x:$x y:$y'); |
| 573 | } | 573 | } |
| 574 | return true; | 574 | return true; |
| @@ -584,7 +584,7 @@ class PdfGraphics { | @@ -584,7 +584,7 @@ class PdfGraphics { | ||
| 584 | void curveTo( | 584 | void curveTo( |
| 585 | double x1, double y1, double x2, double y2, double x3, double y3) { | 585 | double x1, double y1, double x2, double y2, double x3, double y3) { |
| 586 | assert(() { | 586 | assert(() { |
| 587 | - if (!_page.pdfDocument.compress) { | 587 | + if (_page.pdfDocument.verbose) { |
| 588 | _buf.putComment('curveTo x1:$x1 y1:$y1 x2:$x2 y2:$y2 x3:$x3 y3:$y3'); | 588 | _buf.putComment('curveTo x1:$x1 y1:$y1 x2:$x2 y2:$y2 x3:$x3 y3:$y3'); |
| 589 | } | 589 | } |
| 590 | return true; | 590 | return true; |
| @@ -752,7 +752,7 @@ class PdfGraphics { | @@ -752,7 +752,7 @@ class PdfGraphics { | ||
| 752 | /// Set line starting and ending cap type | 752 | /// Set line starting and ending cap type |
| 753 | void setLineCap(PdfLineCap cap) { | 753 | void setLineCap(PdfLineCap cap) { |
| 754 | assert(() { | 754 | assert(() { |
| 755 | - if (!_page.pdfDocument.compress) { | 755 | + if (_page.pdfDocument.verbose) { |
| 756 | _buf.putComment('setLineCap $cap'); | 756 | _buf.putComment('setLineCap $cap'); |
| 757 | } | 757 | } |
| 758 | return true; | 758 | return true; |
| @@ -764,7 +764,7 @@ class PdfGraphics { | @@ -764,7 +764,7 @@ class PdfGraphics { | ||
| 764 | /// Set line join type | 764 | /// Set line join type |
| 765 | void setLineJoin(PdfLineJoin join) { | 765 | void setLineJoin(PdfLineJoin join) { |
| 766 | assert(() { | 766 | assert(() { |
| 767 | - if (!_page.pdfDocument.compress) { | 767 | + if (_page.pdfDocument.verbose) { |
| 768 | _buf.putComment('setLineJoin $join'); | 768 | _buf.putComment('setLineJoin $join'); |
| 769 | } | 769 | } |
| 770 | return true; | 770 | return true; |
| @@ -776,7 +776,7 @@ class PdfGraphics { | @@ -776,7 +776,7 @@ class PdfGraphics { | ||
| 776 | /// Set line width | 776 | /// Set line width |
| 777 | void setLineWidth(double width) { | 777 | void setLineWidth(double width) { |
| 778 | assert(() { | 778 | assert(() { |
| 779 | - if (!_page.pdfDocument.compress) { | 779 | + if (_page.pdfDocument.verbose) { |
| 780 | _buf.putComment('setLineWidth $width'); | 780 | _buf.putComment('setLineWidth $width'); |
| 781 | } | 781 | } |
| 782 | return true; | 782 | return true; |
| @@ -789,7 +789,7 @@ class PdfGraphics { | @@ -789,7 +789,7 @@ class PdfGraphics { | ||
| 789 | /// Set line joint miter limit, applies if the | 789 | /// Set line joint miter limit, applies if the |
| 790 | void setMiterLimit(double limit) { | 790 | void setMiterLimit(double limit) { |
| 791 | assert(() { | 791 | assert(() { |
| 792 | - if (!_page.pdfDocument.compress) { | 792 | + if (_page.pdfDocument.verbose) { |
| 793 | _buf.putComment('setMiterLimit $limit'); | 793 | _buf.putComment('setMiterLimit $limit'); |
| 794 | } | 794 | } |
| 795 | return true; | 795 | return true; |
| @@ -806,7 +806,7 @@ class PdfGraphics { | @@ -806,7 +806,7 @@ class PdfGraphics { | ||
| 806 | /// Example: [2 1] will create a dash pattern with 2 on, 1 off, 2 on, 1 off, ... | 806 | /// Example: [2 1] will create a dash pattern with 2 on, 1 off, 2 on, 1 off, ... |
| 807 | void setLineDashPattern([List<num> array = const <num>[], int phase = 0]) { | 807 | void setLineDashPattern([List<num> array = const <num>[], int phase = 0]) { |
| 808 | assert(() { | 808 | assert(() { |
| 809 | - if (!_page.pdfDocument.compress) { | 809 | + if (_page.pdfDocument.verbose) { |
| 810 | _buf.putComment('setLineDashPattern $array phase:$phase'); | 810 | _buf.putComment('setLineDashPattern $array phase:$phase'); |
| 811 | } | 811 | } |
| 812 | return true; | 812 | return true; |
| @@ -818,7 +818,7 @@ class PdfGraphics { | @@ -818,7 +818,7 @@ class PdfGraphics { | ||
| 818 | 818 | ||
| 819 | void markContentBegin(PdfName tag) { | 819 | void markContentBegin(PdfName tag) { |
| 820 | assert(() { | 820 | assert(() { |
| 821 | - if (!_page.pdfDocument.compress) { | 821 | + if (_page.pdfDocument.verbose) { |
| 822 | _buf.putComment('markContentBegin'); | 822 | _buf.putComment('markContentBegin'); |
| 823 | } | 823 | } |
| 824 | return true; | 824 | return true; |
| @@ -830,7 +830,7 @@ class PdfGraphics { | @@ -830,7 +830,7 @@ class PdfGraphics { | ||
| 830 | 830 | ||
| 831 | void markContentEnd() { | 831 | void markContentEnd() { |
| 832 | assert(() { | 832 | assert(() { |
| 833 | - if (!_page.pdfDocument.compress) { | 833 | + if (_page.pdfDocument.verbose) { |
| 834 | _buf.putComment('markContentEnd'); | 834 | _buf.putComment('markContentEnd'); |
| 835 | } | 835 | } |
| 836 | return true; | 836 | return true; |
| @@ -61,7 +61,7 @@ abstract class PdfObject<T extends PdfDataType> { | @@ -61,7 +61,7 @@ abstract class PdfObject<T extends PdfDataType> { | ||
| 61 | /// OutputStream. This will send the standard header for each object. | 61 | /// OutputStream. This will send the standard header for each object. |
| 62 | void _writeStart(PdfStream os) { | 62 | void _writeStart(PdfStream os) { |
| 63 | assert(() { | 63 | assert(() { |
| 64 | - if (!pdfDocument.compress) { | 64 | + if (pdfDocument.verbose) { |
| 65 | os.putComment(''); | 65 | os.putComment(''); |
| 66 | os.putComment('-' * 78); | 66 | os.putComment('-' * 78); |
| 67 | os.putComment('$runtimeType'); | 67 | os.putComment('$runtimeType'); |
| @@ -73,7 +73,7 @@ abstract class PdfObject<T extends PdfDataType> { | @@ -73,7 +73,7 @@ abstract class PdfObject<T extends PdfDataType> { | ||
| 73 | } | 73 | } |
| 74 | 74 | ||
| 75 | void writeContent(PdfStream os) { | 75 | void writeContent(PdfStream os) { |
| 76 | - params.output(os, pdfDocument.compress ? null : 0); | 76 | + params.output(os, pdfDocument.verbose ? 0 : null); |
| 77 | os.putByte(0x0a); | 77 | os.putByte(0x0a); |
| 78 | } | 78 | } |
| 79 | 79 |
| @@ -37,7 +37,7 @@ class PdfObjectDict extends PdfObject<PdfDict> { | @@ -37,7 +37,7 @@ class PdfObjectDict extends PdfObject<PdfDict> { | ||
| 37 | @override | 37 | @override |
| 38 | void writeContent(PdfStream os) { | 38 | void writeContent(PdfStream os) { |
| 39 | if (params.isNotEmpty) { | 39 | if (params.isNotEmpty) { |
| 40 | - params.output(os, pdfDocument.compress ? null : 0); | 40 | + params.output(os, pdfDocument.verbose ? 0 : null); |
| 41 | os.putByte(0x0a); | 41 | os.putByte(0x0a); |
| 42 | } | 42 | } |
| 43 | } | 43 | } |
| @@ -41,6 +41,6 @@ class PdfObjectStream extends PdfObjectDict { | @@ -41,6 +41,6 @@ class PdfObjectStream extends PdfObjectDict { | ||
| 41 | isBinary: isBinary, | 41 | isBinary: isBinary, |
| 42 | values: params.values, | 42 | values: params.values, |
| 43 | data: buf.output(), | 43 | data: buf.output(), |
| 44 | - ).output(os, pdfDocument.compress ? null : 0); | 44 | + ).output(os, pdfDocument.verbose ? 0 : null); |
| 45 | } | 45 | } |
| 46 | } | 46 | } |
| @@ -27,7 +27,7 @@ import 'xref.dart'; | @@ -27,7 +27,7 @@ import 'xref.dart'; | ||
| 27 | /// PDF document writer | 27 | /// PDF document writer |
| 28 | class PdfOutput { | 28 | class PdfOutput { |
| 29 | /// This creates a Pdf [PdfStream] | 29 | /// This creates a Pdf [PdfStream] |
| 30 | - PdfOutput(this.os, this.version, bool compress) { | 30 | + PdfOutput(this.os, this.version, this.verbose) { |
| 31 | String v; | 31 | String v; |
| 32 | switch (version) { | 32 | switch (version) { |
| 33 | case PdfVersion.pdf_1_4: | 33 | case PdfVersion.pdf_1_4: |
| @@ -41,7 +41,7 @@ class PdfOutput { | @@ -41,7 +41,7 @@ class PdfOutput { | ||
| 41 | os.putString('%PDF-$v\n'); | 41 | os.putString('%PDF-$v\n'); |
| 42 | os.putBytes(const <int>[0x25, 0xC2, 0xA5, 0xC2, 0xB1, 0xC3, 0xAB, 0x0A]); | 42 | os.putBytes(const <int>[0x25, 0xC2, 0xA5, 0xC2, 0xB1, 0xC3, 0xAB, 0x0A]); |
| 43 | assert(() { | 43 | assert(() { |
| 44 | - if (!compress) { | 44 | + if (verbose) { |
| 45 | _stopwatch = Stopwatch()..start(); | 45 | _stopwatch = Stopwatch()..start(); |
| 46 | os.putComment(''); | 46 | os.putComment(''); |
| 47 | os.putComment('Verbose dart_pdf'); | 47 | os.putComment('Verbose dart_pdf'); |
| @@ -80,6 +80,9 @@ class PdfOutput { | @@ -80,6 +80,9 @@ class PdfOutput { | ||
| 80 | /// Generate a compressed cross reference table | 80 | /// Generate a compressed cross reference table |
| 81 | bool get isCompressed => version.index > PdfVersion.pdf_1_4.index; | 81 | bool get isCompressed => version.index > PdfVersion.pdf_1_4.index; |
| 82 | 82 | ||
| 83 | + /// Verbose output | ||
| 84 | + final bool verbose; | ||
| 85 | + | ||
| 83 | /// This method writes a [PdfObject] to the stream. | 86 | /// This method writes a [PdfObject] to the stream. |
| 84 | void write(PdfObject ob) { | 87 | void write(PdfObject ob) { |
| 85 | // Check the object to see if it's one that is needed later | 88 | // Check the object to see if it's one that is needed later |
| @@ -133,18 +136,26 @@ class PdfOutput { | @@ -133,18 +136,26 @@ class PdfOutput { | ||
| 133 | if (isCompressed) { | 136 | if (isCompressed) { |
| 134 | xref.outputCompressed(rootID!, os, params); | 137 | xref.outputCompressed(rootID!, os, params); |
| 135 | } else { | 138 | } else { |
| 139 | + assert(() { | ||
| 140 | + os.putComment(''); | ||
| 141 | + os.putComment('-' * 78); | ||
| 142 | + return true; | ||
| 143 | + }()); | ||
| 136 | xref.output(os); | 144 | xref.output(os); |
| 137 | - } | ||
| 138 | 145 | ||
| 139 | - if (!isCompressed) { | ||
| 140 | // the trailer object | 146 | // the trailer object |
| 147 | + assert(() { | ||
| 148 | + os.putComment(''); | ||
| 149 | + os.putComment('-' * 78); | ||
| 150 | + return true; | ||
| 151 | + }()); | ||
| 141 | os.putString('trailer\n'); | 152 | os.putString('trailer\n'); |
| 142 | - params.output(os); | 153 | + params.output(os, verbose ? 0 : null); |
| 143 | os.putByte(0x0a); | 154 | os.putByte(0x0a); |
| 144 | } | 155 | } |
| 145 | 156 | ||
| 146 | assert(() { | 157 | assert(() { |
| 147 | - if (!rootID!.pdfDocument.compress) { | 158 | + if (rootID!.pdfDocument.verbose) { |
| 148 | os.putComment(''); | 159 | os.putComment(''); |
| 149 | os.putComment('-' * 78); | 160 | os.putComment('-' * 78); |
| 150 | } | 161 | } |
| @@ -155,7 +166,7 @@ class PdfOutput { | @@ -155,7 +166,7 @@ class PdfOutput { | ||
| 155 | os.putString('startxref\n$_xref\n%%EOF\n'); | 166 | os.putString('startxref\n$_xref\n%%EOF\n'); |
| 156 | 167 | ||
| 157 | assert(() { | 168 | assert(() { |
| 158 | - if (!rootID!.pdfDocument.compress) { | 169 | + if (verbose) { |
| 159 | _stopwatch.stop(); | 170 | _stopwatch.stop(); |
| 160 | final h = PdfStream(); | 171 | final h = PdfStream(); |
| 161 | h.putComment( | 172 | h.putComment( |
| @@ -199,7 +199,7 @@ class PdfXrefTable extends PdfDataType { | @@ -199,7 +199,7 @@ class PdfXrefTable extends PdfDataType { | ||
| 199 | 199 | ||
| 200 | // Write the object | 200 | // Write the object |
| 201 | assert(() { | 201 | assert(() { |
| 202 | - if (!object.pdfDocument.compress) { | 202 | + if (object.pdfDocument.verbose) { |
| 203 | s.putComment(''); | 203 | s.putComment(''); |
| 204 | s.putComment('-' * 78); | 204 | s.putComment('-' * 78); |
| 205 | s.putComment('$runtimeType $this'); | 205 | s.putComment('$runtimeType $this'); |
| @@ -214,6 +214,6 @@ class PdfXrefTable extends PdfDataType { | @@ -214,6 +214,6 @@ class PdfXrefTable extends PdfDataType { | ||
| 214 | isBinary: false, | 214 | isBinary: false, |
| 215 | encrypt: false, | 215 | encrypt: false, |
| 216 | values: params.values, | 216 | values: params.values, |
| 217 | - ).output(s, object.pdfDocument.compress ? null : 0); | 217 | + ).output(s, object.pdfDocument.verbose ? 0 : null); |
| 218 | } | 218 | } |
| 219 | } | 219 | } |
| @@ -27,7 +27,8 @@ class Document { | @@ -27,7 +27,8 @@ class Document { | ||
| 27 | PdfPageMode pageMode = PdfPageMode.none, | 27 | PdfPageMode pageMode = PdfPageMode.none, |
| 28 | DeflateCallback? deflate, | 28 | DeflateCallback? deflate, |
| 29 | bool compress = true, | 29 | bool compress = true, |
| 30 | - PdfVersion version = PdfVersion.pdf_1_4, | 30 | + bool verbose = false, |
| 31 | + PdfVersion version = PdfVersion.pdf_1_5, | ||
| 31 | this.theme, | 32 | this.theme, |
| 32 | String? title, | 33 | String? title, |
| 33 | String? author, | 34 | String? author, |
| @@ -40,6 +41,7 @@ class Document { | @@ -40,6 +41,7 @@ class Document { | ||
| 40 | pageMode: pageMode, | 41 | pageMode: pageMode, |
| 41 | deflate: deflate, | 42 | deflate: deflate, |
| 42 | compress: compress, | 43 | compress: compress, |
| 44 | + verbose: verbose, | ||
| 43 | version: version, | 45 | version: version, |
| 44 | ) { | 46 | ) { |
| 45 | if (title != null || | 47 | if (title != null || |
| @@ -68,6 +70,7 @@ class Document { | @@ -68,6 +70,7 @@ class Document { | ||
| 68 | PdfPageMode pageMode = PdfPageMode.none, | 70 | PdfPageMode pageMode = PdfPageMode.none, |
| 69 | DeflateCallback? deflate, | 71 | DeflateCallback? deflate, |
| 70 | bool compress = true, | 72 | bool compress = true, |
| 73 | + bool verbose = false, | ||
| 71 | this.theme, | 74 | this.theme, |
| 72 | String? title, | 75 | String? title, |
| 73 | String? author, | 76 | String? author, |
| @@ -80,6 +83,7 @@ class Document { | @@ -80,6 +83,7 @@ class Document { | ||
| 80 | pageMode: pageMode, | 83 | pageMode: pageMode, |
| 81 | deflate: deflate, | 84 | deflate: deflate, |
| 82 | compress: compress, | 85 | compress: compress, |
| 86 | + verbose: verbose, | ||
| 83 | ) { | 87 | ) { |
| 84 | if (title != null || | 88 | if (title != null || |
| 85 | author != null || | 89 | author != null || |
| @@ -28,7 +28,7 @@ | @@ -28,7 +28,7 @@ | ||
| 28 | class print_job { | 28 | class print_job { |
| 29 | private: | 29 | private: |
| 30 | const int index; | 30 | const int index; |
| 31 | - GtkPrintJob* printJob; | 31 | + GtkPrintJob* printJob = nullptr; |
| 32 | 32 | ||
| 33 | public: | 33 | public: |
| 34 | GtkPrintUnixDialog* dialog = nullptr; | 34 | GtkPrintUnixDialog* dialog = nullptr; |
-
Please register or login to post a comment