Showing
3 changed files
with
44 additions
and
51 deletions
@@ -26,7 +26,7 @@ class PdfAnnot extends PdfObject { | @@ -26,7 +26,7 @@ class PdfAnnot extends PdfObject { | ||
26 | final PdfRect srcRect; | 26 | final PdfRect srcRect; |
27 | 27 | ||
28 | /// The text of a text annotation | 28 | /// The text of a text annotation |
29 | - final String s; | 29 | + final String content; |
30 | 30 | ||
31 | /// Link to the Destination page | 31 | /// Link to the Destination page |
32 | final PdfObject dest; | 32 | final PdfObject dest; |
@@ -36,58 +36,46 @@ class PdfAnnot extends PdfObject { | @@ -36,58 +36,46 @@ class PdfAnnot extends PdfObject { | ||
36 | final PdfRect destRect; | 36 | final PdfRect destRect; |
37 | 37 | ||
38 | /// the border for this annotation | 38 | /// the border for this annotation |
39 | - PdfBorder border; | 39 | + final PdfBorder border; |
40 | 40 | ||
41 | - PdfAnnot(PdfPage pdfPage, | 41 | + PdfAnnot._create(PdfPage pdfPage, |
42 | {String type, | 42 | {String type, |
43 | - this.s, | 43 | + this.content, |
44 | this.srcRect, | 44 | this.srcRect, |
45 | - this.subtype, | 45 | + @required this.subtype, |
46 | this.dest, | 46 | this.dest, |
47 | - this.destRect}) | ||
48 | - : super(pdfPage.pdfDocument, type) { | 47 | + this.destRect, |
48 | + this.border}) | ||
49 | + : super(pdfPage.pdfDocument, type ?? '/Annot') { | ||
49 | pdfPage.annotations.add(this); | 50 | pdfPage.annotations.add(this); |
50 | } | 51 | } |
51 | 52 | ||
52 | - /// This is used to create an annotation. | ||
53 | - /// @param s Subtype for this annotation | ||
54 | - /// @param rect coordinates | ||
55 | - factory PdfAnnot.annotation(PdfPage pdfPage, String s, PdfRect rect) => | ||
56 | - PdfAnnot(pdfPage, type: "/Annot", s: s, srcRect: rect); | ||
57 | - | ||
58 | /// Creates a text annotation | 53 | /// Creates a text annotation |
59 | /// @param rect coordinates | 54 | /// @param rect coordinates |
60 | /// @param s Text for this annotation | 55 | /// @param s Text for this annotation |
61 | - factory PdfAnnot.text(PdfPage pdfPage, PdfRect rect, String s) => | ||
62 | - PdfAnnot(pdfPage, type: "/Text", srcRect: rect, s: s); | 56 | + factory PdfAnnot.text(PdfPage pdfPage, |
57 | + {@required PdfRect rect, | ||
58 | + @required String content, | ||
59 | + PdfBorder border}) => | ||
60 | + PdfAnnot._create(pdfPage, | ||
61 | + subtype: "/Text", srcRect: rect, content: content, border: border); | ||
63 | 62 | ||
64 | /// Creates a link annotation | 63 | /// Creates a link annotation |
65 | /// @param srcRect coordinates | 64 | /// @param srcRect coordinates |
66 | /// @param dest Destination for this link. The page will fit the display. | 65 | /// @param dest Destination for this link. The page will fit the display. |
67 | /// @param destRect Rectangle describing what part of the page to be displayed | 66 | /// @param destRect Rectangle describing what part of the page to be displayed |
68 | /// (must be in User Coordinates) | 67 | /// (must be in User Coordinates) |
69 | - factory PdfAnnot.link(PdfPage pdfPage, PdfRect srcRect, PdfObject dest, | ||
70 | - [PdfRect destRect]) => | ||
71 | - PdfAnnot(pdfPage, | ||
72 | - type: "/Link", srcRect: srcRect, dest: dest, destRect: destRect); | ||
73 | - | ||
74 | - /// Sets the border for the annotation. By default, no border is defined. | ||
75 | - /// | ||
76 | - /// If the style is dashed, then this method uses Pdf's default dash | ||
77 | - /// scheme {3} | ||
78 | - /// | ||
79 | - /// Important: the annotation must have been added to the document before | ||
80 | - /// this is used. If the annotation was created using the methods in | ||
81 | - /// [PdfPage], then the annotation is already in the document. | ||
82 | - /// | ||
83 | - /// @param style Border style solid, dashed, beveled, inset or underlined. | ||
84 | - /// @param width Width of the border | ||
85 | - /// @param dash Array of lengths, used for drawing the dashes. If this | ||
86 | - /// is null, then the default of {3} is used. | ||
87 | - void setBorder(double width, | ||
88 | - {PdfBorderStyle style = PdfBorderStyle.solid, List<double> dash}) { | ||
89 | - border = PdfBorder(pdfDocument, width, style: style, dash: dash); | ||
90 | - } | 68 | + factory PdfAnnot.link(PdfPage pdfPage, |
69 | + {@required PdfRect srcRect, | ||
70 | + @required PdfPage dest, | ||
71 | + PdfRect destRect, | ||
72 | + PdfBorder border}) => | ||
73 | + PdfAnnot._create(pdfPage, | ||
74 | + subtype: "/Link", | ||
75 | + srcRect: srcRect, | ||
76 | + dest: dest, | ||
77 | + destRect: destRect, | ||
78 | + border: border); | ||
91 | 79 | ||
92 | /// Output the annotation | 80 | /// Output the annotation |
93 | /// | 81 | /// |
@@ -109,7 +97,7 @@ class PdfAnnot extends PdfObject { | @@ -109,7 +97,7 @@ class PdfAnnot extends PdfObject { | ||
109 | 97 | ||
110 | // Now the annotation subtypes | 98 | // Now the annotation subtypes |
111 | if (subtype == "/Text") { | 99 | if (subtype == "/Text") { |
112 | - params["/Contents"] = PdfStream.string(s); | 100 | + params["/Contents"] = PdfStream.text(content); |
113 | } else if (subtype == "/Link") { | 101 | } else if (subtype == "/Link") { |
114 | var dests = List<PdfStream>(); | 102 | var dests = List<PdfStream>(); |
115 | dests.add(dest.ref()); | 103 | dests.add(dest.ref()); |
@@ -40,9 +40,9 @@ class PDFAnnot extends PdfAnnot { | @@ -40,9 +40,9 @@ class PDFAnnot extends PdfAnnot { | ||
40 | double fb, | 40 | double fb, |
41 | double fr, | 41 | double fr, |
42 | double ft}) | 42 | double ft}) |
43 | - : super(pdfPage, | 43 | + : super._create(pdfPage, |
44 | type: type, | 44 | type: type, |
45 | - s: s, | 45 | + content: s, |
46 | srcRect: PdfRect.fromLTRB(l, t, r, b), | 46 | srcRect: PdfRect.fromLTRB(l, t, r, b), |
47 | subtype: subtype, | 47 | subtype: subtype, |
48 | dest: dest, | 48 | dest: dest, |
@@ -262,8 +262,8 @@ class PDFPage extends PdfPage { | @@ -262,8 +262,8 @@ class PDFPage extends PdfPage { | ||
262 | PdfAnnot addNote(String note, double x, y, w, h) { | 262 | PdfAnnot addNote(String note, double x, y, w, h) { |
263 | var xy1 = cxy(x, y + h); | 263 | var xy1 = cxy(x, y + h); |
264 | var xy2 = cxy(x + w, y); | 264 | var xy2 = cxy(x + w, y); |
265 | - PdfAnnot ob = | ||
266 | - PdfAnnot.text(this, PdfRect.fromLTRB(xy1.x, xy1.y, xy2.x, xy2.y), note); | 265 | + PdfAnnot ob = PdfAnnot.text(this, |
266 | + rect: PdfRect.fromLTRB(xy1.x, xy1.y, xy2.x, xy2.y), content: note); | ||
267 | return ob; | 267 | return ob; |
268 | } | 268 | } |
269 | 269 | ||
@@ -289,11 +289,10 @@ class PDFPage extends PdfPage { | @@ -289,11 +289,10 @@ class PDFPage extends PdfPage { | ||
289 | var xy2 = cxy(x + w, y); | 289 | var xy2 = cxy(x + w, y); |
290 | var xy3 = cxy(vx, vy + vh); | 290 | var xy3 = cxy(vx, vy + vh); |
291 | var xy4 = cxy(vx + vw, vy); | 291 | var xy4 = cxy(vx + vw, vy); |
292 | - PdfAnnot ob = PdfAnnot.link( | ||
293 | - this, | ||
294 | - PdfRect.fromLTRB(xy1.x, xy1.y, xy2.x, xy2.y), | ||
295 | - dest, | ||
296 | - PdfRect.fromLTRB(xy3.x, xy3.y, xy4.x, xy4.y)); | 292 | + PdfAnnot ob = PdfAnnot.link(this, |
293 | + srcRect: PdfRect.fromLTRB(xy1.x, xy1.y, xy2.x, xy2.y), | ||
294 | + dest: dest, | ||
295 | + destRect: PdfRect.fromLTRB(xy3.x, xy3.y, xy4.x, xy4.y)); | ||
297 | return ob; | 296 | return ob; |
298 | } | 297 | } |
299 | 298 |
1 | import 'dart:io'; | 1 | import 'dart:io'; |
2 | -import 'dart:math'; | ||
3 | -import 'dart:typed_data'; | ||
4 | 2 | ||
5 | import 'package:pdf/pdf.dart'; | 3 | import 'package:pdf/pdf.dart'; |
6 | import 'package:test/test.dart'; | 4 | import 'package:test/test.dart'; |
7 | -import 'package:vector_math/vector_math_64.dart'; | ||
8 | 5 | ||
9 | void main() { | 6 | void main() { |
10 | test('Pdf', () { | 7 | test('Pdf', () { |
11 | var pdf = PdfDocument(); | 8 | var pdf = PdfDocument(); |
12 | var page = PdfPage(pdf, pageFormat: const PdfPageFormat(500.0, 300.0)); | 9 | var page = PdfPage(pdf, pageFormat: const PdfPageFormat(500.0, 300.0)); |
10 | + var page1 = PdfPage(pdf, pageFormat: const PdfPageFormat(500.0, 300.0)); | ||
13 | 11 | ||
14 | - page.annotations.add(PdfAnnot.annotation(page, "Hello", PdfRect(100.0, 100.0, 50.0, 50.0))); | 12 | + var g = page.getGraphics(); |
13 | + | ||
14 | + PdfAnnot.text(page, | ||
15 | + content: "Hello", rect: PdfRect(100.0, 100.0, 50.0, 50.0)); | ||
16 | + | ||
17 | + PdfAnnot.link(page, | ||
18 | + dest: page1, srcRect: PdfRect(100.0, 150.0, 50.0, 50.0)); | ||
19 | + g.drawRect(100.0, 150.0, 50.0, 50.0); | ||
20 | + g.strokePath(); | ||
15 | 21 | ||
16 | var file = File('annot.pdf'); | 22 | var file = File('annot.pdf'); |
17 | file.writeAsBytesSync(pdf.save()); | 23 | file.writeAsBytesSync(pdf.save()); |
-
Please register or login to post a comment