first commit

This commit is contained in:
2026-01-16 14:13:44 +08:00
commit 903ff8d495
34603 changed files with 8585054 additions and 0 deletions

View File

@ -0,0 +1,940 @@
%PDF-1.3
3 0 obj
<</Type /Page
/Parent 1 0 R
/Resources 2 0 R
/MediaBox [0 0 612.00 792.00]
/Contents 4 0 R
/Annots [
<</Type /Annot /Subtype /Link /Rect [20.00 749.92 70.24 731.52] /Border [0 0 0] /Dest [5 0 R /XYZ 0 792.00 0] >>
<</Type /Annot /Subtype /Link /Rect [20.00 731.52 74.08 713.12] /Border [0 0 0] /Dest [5 0 R /XYZ 0 792.00 1] >>
<</Type /Annot /Subtype /Link /Rect [74.08 731.52 128.16 713.12] /Border [0 0 0] /Dest [5 0 R /XYZ 0 792.00 2] >>
<</Type /Annot /Subtype /Link /Rect [128.16 731.52 173.44 713.12] /Border [0 0 0] /Dest [5 0 R /XYZ 0 792.00 0.5] >>
<</Type /Annot /Subtype /Link /Rect [173.44 731.52 204.64 713.12] /Border [0 0 0] /Dest [5 0 R /Fit] >>
<</Type /Annot /Subtype /Link /Rect [204.64 731.52 247.36 713.12] /Border [0 0 0] /Dest [5 0 R /FitH 792.00] >>
<</Type /Annot /Subtype /Link /Rect [247.36 731.52 289.12 713.12] /Border [0 0 0] /Dest [5 0 R /FitV 0] >>
<</Type /Annot /Subtype /Link /Rect [20.00 713.12 70.24 694.72] /Border [0 0 0] /Dest [7 0 R /XYZ 0 792.00 0] >>
<</Type /Annot /Subtype /Link /Rect [20.00 694.72 74.08 676.32] /Border [0 0 0] /Dest [7 0 R /XYZ 0 792.00 1] >>
<</Type /Annot /Subtype /Link /Rect [74.08 694.72 128.16 676.32] /Border [0 0 0] /Dest [7 0 R /XYZ 0 792.00 2] >>
<</Type /Annot /Subtype /Link /Rect [128.16 694.72 173.44 676.32] /Border [0 0 0] /Dest [7 0 R /XYZ 0 792.00 0.5] >>
<</Type /Annot /Subtype /Link /Rect [173.44 694.72 204.64 676.32] /Border [0 0 0] /Dest [7 0 R /Fit] >>
<</Type /Annot /Subtype /Link /Rect [204.64 694.72 247.36 676.32] /Border [0 0 0] /Dest [7 0 R /FitH 792.00] >>
<</Type /Annot /Subtype /Link /Rect [247.36 694.72 289.12 676.32] /Border [0 0 0] /Dest [7 0 R /FitV 0] >>
<</Type /Annot /Subtype /Link /Rect [20.00 676.32 70.24 657.92] /Border [0 0 0] /Dest [9 0 R /XYZ 0 792.00 0] >>
<</Type /Annot /Subtype /Link /Rect [20.00 657.92 74.08 639.52] /Border [0 0 0] /Dest [9 0 R /XYZ 0 792.00 1] >>
<</Type /Annot /Subtype /Link /Rect [74.08 657.92 128.16 639.52] /Border [0 0 0] /Dest [9 0 R /XYZ 0 792.00 2] >>
<</Type /Annot /Subtype /Link /Rect [128.16 657.92 173.44 639.52] /Border [0 0 0] /Dest [9 0 R /XYZ 0 792.00 0.5] >>
<</Type /Annot /Subtype /Link /Rect [173.44 657.92 204.64 639.52] /Border [0 0 0] /Dest [9 0 R /Fit] >>
<</Type /Annot /Subtype /Link /Rect [204.64 657.92 247.36 639.52] /Border [0 0 0] /Dest [9 0 R /FitH 792.00] >>
<</Type /Annot /Subtype /Link /Rect [247.36 657.92 289.12 639.52] /Border [0 0 0] /Dest [9 0 R /FitV 0] >>
<</Type /Annot /Subtype /Link /Rect [20.00 639.52 70.24 621.12] /Border [0 0 0] /Dest [11 0 R /XYZ 0 792.00 0] >>
<</Type /Annot /Subtype /Link /Rect [20.00 621.12 74.08 602.72] /Border [0 0 0] /Dest [11 0 R /XYZ 0 792.00 1] >>
<</Type /Annot /Subtype /Link /Rect [74.08 621.12 128.16 602.72] /Border [0 0 0] /Dest [11 0 R /XYZ 0 792.00 2] >>
<</Type /Annot /Subtype /Link /Rect [128.16 621.12 173.44 602.72] /Border [0 0 0] /Dest [11 0 R /XYZ 0 792.00 0.5] >>
<</Type /Annot /Subtype /Link /Rect [173.44 621.12 204.64 602.72] /Border [0 0 0] /Dest [11 0 R /Fit] >>
<</Type /Annot /Subtype /Link /Rect [204.64 621.12 247.36 602.72] /Border [0 0 0] /Dest [11 0 R /FitH 792.00] >>
<</Type /Annot /Subtype /Link /Rect [247.36 621.12 289.12 602.72] /Border [0 0 0] /Dest [11 0 R /FitV 0] >>
<</Type /Annot /Subtype /Link /Rect [20.00 602.72 70.24 584.32] /Border [0 0 0] /Dest [13 0 R /XYZ 0 792.00 0] >>
<</Type /Annot /Subtype /Link /Rect [20.00 584.32 74.08 565.92] /Border [0 0 0] /Dest [13 0 R /XYZ 0 792.00 1] >>
<</Type /Annot /Subtype /Link /Rect [74.08 584.32 128.16 565.92] /Border [0 0 0] /Dest [13 0 R /XYZ 0 792.00 2] >>
<</Type /Annot /Subtype /Link /Rect [128.16 584.32 173.44 565.92] /Border [0 0 0] /Dest [13 0 R /XYZ 0 792.00 0.5] >>
<</Type /Annot /Subtype /Link /Rect [173.44 584.32 204.64 565.92] /Border [0 0 0] /Dest [13 0 R /Fit] >>
<</Type /Annot /Subtype /Link /Rect [204.64 584.32 247.36 565.92] /Border [0 0 0] /Dest [13 0 R /FitH 792.00] >>
<</Type /Annot /Subtype /Link /Rect [247.36 584.32 289.12 565.92] /Border [0 0 0] /Dest [13 0 R /FitV 0] >>
<</Type /Annot /Subtype /Link /Rect [20.00 565.92 70.24 547.52] /Border [0 0 0] /Dest [15 0 R /XYZ 0 792.00 0] >>
<</Type /Annot /Subtype /Link /Rect [20.00 547.52 74.08 529.12] /Border [0 0 0] /Dest [15 0 R /XYZ 0 792.00 1] >>
<</Type /Annot /Subtype /Link /Rect [74.08 547.52 128.16 529.12] /Border [0 0 0] /Dest [15 0 R /XYZ 0 792.00 2] >>
<</Type /Annot /Subtype /Link /Rect [128.16 547.52 173.44 529.12] /Border [0 0 0] /Dest [15 0 R /XYZ 0 792.00 0.5] >>
<</Type /Annot /Subtype /Link /Rect [173.44 547.52 204.64 529.12] /Border [0 0 0] /Dest [15 0 R /Fit] >>
<</Type /Annot /Subtype /Link /Rect [204.64 547.52 247.36 529.12] /Border [0 0 0] /Dest [15 0 R /FitH 792.00] >>
<</Type /Annot /Subtype /Link /Rect [247.36 547.52 289.12 529.12] /Border [0 0 0] /Dest [15 0 R /FitV 0] >>
<</Type /Annot /Subtype /Link /Rect [20.00 529.12 70.24 510.72] /Border [0 0 0] /Dest [17 0 R /XYZ 0 792.00 0] >>
<</Type /Annot /Subtype /Link /Rect [20.00 510.72 74.08 492.32] /Border [0 0 0] /Dest [17 0 R /XYZ 0 792.00 1] >>
<</Type /Annot /Subtype /Link /Rect [74.08 510.72 128.16 492.32] /Border [0 0 0] /Dest [17 0 R /XYZ 0 792.00 2] >>
<</Type /Annot /Subtype /Link /Rect [128.16 510.72 173.44 492.32] /Border [0 0 0] /Dest [17 0 R /XYZ 0 792.00 0.5] >>
<</Type /Annot /Subtype /Link /Rect [173.44 510.72 204.64 492.32] /Border [0 0 0] /Dest [17 0 R /Fit] >>
<</Type /Annot /Subtype /Link /Rect [204.64 510.72 247.36 492.32] /Border [0 0 0] /Dest [17 0 R /FitH 792.00] >>
<</Type /Annot /Subtype /Link /Rect [247.36 510.72 289.12 492.32] /Border [0 0 0] /Dest [17 0 R /FitV 0] >>
<</Type /Annot /Subtype /Link /Rect [20.00 492.32 70.24 473.92] /Border [0 0 0] /Dest [19 0 R /XYZ 0 792.00 0] >>
<</Type /Annot /Subtype /Link /Rect [20.00 473.92 74.08 455.52] /Border [0 0 0] /Dest [19 0 R /XYZ 0 792.00 1] >>
<</Type /Annot /Subtype /Link /Rect [74.08 473.92 128.16 455.52] /Border [0 0 0] /Dest [19 0 R /XYZ 0 792.00 2] >>
<</Type /Annot /Subtype /Link /Rect [128.16 473.92 173.44 455.52] /Border [0 0 0] /Dest [19 0 R /XYZ 0 792.00 0.5] >>
<</Type /Annot /Subtype /Link /Rect [173.44 473.92 204.64 455.52] /Border [0 0 0] /Dest [19 0 R /Fit] >>
<</Type /Annot /Subtype /Link /Rect [204.64 473.92 247.36 455.52] /Border [0 0 0] /Dest [19 0 R /FitH 792.00] >>
<</Type /Annot /Subtype /Link /Rect [247.36 473.92 289.12 455.52] /Border [0 0 0] /Dest [19 0 R /FitV 0] >>
]
>>
endobj
4 0 obj
<</Length 3277>>
stream
0.20 w
0 G
BT
/F1 16 Tf
18.4 TL
0 g
20.00 772.00 Td
(Table of Contents) Tj
ET
BT
/F1 16 Tf
18.4 TL
0 g
20.00 735.20 Td
(Page 2) Tj
ET
BT
/F1 16 Tf
18.4 TL
0 g
20.00 716.80 Td
( [100%]) Tj
ET
BT
/F1 16 Tf
18.4 TL
0 g
74.08 716.80 Td
( [200%]) Tj
ET
BT
/F1 16 Tf
18.4 TL
0 g
128.16 716.80 Td
( [50%]) Tj
ET
BT
/F1 16 Tf
18.4 TL
0 g
173.44 716.80 Td
( [Fit]) Tj
ET
BT
/F1 16 Tf
18.4 TL
0 g
204.64 716.80 Td
( [FitH]) Tj
ET
BT
/F1 16 Tf
18.4 TL
0 g
247.36 716.80 Td
( [FitV]) Tj
ET
BT
/F1 16 Tf
18.4 TL
0 g
20.00 698.40 Td
(Page 3) Tj
ET
BT
/F1 16 Tf
18.4 TL
0 g
20.00 680.00 Td
( [100%]) Tj
ET
BT
/F1 16 Tf
18.4 TL
0 g
74.08 680.00 Td
( [200%]) Tj
ET
BT
/F1 16 Tf
18.4 TL
0 g
128.16 680.00 Td
( [50%]) Tj
ET
BT
/F1 16 Tf
18.4 TL
0 g
173.44 680.00 Td
( [Fit]) Tj
ET
BT
/F1 16 Tf
18.4 TL
0 g
204.64 680.00 Td
( [FitH]) Tj
ET
BT
/F1 16 Tf
18.4 TL
0 g
247.36 680.00 Td
( [FitV]) Tj
ET
BT
/F1 16 Tf
18.4 TL
0 g
20.00 661.60 Td
(Page 4) Tj
ET
BT
/F1 16 Tf
18.4 TL
0 g
20.00 643.20 Td
( [100%]) Tj
ET
BT
/F1 16 Tf
18.4 TL
0 g
74.08 643.20 Td
( [200%]) Tj
ET
BT
/F1 16 Tf
18.4 TL
0 g
128.16 643.20 Td
( [50%]) Tj
ET
BT
/F1 16 Tf
18.4 TL
0 g
173.44 643.20 Td
( [Fit]) Tj
ET
BT
/F1 16 Tf
18.4 TL
0 g
204.64 643.20 Td
( [FitH]) Tj
ET
BT
/F1 16 Tf
18.4 TL
0 g
247.36 643.20 Td
( [FitV]) Tj
ET
BT
/F1 16 Tf
18.4 TL
0 g
20.00 624.80 Td
(Page 5) Tj
ET
BT
/F1 16 Tf
18.4 TL
0 g
20.00 606.40 Td
( [100%]) Tj
ET
BT
/F1 16 Tf
18.4 TL
0 g
74.08 606.40 Td
( [200%]) Tj
ET
BT
/F1 16 Tf
18.4 TL
0 g
128.16 606.40 Td
( [50%]) Tj
ET
BT
/F1 16 Tf
18.4 TL
0 g
173.44 606.40 Td
( [Fit]) Tj
ET
BT
/F1 16 Tf
18.4 TL
0 g
204.64 606.40 Td
( [FitH]) Tj
ET
BT
/F1 16 Tf
18.4 TL
0 g
247.36 606.40 Td
( [FitV]) Tj
ET
BT
/F1 16 Tf
18.4 TL
0 g
20.00 588.00 Td
(Page 6) Tj
ET
BT
/F1 16 Tf
18.4 TL
0 g
20.00 569.60 Td
( [100%]) Tj
ET
BT
/F1 16 Tf
18.4 TL
0 g
74.08 569.60 Td
( [200%]) Tj
ET
BT
/F1 16 Tf
18.4 TL
0 g
128.16 569.60 Td
( [50%]) Tj
ET
BT
/F1 16 Tf
18.4 TL
0 g
173.44 569.60 Td
( [Fit]) Tj
ET
BT
/F1 16 Tf
18.4 TL
0 g
204.64 569.60 Td
( [FitH]) Tj
ET
BT
/F1 16 Tf
18.4 TL
0 g
247.36 569.60 Td
( [FitV]) Tj
ET
BT
/F1 16 Tf
18.4 TL
0 g
20.00 551.20 Td
(Page 7) Tj
ET
BT
/F1 16 Tf
18.4 TL
0 g
20.00 532.80 Td
( [100%]) Tj
ET
BT
/F1 16 Tf
18.4 TL
0 g
74.08 532.80 Td
( [200%]) Tj
ET
BT
/F1 16 Tf
18.4 TL
0 g
128.16 532.80 Td
( [50%]) Tj
ET
BT
/F1 16 Tf
18.4 TL
0 g
173.44 532.80 Td
( [Fit]) Tj
ET
BT
/F1 16 Tf
18.4 TL
0 g
204.64 532.80 Td
( [FitH]) Tj
ET
BT
/F1 16 Tf
18.4 TL
0 g
247.36 532.80 Td
( [FitV]) Tj
ET
BT
/F1 16 Tf
18.4 TL
0 g
20.00 514.40 Td
(Page 8) Tj
ET
BT
/F1 16 Tf
18.4 TL
0 g
20.00 496.00 Td
( [100%]) Tj
ET
BT
/F1 16 Tf
18.4 TL
0 g
74.08 496.00 Td
( [200%]) Tj
ET
BT
/F1 16 Tf
18.4 TL
0 g
128.16 496.00 Td
( [50%]) Tj
ET
BT
/F1 16 Tf
18.4 TL
0 g
173.44 496.00 Td
( [Fit]) Tj
ET
BT
/F1 16 Tf
18.4 TL
0 g
204.64 496.00 Td
( [FitH]) Tj
ET
BT
/F1 16 Tf
18.4 TL
0 g
247.36 496.00 Td
( [FitV]) Tj
ET
BT
/F1 16 Tf
18.4 TL
0 g
20.00 477.60 Td
(Page 9) Tj
ET
BT
/F1 16 Tf
18.4 TL
0 g
20.00 459.20 Td
( [100%]) Tj
ET
BT
/F1 16 Tf
18.4 TL
0 g
74.08 459.20 Td
( [200%]) Tj
ET
BT
/F1 16 Tf
18.4 TL
0 g
128.16 459.20 Td
( [50%]) Tj
ET
BT
/F1 16 Tf
18.4 TL
0 g
173.44 459.20 Td
( [Fit]) Tj
ET
BT
/F1 16 Tf
18.4 TL
0 g
204.64 459.20 Td
( [FitH]) Tj
ET
BT
/F1 16 Tf
18.4 TL
0 g
247.36 459.20 Td
( [FitV]) Tj
ET
endstream
endobj
5 0 obj
<</Type /Page
/Parent 1 0 R
/Resources 2 0 R
/MediaBox [0 0 612.00 792.00]
/Contents 6 0 R
/Annots [
<</Type /Annot /Subtype /Link /Rect [20.00 749.92 131.52 731.52] /Border [0 0 0] /Dest [3 0 R /XYZ 0 792.00 0] >>
<</Type /Annot /Subtype /Link /Rect [20.00 731.52 153.60 713.12] /Border [0 0 0] /A <</S /URI /URI (http://www.twelvetone.tv) >> >>
]
>>
endobj
6 0 obj
<</Length 198>>
stream
0.20 w
0 G
BT
/F1 16 Tf
18.4 TL
0 g
20.00 772.00 Td
(Page 2) Tj
ET
BT
/F1 16 Tf
18.4 TL
0 g
20.00 735.20 Td
(Goto First Page) Tj
ET
BT
/F1 16 Tf
18.4 TL
0 g
20.00 716.80 Td
(Goto External URL) Tj
ET
endstream
endobj
7 0 obj
<</Type /Page
/Parent 1 0 R
/Resources 2 0 R
/MediaBox [0 0 612.00 792.00]
/Contents 8 0 R
/Annots [
<</Type /Annot /Subtype /Link /Rect [20.00 749.92 131.52 731.52] /Border [0 0 0] /Dest [3 0 R /XYZ 0 792.00 0] >>
<</Type /Annot /Subtype /Link /Rect [20.00 731.52 153.60 713.12] /Border [0 0 0] /A <</S /URI /URI (http://www.twelvetone.tv) >> >>
]
>>
endobj
8 0 obj
<</Length 198>>
stream
0.20 w
0 G
BT
/F1 16 Tf
18.4 TL
0 g
20.00 772.00 Td
(Page 3) Tj
ET
BT
/F1 16 Tf
18.4 TL
0 g
20.00 735.20 Td
(Goto First Page) Tj
ET
BT
/F1 16 Tf
18.4 TL
0 g
20.00 716.80 Td
(Goto External URL) Tj
ET
endstream
endobj
9 0 obj
<</Type /Page
/Parent 1 0 R
/Resources 2 0 R
/MediaBox [0 0 612.00 792.00]
/Contents 10 0 R
/Annots [
<</Type /Annot /Subtype /Link /Rect [20.00 749.92 131.52 731.52] /Border [0 0 0] /Dest [3 0 R /XYZ 0 792.00 0] >>
<</Type /Annot /Subtype /Link /Rect [20.00 731.52 153.60 713.12] /Border [0 0 0] /A <</S /URI /URI (http://www.twelvetone.tv) >> >>
]
>>
endobj
10 0 obj
<</Length 198>>
stream
0.20 w
0 G
BT
/F1 16 Tf
18.4 TL
0 g
20.00 772.00 Td
(Page 4) Tj
ET
BT
/F1 16 Tf
18.4 TL
0 g
20.00 735.20 Td
(Goto First Page) Tj
ET
BT
/F1 16 Tf
18.4 TL
0 g
20.00 716.80 Td
(Goto External URL) Tj
ET
endstream
endobj
11 0 obj
<</Type /Page
/Parent 1 0 R
/Resources 2 0 R
/MediaBox [0 0 612.00 792.00]
/Contents 12 0 R
/Annots [
<</Type /Annot /Subtype /Link /Rect [20.00 749.92 131.52 731.52] /Border [0 0 0] /Dest [3 0 R /XYZ 0 792.00 0] >>
<</Type /Annot /Subtype /Link /Rect [20.00 731.52 153.60 713.12] /Border [0 0 0] /A <</S /URI /URI (http://www.twelvetone.tv) >> >>
]
>>
endobj
12 0 obj
<</Length 198>>
stream
0.20 w
0 G
BT
/F1 16 Tf
18.4 TL
0 g
20.00 772.00 Td
(Page 5) Tj
ET
BT
/F1 16 Tf
18.4 TL
0 g
20.00 735.20 Td
(Goto First Page) Tj
ET
BT
/F1 16 Tf
18.4 TL
0 g
20.00 716.80 Td
(Goto External URL) Tj
ET
endstream
endobj
13 0 obj
<</Type /Page
/Parent 1 0 R
/Resources 2 0 R
/MediaBox [0 0 612.00 792.00]
/Contents 14 0 R
/Annots [
<</Type /Annot /Subtype /Link /Rect [20.00 749.92 131.52 731.52] /Border [0 0 0] /Dest [3 0 R /XYZ 0 792.00 0] >>
<</Type /Annot /Subtype /Link /Rect [20.00 731.52 153.60 713.12] /Border [0 0 0] /A <</S /URI /URI (http://www.twelvetone.tv) >> >>
]
>>
endobj
14 0 obj
<</Length 198>>
stream
0.20 w
0 G
BT
/F1 16 Tf
18.4 TL
0 g
20.00 772.00 Td
(Page 6) Tj
ET
BT
/F1 16 Tf
18.4 TL
0 g
20.00 735.20 Td
(Goto First Page) Tj
ET
BT
/F1 16 Tf
18.4 TL
0 g
20.00 716.80 Td
(Goto External URL) Tj
ET
endstream
endobj
15 0 obj
<</Type /Page
/Parent 1 0 R
/Resources 2 0 R
/MediaBox [0 0 612.00 792.00]
/Contents 16 0 R
/Annots [
<</Type /Annot /Subtype /Link /Rect [20.00 749.92 131.52 731.52] /Border [0 0 0] /Dest [3 0 R /XYZ 0 792.00 0] >>
<</Type /Annot /Subtype /Link /Rect [20.00 731.52 153.60 713.12] /Border [0 0 0] /A <</S /URI /URI (http://www.twelvetone.tv) >> >>
]
>>
endobj
16 0 obj
<</Length 198>>
stream
0.20 w
0 G
BT
/F1 16 Tf
18.4 TL
0 g
20.00 772.00 Td
(Page 7) Tj
ET
BT
/F1 16 Tf
18.4 TL
0 g
20.00 735.20 Td
(Goto First Page) Tj
ET
BT
/F1 16 Tf
18.4 TL
0 g
20.00 716.80 Td
(Goto External URL) Tj
ET
endstream
endobj
17 0 obj
<</Type /Page
/Parent 1 0 R
/Resources 2 0 R
/MediaBox [0 0 612.00 792.00]
/Contents 18 0 R
/Annots [
<</Type /Annot /Subtype /Link /Rect [20.00 749.92 131.52 731.52] /Border [0 0 0] /Dest [3 0 R /XYZ 0 792.00 0] >>
<</Type /Annot /Subtype /Link /Rect [20.00 731.52 153.60 713.12] /Border [0 0 0] /A <</S /URI /URI (http://www.twelvetone.tv) >> >>
]
>>
endobj
18 0 obj
<</Length 198>>
stream
0.20 w
0 G
BT
/F1 16 Tf
18.4 TL
0 g
20.00 772.00 Td
(Page 8) Tj
ET
BT
/F1 16 Tf
18.4 TL
0 g
20.00 735.20 Td
(Goto First Page) Tj
ET
BT
/F1 16 Tf
18.4 TL
0 g
20.00 716.80 Td
(Goto External URL) Tj
ET
endstream
endobj
19 0 obj
<</Type /Page
/Parent 1 0 R
/Resources 2 0 R
/MediaBox [0 0 612.00 792.00]
/Contents 20 0 R
/Annots [
<</Type /Annot /Subtype /Link /Rect [20.00 749.92 131.52 731.52] /Border [0 0 0] /Dest [3 0 R /XYZ 0 792.00 0] >>
<</Type /Annot /Subtype /Link /Rect [20.00 731.52 153.60 713.12] /Border [0 0 0] /A <</S /URI /URI (http://www.twelvetone.tv) >> >>
]
>>
endobj
20 0 obj
<</Length 198>>
stream
0.20 w
0 G
BT
/F1 16 Tf
18.4 TL
0 g
20.00 772.00 Td
(Page 9) Tj
ET
BT
/F1 16 Tf
18.4 TL
0 g
20.00 735.20 Td
(Goto First Page) Tj
ET
BT
/F1 16 Tf
18.4 TL
0 g
20.00 716.80 Td
(Goto External URL) Tj
ET
endstream
endobj
1 0 obj
<</Type /Pages
/Kids [3 0 R 5 0 R 7 0 R 9 0 R 11 0 R 13 0 R 15 0 R 17 0 R 19 0 R ]
/Count 9
>>
endobj
21 0 obj
<</BaseFont/Helvetica/Type/Font
/Encoding/WinAnsiEncoding
/Subtype/Type1>>
endobj
22 0 obj
<</BaseFont/Helvetica-Bold/Type/Font
/Encoding/WinAnsiEncoding
/Subtype/Type1>>
endobj
23 0 obj
<</BaseFont/Helvetica-Oblique/Type/Font
/Encoding/WinAnsiEncoding
/Subtype/Type1>>
endobj
24 0 obj
<</BaseFont/Helvetica-BoldOblique/Type/Font
/Encoding/WinAnsiEncoding
/Subtype/Type1>>
endobj
25 0 obj
<</BaseFont/Courier/Type/Font
/Encoding/WinAnsiEncoding
/Subtype/Type1>>
endobj
26 0 obj
<</BaseFont/Courier-Bold/Type/Font
/Encoding/WinAnsiEncoding
/Subtype/Type1>>
endobj
27 0 obj
<</BaseFont/Courier-Oblique/Type/Font
/Encoding/WinAnsiEncoding
/Subtype/Type1>>
endobj
28 0 obj
<</BaseFont/Courier-BoldOblique/Type/Font
/Encoding/WinAnsiEncoding
/Subtype/Type1>>
endobj
29 0 obj
<</BaseFont/Times-Roman/Type/Font
/Encoding/WinAnsiEncoding
/Subtype/Type1>>
endobj
30 0 obj
<</BaseFont/Times-Bold/Type/Font
/Encoding/WinAnsiEncoding
/Subtype/Type1>>
endobj
31 0 obj
<</BaseFont/Times-Italic/Type/Font
/Encoding/WinAnsiEncoding
/Subtype/Type1>>
endobj
32 0 obj
<</BaseFont/Times-BoldItalic/Type/Font
/Encoding/WinAnsiEncoding
/Subtype/Type1>>
endobj
2 0 obj
<<
/ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
/Font <<
/F1 21 0 R
/F2 22 0 R
/F3 23 0 R
/F4 24 0 R
/F5 25 0 R
/F6 26 0 R
/F7 27 0 R
/F8 28 0 R
/F9 29 0 R
/F10 30 0 R
/F11 31 0 R
/F12 32 0 R
>>
/XObject <<
>>
>>
endobj
33 0 obj
<<
/Producer (jsPDF 1.0.0-trunk)
/CreationDate (D:20141126182401+01'00')
>>
endobj
34 0 obj
<<
/Type /Catalog
/Pages 1 0 R
/OpenAction [3 0 R /FitH null]
/PageLayout /OneColumn
>>
endobj
xref
0 35
0000000000 65535 f
0000014661 00000 n
0000015918 00000 n
0000000009 00000 n
0000006405 00000 n
0000009732 00000 n
0000010099 00000 n
0000010346 00000 n
0000010713 00000 n
0000010960 00000 n
0000011328 00000 n
0000011576 00000 n
0000011945 00000 n
0000012193 00000 n
0000012562 00000 n
0000012810 00000 n
0000013179 00000 n
0000013427 00000 n
0000013796 00000 n
0000014044 00000 n
0000014413 00000 n
0000014771 00000 n
0000014862 00000 n
0000014958 00000 n
0000015057 00000 n
0000015160 00000 n
0000015249 00000 n
0000015343 00000 n
0000015440 00000 n
0000015541 00000 n
0000015634 00000 n
0000015726 00000 n
0000015820 00000 n
0000016147 00000 n
0000016239 00000 n
trailer
<<
/Size 35
/Root 34 0 R
/Info 33 0 R
>>
startxref
16343
%%EOF

View File

@ -0,0 +1,91 @@
<!doctype html>
<!--
/**
* jsPDF Annotations PlugIn
* Copyright (c) 2014 Steven Spungin (TwelveTone LLC) steven@twelvetone.tv
*
* Licensed under the MIT License.
* http://opensource.org/licenses/mit-license
*/
-->
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title>Annotation Test</title>
<script src='../../libs/require/require.js'></script>
<script>
require_baseUrl_override = '../../';
require(['../../libs/require/config'], function(){
require(['plugins/annotations', 'examples/js/test_harness'], function(){
var pdf = new jsPDF('p', 'pt', 'letter');
// Create pages with a table of contents.
// TOC links to each page
// Each page links back to TOC and to an external URL
// Supported magnification Options are included.
var y = 20;
var text = 'Table of Contents';
pdf.text(text, 20, y);
y += pdf.getLineHeight() * 2;
for (var i=2; i<10; i++){
text = "Page " + i;
pdf.textWithLink(text, 20, y, {pageNumber:i});
y += pdf.getLineHeight();
var x = 20;
var width = pdf.textWithLink(" [100%]", x, y, {pageNumber:i, magFactor:'XYZ', zoom:1});
x += width;
var width = pdf.textWithLink(" [200%]", x, y, {pageNumber:i, magFactor:'XYZ', zoom:2});
x += width;
var width = pdf.textWithLink(" [50%]", x, y, {pageNumber:i, magFactor:'XYZ', zoom:.5});
x += width;
var width = pdf.textWithLink(" [Fit]", x, y, {pageNumber:i, magFactor:'Fit'});
x += width;
var width = pdf.textWithLink(" [FitH]", x, y, {pageNumber:i, magFactor:'FitH'});
x += width;
var width = pdf.textWithLink(" [FitV]", x, y, {pageNumber:i, magFactor:'FitV'});
y += pdf.getLineHeight();
}
// Create Test Pages
for (var i=2; i<10; i++){
pdf.addPage();
y = 20;
var text = 'Page ' + i;
pdf.text(text, 20, y);
y += pdf.getLineHeight() * 2;
text = "Goto First Page";
pdf.textWithLink(text, 20, y, {pageNumber:1});
y += pdf.getLineHeight();
text = "Goto External URL";
pdf.textWithLink(text, 20, y, {url:'http://www.twelvetone.tv'});
y += pdf.getLineHeight();
}
var message = 'Chrome default PDF reader currently does not support magFactor links, \
although links still work after manualy changing magFactor. <br /> \
Firefox has a bug displaying annotations after the magFactor changes, but links do work. <br /> \
To test magFactor links [...] without bugs, use Adobe Reader or compatible application.';
pdf_test_harness_init(pdf, message);
}); // require
}); // require
</script>
</head>
<body style='background-color: silver; margin: 0;'>
</body>
</html>

View File

@ -0,0 +1,556 @@
%PDF-1.3
3 0 obj
<</Type /Page
/Parent 1 0 R
/Resources 2 0 R
/MediaBox [0 0 612.00 792.00]
/Contents 4 0 R
/Annots [
<</Type /Annot /Subtype /Link /Rect [20.00 749.92 70.24 731.52] /Border [0 0 0] /Dest [5 0 R /XYZ 0 792.00 0] >>
<</Type /Annot /Subtype /Link /Rect [20.00 731.52 70.24 713.12] /Border [0 0 0] /Dest [7 0 R /XYZ 0 792.00 0] >>
<</Type /Annot /Subtype /Link /Rect [20.00 713.12 70.24 694.72] /Border [0 0 0] /Dest [9 0 R /XYZ 0 792.00 0] >>
<</Type /Annot /Subtype /Link /Rect [20.00 694.72 70.24 676.32] /Border [0 0 0] /Dest [11 0 R /XYZ 0 792.00 0] >>
<</Type /Annot /Subtype /Link /Rect [20.00 676.32 70.24 657.92] /Border [0 0 0] /Dest [13 0 R /XYZ 0 792.00 0] >>
<</Type /Annot /Subtype /Link /Rect [20.00 657.92 70.24 639.52] /Border [0 0 0] /Dest [15 0 R /XYZ 0 792.00 0] >>
<</Type /Annot /Subtype /Link /Rect [20.00 639.52 70.24 621.12] /Border [0 0 0] /Dest [17 0 R /XYZ 0 792.00 0] >>
<</Type /Annot /Subtype /Link /Rect [20.00 621.12 70.24 602.72] /Border [0 0 0] /Dest [19 0 R /XYZ 0 792.00 0] >>
]
>>
endobj
4 0 obj
<</Length 525>>
stream
0.20 w
0 G
BT
/F1 16 Tf
18.4 TL
0 g
20.00 772.00 Td
(Table of Contents) Tj
ET
BT
/F1 16 Tf
18.4 TL
0 g
20.00 735.20 Td
(Page 2) Tj
ET
BT
/F1 16 Tf
18.4 TL
0 g
20.00 716.80 Td
(Page 3) Tj
ET
BT
/F1 16 Tf
18.4 TL
0 g
20.00 698.40 Td
(Page 4) Tj
ET
BT
/F1 16 Tf
18.4 TL
0 g
20.00 680.00 Td
(Page 5) Tj
ET
BT
/F1 16 Tf
18.4 TL
0 g
20.00 661.60 Td
(Page 6) Tj
ET
BT
/F1 16 Tf
18.4 TL
0 g
20.00 643.20 Td
(Page 7) Tj
ET
BT
/F1 16 Tf
18.4 TL
0 g
20.00 624.80 Td
(Page 8) Tj
ET
BT
/F1 16 Tf
18.4 TL
0 g
20.00 606.40 Td
(Page 9) Tj
ET
endstream
endobj
5 0 obj
<</Type /Page
/Parent 1 0 R
/Resources 2 0 R
/MediaBox [0 0 612.00 792.00]
/Contents 6 0 R
/Annots [
<</Type /Annot /Subtype /Link /Rect [20.00 749.92 131.52 731.52] /Border [0 0 0] /Dest [3 0 R /XYZ 0 792.00 0] >>
<</Type /Annot /Subtype /Link /Rect [20.00 731.52 153.60 713.12] /Border [0 0 0] /A <</S /URI /URI (http://www.twelvetone.tv) >> >>
]
>>
endobj
6 0 obj
<</Length 198>>
stream
0.20 w
0 G
BT
/F1 16 Tf
18.4 TL
0 g
20.00 772.00 Td
(Page 2) Tj
ET
BT
/F1 16 Tf
18.4 TL
0 g
20.00 735.20 Td
(Goto First Page) Tj
ET
BT
/F1 16 Tf
18.4 TL
0 g
20.00 716.80 Td
(Goto External URL) Tj
ET
endstream
endobj
7 0 obj
<</Type /Page
/Parent 1 0 R
/Resources 2 0 R
/MediaBox [0 0 612.00 792.00]
/Contents 8 0 R
/Annots [
<</Type /Annot /Subtype /Link /Rect [20.00 749.92 131.52 731.52] /Border [0 0 0] /Dest [3 0 R /XYZ 0 792.00 0] >>
<</Type /Annot /Subtype /Link /Rect [20.00 731.52 153.60 713.12] /Border [0 0 0] /A <</S /URI /URI (http://www.twelvetone.tv) >> >>
]
>>
endobj
8 0 obj
<</Length 198>>
stream
0.20 w
0 G
BT
/F1 16 Tf
18.4 TL
0 g
20.00 772.00 Td
(Page 3) Tj
ET
BT
/F1 16 Tf
18.4 TL
0 g
20.00 735.20 Td
(Goto First Page) Tj
ET
BT
/F1 16 Tf
18.4 TL
0 g
20.00 716.80 Td
(Goto External URL) Tj
ET
endstream
endobj
9 0 obj
<</Type /Page
/Parent 1 0 R
/Resources 2 0 R
/MediaBox [0 0 612.00 792.00]
/Contents 10 0 R
/Annots [
<</Type /Annot /Subtype /Link /Rect [20.00 749.92 131.52 731.52] /Border [0 0 0] /Dest [3 0 R /XYZ 0 792.00 0] >>
<</Type /Annot /Subtype /Link /Rect [20.00 731.52 153.60 713.12] /Border [0 0 0] /A <</S /URI /URI (http://www.twelvetone.tv) >> >>
]
>>
endobj
10 0 obj
<</Length 198>>
stream
0.20 w
0 G
BT
/F1 16 Tf
18.4 TL
0 g
20.00 772.00 Td
(Page 4) Tj
ET
BT
/F1 16 Tf
18.4 TL
0 g
20.00 735.20 Td
(Goto First Page) Tj
ET
BT
/F1 16 Tf
18.4 TL
0 g
20.00 716.80 Td
(Goto External URL) Tj
ET
endstream
endobj
11 0 obj
<</Type /Page
/Parent 1 0 R
/Resources 2 0 R
/MediaBox [0 0 612.00 792.00]
/Contents 12 0 R
/Annots [
<</Type /Annot /Subtype /Link /Rect [20.00 749.92 131.52 731.52] /Border [0 0 0] /Dest [3 0 R /XYZ 0 792.00 0] >>
<</Type /Annot /Subtype /Link /Rect [20.00 731.52 153.60 713.12] /Border [0 0 0] /A <</S /URI /URI (http://www.twelvetone.tv) >> >>
]
>>
endobj
12 0 obj
<</Length 198>>
stream
0.20 w
0 G
BT
/F1 16 Tf
18.4 TL
0 g
20.00 772.00 Td
(Page 5) Tj
ET
BT
/F1 16 Tf
18.4 TL
0 g
20.00 735.20 Td
(Goto First Page) Tj
ET
BT
/F1 16 Tf
18.4 TL
0 g
20.00 716.80 Td
(Goto External URL) Tj
ET
endstream
endobj
13 0 obj
<</Type /Page
/Parent 1 0 R
/Resources 2 0 R
/MediaBox [0 0 612.00 792.00]
/Contents 14 0 R
/Annots [
<</Type /Annot /Subtype /Link /Rect [20.00 749.92 131.52 731.52] /Border [0 0 0] /Dest [3 0 R /XYZ 0 792.00 0] >>
<</Type /Annot /Subtype /Link /Rect [20.00 731.52 153.60 713.12] /Border [0 0 0] /A <</S /URI /URI (http://www.twelvetone.tv) >> >>
]
>>
endobj
14 0 obj
<</Length 198>>
stream
0.20 w
0 G
BT
/F1 16 Tf
18.4 TL
0 g
20.00 772.00 Td
(Page 6) Tj
ET
BT
/F1 16 Tf
18.4 TL
0 g
20.00 735.20 Td
(Goto First Page) Tj
ET
BT
/F1 16 Tf
18.4 TL
0 g
20.00 716.80 Td
(Goto External URL) Tj
ET
endstream
endobj
15 0 obj
<</Type /Page
/Parent 1 0 R
/Resources 2 0 R
/MediaBox [0 0 612.00 792.00]
/Contents 16 0 R
/Annots [
<</Type /Annot /Subtype /Link /Rect [20.00 749.92 131.52 731.52] /Border [0 0 0] /Dest [3 0 R /XYZ 0 792.00 0] >>
<</Type /Annot /Subtype /Link /Rect [20.00 731.52 153.60 713.12] /Border [0 0 0] /A <</S /URI /URI (http://www.twelvetone.tv) >> >>
]
>>
endobj
16 0 obj
<</Length 198>>
stream
0.20 w
0 G
BT
/F1 16 Tf
18.4 TL
0 g
20.00 772.00 Td
(Page 7) Tj
ET
BT
/F1 16 Tf
18.4 TL
0 g
20.00 735.20 Td
(Goto First Page) Tj
ET
BT
/F1 16 Tf
18.4 TL
0 g
20.00 716.80 Td
(Goto External URL) Tj
ET
endstream
endobj
17 0 obj
<</Type /Page
/Parent 1 0 R
/Resources 2 0 R
/MediaBox [0 0 612.00 792.00]
/Contents 18 0 R
/Annots [
<</Type /Annot /Subtype /Link /Rect [20.00 749.92 131.52 731.52] /Border [0 0 0] /Dest [3 0 R /XYZ 0 792.00 0] >>
<</Type /Annot /Subtype /Link /Rect [20.00 731.52 153.60 713.12] /Border [0 0 0] /A <</S /URI /URI (http://www.twelvetone.tv) >> >>
]
>>
endobj
18 0 obj
<</Length 198>>
stream
0.20 w
0 G
BT
/F1 16 Tf
18.4 TL
0 g
20.00 772.00 Td
(Page 8) Tj
ET
BT
/F1 16 Tf
18.4 TL
0 g
20.00 735.20 Td
(Goto First Page) Tj
ET
BT
/F1 16 Tf
18.4 TL
0 g
20.00 716.80 Td
(Goto External URL) Tj
ET
endstream
endobj
19 0 obj
<</Type /Page
/Parent 1 0 R
/Resources 2 0 R
/MediaBox [0 0 612.00 792.00]
/Contents 20 0 R
/Annots [
<</Type /Annot /Subtype /Link /Rect [20.00 749.92 131.52 731.52] /Border [0 0 0] /Dest [3 0 R /XYZ 0 792.00 0] >>
<</Type /Annot /Subtype /Link /Rect [20.00 731.52 153.60 713.12] /Border [0 0 0] /A <</S /URI /URI (http://www.twelvetone.tv) >> >>
]
>>
endobj
20 0 obj
<</Length 198>>
stream
0.20 w
0 G
BT
/F1 16 Tf
18.4 TL
0 g
20.00 772.00 Td
(Page 9) Tj
ET
BT
/F1 16 Tf
18.4 TL
0 g
20.00 735.20 Td
(Goto First Page) Tj
ET
BT
/F1 16 Tf
18.4 TL
0 g
20.00 716.80 Td
(Goto External URL) Tj
ET
endstream
endobj
1 0 obj
<</Type /Pages
/Kids [3 0 R 5 0 R 7 0 R 9 0 R 11 0 R 13 0 R 15 0 R 17 0 R 19 0 R ]
/Count 9
>>
endobj
21 0 obj
<</BaseFont/Helvetica/Type/Font
/Encoding/WinAnsiEncoding
/Subtype/Type1>>
endobj
22 0 obj
<</BaseFont/Helvetica-Bold/Type/Font
/Encoding/WinAnsiEncoding
/Subtype/Type1>>
endobj
23 0 obj
<</BaseFont/Helvetica-Oblique/Type/Font
/Encoding/WinAnsiEncoding
/Subtype/Type1>>
endobj
24 0 obj
<</BaseFont/Helvetica-BoldOblique/Type/Font
/Encoding/WinAnsiEncoding
/Subtype/Type1>>
endobj
25 0 obj
<</BaseFont/Courier/Type/Font
/Encoding/WinAnsiEncoding
/Subtype/Type1>>
endobj
26 0 obj
<</BaseFont/Courier-Bold/Type/Font
/Encoding/WinAnsiEncoding
/Subtype/Type1>>
endobj
27 0 obj
<</BaseFont/Courier-Oblique/Type/Font
/Encoding/WinAnsiEncoding
/Subtype/Type1>>
endobj
28 0 obj
<</BaseFont/Courier-BoldOblique/Type/Font
/Encoding/WinAnsiEncoding
/Subtype/Type1>>
endobj
29 0 obj
<</BaseFont/Times-Roman/Type/Font
/Encoding/WinAnsiEncoding
/Subtype/Type1>>
endobj
30 0 obj
<</BaseFont/Times-Bold/Type/Font
/Encoding/WinAnsiEncoding
/Subtype/Type1>>
endobj
31 0 obj
<</BaseFont/Times-Italic/Type/Font
/Encoding/WinAnsiEncoding
/Subtype/Type1>>
endobj
32 0 obj
<</BaseFont/Times-BoldItalic/Type/Font
/Encoding/WinAnsiEncoding
/Subtype/Type1>>
endobj
2 0 obj
<<
/ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
/Font <<
/F1 21 0 R
/F2 22 0 R
/F3 23 0 R
/F4 24 0 R
/F5 25 0 R
/F6 26 0 R
/F7 27 0 R
/F8 28 0 R
/F9 29 0 R
/F10 30 0 R
/F11 31 0 R
/F12 32 0 R
>>
/XObject <<
>>
>>
endobj
33 0 obj
<<
/Producer (jsPDF 1.0.0-trunk)
/CreationDate (D:20141126191522+01'00')
>>
endobj
34 0 obj
<<
/Type /Catalog
/Pages 1 0 R
/OpenAction [3 0 R /FitH null]
/PageLayout /OneColumn
>>
endobj
xref
0 35
0000000000 65535 f
0000006542 00000 n
0000007799 00000 n
0000000009 00000 n
0000001039 00000 n
0000001613 00000 n
0000001980 00000 n
0000002227 00000 n
0000002594 00000 n
0000002841 00000 n
0000003209 00000 n
0000003457 00000 n
0000003826 00000 n
0000004074 00000 n
0000004443 00000 n
0000004691 00000 n
0000005060 00000 n
0000005308 00000 n
0000005677 00000 n
0000005925 00000 n
0000006294 00000 n
0000006652 00000 n
0000006743 00000 n
0000006839 00000 n
0000006938 00000 n
0000007041 00000 n
0000007130 00000 n
0000007224 00000 n
0000007321 00000 n
0000007422 00000 n
0000007515 00000 n
0000007607 00000 n
0000007701 00000 n
0000008028 00000 n
0000008120 00000 n
trailer
<<
/Size 35
/Root 34 0 R
/Info 33 0 R
>>
startxref
8224
%%EOF

View File

@ -0,0 +1,88 @@
<!doctype html>
<!--
/**
* jsPDF Annotations PlugIn
* Copyright (c) 2014 Steven Spungin (TwelveTone LLC) steven@twelvetone.tv
*
* Licensed under the MIT License.
* http://opensource.org/licenses/mit-license
*/
-->
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title>Annotation Test - Text</title>
<script src='../../libs/require/require.js'></script>
<script>
require_baseUrl_override = '../../';
require(['../../libs/require/config'], function(){
require(['plugins/annotations', 'examples/js/test_harness'], function(){
var pdf = new jsPDF('p', 'pt', 'letter');
var y = 20;
var w;
var text = 'Text Annotations';
pdf.text(text, 20, y);
pdf.setFontSize(12);
y += pdf.getLineHeight() * 2;
pdf.text("Text Annotation With Popup (closed)", 20, y);
pdf.createAnnotation({
type : 'text',
title: 'note',
bounds : {
x : 0,
y : y,
w : 200,
h : 80
},
contents : 'This is text annotation (closed by default)',
open : false
});
y += pdf.getLineHeight() * 5;
pdf.text("Text Annotation With Popup (opened)", 20, y);
pdf.createAnnotation({
type : 'text',
title: 'another note',
bounds : {
x : 0,
y : y,
w : 200,
h : 80
},
contents : 'This is a text annotation (opened)',
open : true
});
y += pdf.getLineHeight() * 5;
pdf.text("Free Text Annotation", 20, y);
pdf.createAnnotation({
type : 'freetext',
bounds : {
x : 0,
y : y + 10,
w : 200,
h : 20
},
contents : 'This is a freetext annotation',
color : '#ff0000'
});
var warning = 'Most web browsers do not display annotations. Download the PDF and open in Adobe Reader, etc).'
pdf_test_harness_init(pdf, warning);
}); // require
}); // require
</script>
</head>
<body style='background-color: silver; margin: 0;'>
</body>
</html>

View File

@ -0,0 +1,518 @@
<!doctype>
<html>
<head>
<title>jsPDF</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link rel="stylesheet" type="text/css" href="css/smoothness/jquery-ui-1.8.17.custom.css">
<link rel="stylesheet" type="text/css" href="css/main.css">
<script type="text/javascript" src="js/jquery/jquery-1.7.1.min.js"></script>
<script type="text/javascript" src="js/jquery/jquery-ui-1.8.17.custom.min.js"></script>
<script type="text/javascript" src="../dist/jspdf.debug.js"></script>
<script type="text/javascript" src="js/basic.js"></script>
<script>
$(function() {
$("#accordion-basic, #accordion-text, #accordion-graphic").accordion({
autoHeight: false,
navigation: true
});
$( "#tabs" ).tabs();
$(".button").button();
});
</script>
</head>
<body>
<a href="https://github.com/MrRio/jsPDF">
<img style="position: absolute; top: 0; right: 0; border: 0;" src="http://s3.amazonaws.com/github/ribbons/forkme_right_darkblue_121621.png" alt="Fork me on GitHub" />
</a>
<h1>jsPDF Demos</h1>
<p>Examples for using jsPDF with Data URIs below. Go <a href="https://github.com/MrRio/jsPDF">back to project homepage</a>.</p>
<div id="tabs">
<ul>
<li><a href="#tabs-basic">Basic elements</a></li>
<li><a href="#tabs-text">Text elements</a></li>
<li><a href="#tabs-graphic">Graphic elements</a></li>
</ul>
<div id="tabs-basic">
<div id="accordion-basic">
<h2><a href="#">Simple two-page text document</a></h2>
<div><p><pre>var doc = new jsPDF();
doc.text(20, 20, 'Hello world!');
doc.text(20, 30, 'This is client-side Javascript, pumping out a PDF.');
doc.addPage();
doc.text(20, 20, 'Do you like that?');
doc.save('Test.pdf');</pre>
<a href="javascript:demoTwoPageDocument()" class="button">Run Code</a></p></div>
<h2><a href="#">Landscape document</a></h2>
<div><p><pre>var doc = new jsPDF('landscape');
doc.text(20, 20, 'Hello landscape world!');
doc.save('Test.pdf');</pre>
<a href="javascript:demoLandscape()" class="button">Run Code</a></p></div>
<h2><a href="#">Adding metadata</a></h2>
<div><p><pre>var doc = new jsPDF();
doc.text(20, 20, 'This PDF has a title, subject, author, keywords and a creator.');
// Optional - set properties on the document
doc.setProperties({
title: 'Title',
subject: 'This is the subject',
author: 'James Hall',
keywords: 'generated, javascript, web 2.0, ajax',
creator: 'MEEE'
});
// Output as Data URI
doc.save('Test.pdf');</pre>
<a href="javascript:demoMetadata()" class="button">Run Code</a></p></div>
<h2><a href="#">Example of user input</a></h2>
<div><p><pre>var name = prompt('What is your name?');
var multiplier = prompt('Enter a number:');
multiplier = parseInt(multiplier);
var doc = new jsPDF();
doc.setFontSize(22);
doc.text(20, 20, 'Questions');
doc.setFontSize(16);
doc.text(20, 30, 'This belongs to: ' + name);
for(var i = 1; i <= 12; i ++) {
doc.text(20, 30 + (i * 10), i + ' x ' + multiplier + ' = ___');
}
doc.addPage();
doc.setFontSize(22);
doc.text(20, 20, 'Answers');
doc.setFontSize(16);
for(var i = 1; i <= 12; i ++) {
doc.text(20, 30 + (i * 10), i + ' x ' + multiplier + ' = ' + (i * multiplier));
}
doc.save('Test.pdf');</pre>
<a href="javascript:demoUserInput()" class="button">Run Code</a></p></div>
</div>
</div>
<div id="tabs-text">
<div id="accordion-text">
<h2><a href="#">Different font sizes</a></h2>
<div><p><pre>var doc = new jsPDF();
doc.setFontSize(22);
doc.text(20, 20, 'This is a title');
doc.setFontSize(16);
doc.text(20, 30, 'This is some normal sized text underneath.');
doc.save('Test.pdf');</pre>
<a href="javascript:demoFontSizes()" class="button">Run Code</a>
</p></div>
<h2><a href="#">Different font types</a></h2>
<div><p><pre>var doc = new jsPDF();
doc.text(20, 20, 'This is the default font.');
doc.setFont("courier");
doc.text(20, 30, 'This is courier normal.');
doc.setFont("times");
doc.setFontType("italic");
doc.text(20, 40, 'This is times italic.');
doc.setFont("helvetica");
doc.setFontType("bold");
doc.text(20, 50, 'This is helvetica bold.');
doc.setFont("courier");
doc.setFontType("bolditalic");
doc.text(20, 60, 'This is courier bolditalic.');
doc.save('Test.pdf');</pre>
<a href="javascript:demoFontTypes()" class="button">Run Code</a></p></div>
<h2><a href="#">Different text colors</a></h2>
<div><p><pre>var doc = new jsPDF();
doc.setTextColor(100);
doc.text(20, 20, 'This is gray.');
doc.setTextColor(150);
doc.text(20, 30, 'This is light gray.');
doc.setTextColor(255,0,0);
doc.text(20, 40, 'This is red.');
doc.setTextColor(0,255,0);
doc.text(20, 50, 'This is green.');
doc.setTextColor(0,0,255);
doc.text(20, 60, 'This is blue.');
doc.save('Test.pdf');</pre>
<a href="javascript:demoTextColors()" class="button">Run Code</a></p></div>
<h2><a href="#">Font-metrics-based line sizing and split</a></h2>
<div><p><pre>var pdf = new jsPDF('p','in','letter')
, sizes = [12, 16, 20]
, fonts = [['Times','Roman'],['Helvetica',''], ['Times','Italic']]
, font, size, lines
, verticalOffset = 0.5 // inches on a 8.5 x 11 inch sheet.
, loremipsum = 'Lorem ipsum dolor sit amet, ...'
for (var i in fonts){
if (fonts.hasOwnProperty(i)) {
font = fonts[i]
size = sizes[i]
lines = pdf.setFont(font[0], font[1])
.setFontSize(size)
.splitTextToSize(loremipsum, 7.5)
// Don't want to preset font, size to calculate the lines?
// .splitTextToSize(text, maxsize, options)
// allows you to pass an object with any of the following:
// {
// 'fontSize': 12
// , 'fontStyle': 'Italic'
// , 'fontName': 'Times'
// }
// Without these, .splitTextToSize will use current / default
// font Family, Style, Size.
pdf.text(0.5, verticalOffset + size / 72, lines)
verticalOffset += (lines.length + 0.5) * size / 72
}
}
pdf.save('Test.pdf');</pre>
<a href="javascript:demoStringSplitting()" class="button">Run Code</a></p></div>
<h2><a href="#">fromHTML plugin</a></h2>
<div class="to_pdf">
<div><p>This (BETA level. API is subject to change!) plugin allows one to scrape formatted text from an HTML fragment into PDF. Font size, styles are copied. The long-running text is split to stated content width.</p></div>
<div style="border-width: 2px; border-style: dotted; padding: 1em; font-size:120%;line-height: 1.5em;" id="fromHTMLtestdiv">
<h2 style="font-size:120%">Header Two</h2>
<strong><em>Double style span</em></strong>
<span style="font-family:monospace">Monotype span with
carriage return. </span><span style="font-size:300%">a humongous font size span.</span>
Followed by long parent-less text node. asdf qwer asdf zxcv qsasfd qwer qwasfd zcxv sdf qwer qwe sdf wer qwer asdf zxv.
<div <span style="font-family:serif">Serif Inner DIV (bad markup, but testing block detection)</div><span style="font-family:sans-serif"> Sans-serif span with extra spaces </span>
Followed by text node without any wrapping element. <span>And some long long text span attached at the end to test line wrap. qwer asdf qwer lkjh asdf zxvc safd qwer wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww qewr asdf zxcv.</span>
<p style="font-size:120%">This is a <em style="font-size:120%">new</em> paragraph.</p>
This is more wrapping-less text.
<p id="bypassme" style="font-size:120%">This paragraph will <strong style="font-size:120%">NOT</strong> be on resulting PDF because a special attached element handler will be looking for the ID - 'bypassme' - and should bypass rendering it.</p>
<p style="font-size:120%;text-align:center">This is <strong style="font-size:120%">another</strong> paragraph.</p>
<p style="text-align:justify">
Integer dignissim urna tortor? Cum rhoncus, a lacus ultricies tincidunt, tristique lundium enim urna, magna? Sed, enim penatibus? Lacus pellentesque integer et pulvinar tortor? Dapibus in arcu arcu, vut dolor? Et! Placerat pulvinar cursus, urna ultrices arcu nunc, a ultrices dictumst elementum? Magnis rhoncus pellentesque, egestas enim purus, augue et nascetur sociis enim rhoncus. Adipiscing augue placerat tincidunt pulvinar ridiculus. Porta in sociis arcu et placerat augue sit enim nec hac massa, turpis ridiculus nunc phasellus pulvinar proin sit pulvinar, ultrices aliquet placerat amet? Lorem nunc porttitor etiam risus tempor placerat amet non hac, nunc sed odio augue? Turpis, magnis. Lorem pid, a porttitor tincidunt adipiscing sagittis pellentesque, mattis amet, duis proin, penatibus lectus lorem eros, nisi, tempor phasellus, elit.
</p>
<h2>Image Support</h2>
<p>
NOTES: the img src must be on the same domain or the external domain should allow Cross-origin.
</p>
<img src="http://maps.googleapis.com/maps/api/staticmap?center=Brooklyn+Bridge,New+York,NY&zoom=13&size=400x300&scale=1&maptype=roadmap&markers=color:blue%7Clabel:S%7C40.702147,-74.015794&markers=color:green%7Clabel:G%7C40.711614,-74.012318&markers=color:red%7Ccolor:red%7Clabel:C%7C40.718217,-73.998284&sensor=false" width="400" height="300">
<!-- ADD_PAGE -->
<h2>New page added with html comment: ADD_PAGE</h2>
<h2></h2>
<p>HTML Table:</p>
<p>
NOTES: Must set the COLGROUP tag with "with" on each COL tag as %, inspect the table. BTW the css does not have a good style to render the table on the html :P, feel free to the add the CSS.
</p>
<table>
<colgroup>
<col width="60%">
<col width="40%">
</colgroup>
<thead>
<tr>
<th>
Heading1
</th>
<th>
Heading2
</th>
</tr>
</thead>
<tbody>
<tr>
<td>
cell 1,1
</td>
<td>
cell 1,2
</td>
</tr>
<tr>
<td>
cell 2,1
</td>
<td>
cell 2,2
</td>
</tr>
<tr>
<td>
cell 3,1
</td>
<td>
cell 3,2
</td>
</tr>
<tr>
<td>
cell 4,1
</td>
<td>
cell 4,2
</td>
</tr>
</tvody>
</table>
<h2></h2>
<h2></h2>
<p>HTML Lists:</p>
<div style="margin-left:20px">
<ul>
<li>Lorem Ipsum</li>
<li>Dolor Sit amen</li>
<li>Lorem Ipsum</li>
<li>Dolor Sit amen</li>
</ul>
<ol>
<li>Lorem Ipsum</li>
<li>Dolor Sit amen</li>
<li>Lorem Ipsum</li>
<li>Dolor Sit amen</li>
</ol>
</div>
</div>
<div><p><pre>var pdf = new jsPDF('p', 'pt', 'letter')
// source can be HTML-formatted string, or a reference
// to an actual DOM element from which the text will be scraped.
, source = $('#fromHTMLtestdiv')[0]
// we support special element handlers. Register them with jQuery-style
// ID selector for either ID or node name. ("#iAmID", "div", "span" etc.)
// There is no support for any other type of selectors
// (class, of compound) at this time.
, specialElementHandlers = {
// element with id of "bypass" - jQuery style selector
'#bypassme': function(element, renderer){
// true = "handled elsewhere, bypass text extraction"
return true
}
}
margins = {
top: 80,
bottom: 60,
left: 40,
width: 522
};
// all coords and widths are in jsPDF instance's declared units
// 'inches' in this case
pdf.fromHTML(
source // HTML string or DOM elem ref.
, margins.left // x coord
, margins.top // y coord
, {
'width': margins.width // max width of content on PDF
, 'elementHandlers': specialElementHandlers
},
function (dispose) {
// dispose: object with X, Y of the last line add to the PDF
// this allow the insertion of new lines after html
pdf.save('Test.pdf');
},
margins
)
</pre>
<button onclick="javascript:demoFromHTML()" class="button">Run Code</button></p></div></div>
<h2><a href="#">Text alignment</a></h2>
<div><p><pre>var pdf = new jsPDF('p', 'pt', 'letter');
pdf.text( 'This text is normally\raligned.', 140, 50 );
pdf.text( 'This text is centered\raround\rthis point.', 140, 120, 'center' );
pdf.text( 'This text is rotated\rand centered around\rthis point.', 140, 300, 45, 'center' );
pdf.text( 'This text is\raligned to the\rright.', 140, 400, 'right' );
pdf.text( 'This text is\raligned to the\rright.', 140, 550, 45, 'right' );
pdf.text( 'This single line is centered', 460, 50, 'center' );
pdf.text( 'This right aligned text\r\rhas an empty line.', 460, 200, 'right' );
pdf.save('Test.pdf');</pre>
<a href="javascript:demoTextAlign()" class="button">Run Code</a></p></div>
</div>
</div>
<div id="tabs-graphic">
<div id="accordion-graphic">
<h2><a href="#">Draw example: rectangles / squares</a></h2>
<div><p><pre>var doc = new jsPDF();
doc.rect(20, 20, 10, 10); // empty square
doc.rect(40, 20, 10, 10, 'F'); // filled square
doc.setDrawColor(255,0,0);
doc.rect(60, 20, 10, 10); // empty red square
doc.setDrawColor(255,0,0);
doc.rect(80, 20, 10, 10, 'FD'); // filled square with red borders
doc.setDrawColor(0);
doc.setFillColor(255,0,0);
doc.rect(100, 20, 10, 10, 'F'); // filled red square
doc.setDrawColor(0);
doc.setFillColor(255,0,0);
doc.rect(120, 20, 10, 10, 'FD'); // filled red square with black borders
doc.setDrawColor(0);
doc.setFillColor(255, 255, 255);
doc.roundedRect(140, 20, 10, 10, 3, 3, 'FD'); // Black square with rounded corners
doc.save('Test.pdf');</pre>
<a href="javascript:demoRectangles()" class="button">Run Code</a></p></div>
<h2><a href="#">Draw example: lines</a></h2>
<div><p><pre>var doc = new jsPDF();
doc.line(20, 20, 60, 20); // horizontal line
doc.setLineWidth(0.5);
doc.line(20, 25, 60, 25);
doc.setLineWidth(1);
doc.line(20, 30, 60, 30);
doc.setLineWidth(1.5);
doc.line(20, 35, 60, 35);
doc.setDrawColor(255,0,0); // draw red lines
doc.setLineWidth(0.1);
doc.line(100, 20, 100, 60); // vertical line
doc.setLineWidth(0.5);
doc.line(105, 20, 105, 60);
doc.setLineWidth(1);
doc.line(110, 20, 110, 60);
doc.setLineWidth(1.5);
doc.line(115, 20, 115, 60);
doc.save('Test.pdf');</pre>
<a href="javascript:demoLines()" class="button">Run Code</a></p></div>
<h2><a href="#">Draw example: circles and ellipses</a></h2>
<div><p><pre>var doc = new jsPDF();
doc.ellipse(40, 20, 10, 5);
doc.setFillColor(0,0,255);
doc.ellipse(80, 20, 10, 5, 'F');
doc.setLineWidth(1);
doc.setDrawColor(0);
doc.setFillColor(255,0,0);
doc.circle(120, 20, 5, 'FD');
doc.save('Test.pdf');</pre>
<a href="javascript:demoCircles()" class="button">Run Code</a></p></div>
<h2><a href="#">Draw example: triangles</a></h2>
<div><p><pre>var doc = new jsPDF();
doc.triangle(60, 100, 60, 120, 80, 110, 'FD');
doc.setLineWidth(1);
doc.setDrawColor(255,0,0);
doc.setFillColor(0,0,255);
doc.triangle(100, 100, 110, 100, 120, 130, 'FD');
doc.save('My file.pdf');</pre>
<a href="javascript:demoTriangles()" class="button">Run Code</a></p></div>
<h2><a href="#">Draw example: Images</a></h2>
<div><p><pre>// Because of security restrictions, getImageFromUrl will
// not load images from other domains. Chrome has added
// security restrictions that prevent it from loading images
// when running local files. Run with: chromium --allow-file-access-from-files --allow-file-access
// to temporarily get around this issue.
var getImageFromUrl = function(url, callback) {
var img = new Image();
img.onError = function() {
alert('Cannot load image: "'+url+'"');
};
img.onload = function() {
callback(img);
};
img.src = url;
}
// Since images are loaded asyncronously, we must wait to create
// the pdf until we actually have the image.
// If we already had the jpeg image binary data loaded into
// a string, we create the pdf without delay.
var createPDF = function(imgData) {
var doc = new jsPDF();
// This is a modified addImage example which requires jsPDF 1.0+
// You can check the former one at <em>examples/js/basic.js</em>
doc.addImage(imgData, 'JPEG', 10, 10, 50, 50, 'monkey'); // Cache the image using the alias 'monkey'
doc.addImage('monkey', 70, 10, 100, 120); // use the cached 'monkey' image, JPEG is optional regardless
// As you can guess, using the cached image reduces the generated PDF size by 50%!
// Rotate Image - new feature as of 2014-09-20
doc.addImage({
imageData : imgData,
angle : -20,
x : 10,
y : 78,
w : 45,
h : 58
});
// Output as Data URI
doc.output('datauri');
}
getImageFromUrl('thinking-monkey.jpg', createPDF);
</pre>
<!--a href="javascript:demoImages()" class="button">Run Code</a-->
<!-- I'm lazy, so using eval() directly, sorry ;) [diegocr] -->
<a href="javascript:void(0);" onclick="eval($(this).prev().text())" class="button">Run Code</a>
</p></div>
</div>
</div>
</div>
</div>
</body>
</html>

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,688 @@
<!DOCTYPE html>
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
<title>Bar Graph With Text And Lines</title>
<script type="text/javascript" src="../../libs/canvg_context2d/libs/rgbcolor.js"></script>
<script type="text/javascript" src="../../libs/canvg_context2d/libs/StackBlur.js"></script>
<script type="text/javascript" src="../../libs/canvg_context2d/canvg.js"></script>
<script src="../../dist/jspdf.debug.js"></script>
</head>
<body>
<h1>Bar Graph With Text And Lines</h1>
<button onclick="doRefresh();">Refresh</button>
<iframe id='result' style='width: 100%; height: 400px'></iframe>
<svg id="svg" class="v-m-root" style="left: 600px; top: 600px; display: block; cursor: default" width="1000"
height="500">
<svg class="v-m-root" width="711" height="442"
style="left: 0px; top: 0px; direction: ltr; cursor: default; position: absolute; box-sizing: border-box;">
<rect class="v-eventLayer" x="0" y="0" fill-opacity="0" width="711" height="442"></rect>
<g class="v-backgroundutil">
<rect class="v-background-body viz-plot-background v-morphable-background"
id="background-rect-87f41b63-ea3a-4ba7-b40b-8e8ea24e6ec7" x="0" y="0" width="711" height="442"
style="fill:transparent"></rect>
</g>
<defs></defs>
<g class="v-m-title" transform="translate(0, 0)"></g>
<g class="v-m-legends" transform="translate(589, 24)">
<g class="v-m-legend" transform="translate(0,0)">
<rect class="v-bound" width="98" height="36" fill="transparent"></rect>
<g class="v-content" transform="translate(0,0)">
<g class="v-groups v-label viz-legend-valueLabel" transform="translate(0,0)"
font-family="'Open Sans', Arial, Helvetica, sans-serif" font-size="12px" font-weight="normal"
fill="#000000" font-style="normal">
<g class="v-legend-content">
<rect class="v-indicatedRect v-legend-item v-hovershadow" visibility="hidden" width="108"
x="-5" y="-3" height="18"></rect>
<g class="v-row ID_0" transform="translate(0,0)">
<path class="" fill="#748cb2" stroke-width="0" stroke="transparent" opacity="1"
stroke-opacity="undefined"
d="M0,-6L-3,-6Q-6,-6 -6,-3L-6,3Q-6,6 -3,6L3,6Q6,6 6,3L6,-3Q6,-6 3,-6Z"
transform="translate(6,6)"></path>
<text x="18" y="12">SALES</text>
<rect class="v-eventRect v-legend-item ID_1" height="18" fill="rgba(255, 255, 255, 0)"
transform="translate(0,-3)" width="88"></rect>
</g>
<g class="v-row ID_1" transform="translate(0,18)">
<path class="" fill="#9cc677" stroke-width="0" stroke="transparent" opacity="1"
stroke-opacity="undefined" d="M-6,0 A6,6 0 1,0 6,0 A6,6 0 1,0 -6,0z"
transform="translate(6,6)"></path>
<text x="18" y="12">NET_SALES</text>
<rect class="v-eventRect v-legend-item ID_1" height="18" fill="rgba(255, 255, 255, 0)"
transform="translate(0,-3)" width="88"></rect>
</g>
</g>
</g>
</g>
</g>
</g>
<g class="v-m-main" transform="translate(24, 24)">
<rect class="v-bound" width="557" height="394" visibility="hidden"></rect>
<g class="v-m-background" transform="translate(38.5,7.199999999999999)">
<rect class="v-background-body viz-plot-background v-morphable-background"
id="background-rect-8a3ae954-b76a-4093-b85e-9ca4dad99996" x="0" y="0" width="518.5" height="316.8"
style="fill:transparent"></rect>
<line class="v-background-border viz-plot-background-border" x1="0" y1="0" x2="0" y2="316.8"
shape-rendering="crispEdges" stroke="#d8d8d8" stroke-width="0"></line>
<line class="v-background-border viz-plot-background-border" x1="518.5" y1="0" x2="518.5" y2="316.8"
shape-rendering="crispEdges" stroke="#d8d8d8" stroke-width="0"></line>
<line class="v-background-border viz-plot-background-border" x1="0" y1="0" x2="518.5" y2="0"
shape-rendering="crispEdges" stroke="#d8d8d8" stroke-width="0"></line>
<line class="v-background-border viz-plot-background-border" x1="0" y1="316.8" x2="518.5" y2="316.8"
shape-rendering="crispEdges" stroke="#d8d8d8" stroke-width="0"></line>
</g>
<g class="v-m-xAxis" transform="translate(38.5,324)">
<rect class="v-bound" width="519.5" height="70" fill="transparent"></rect>
<g class="viz-axis v-axis">
<g class="viz-axis-body v-body">
<path class="v-categoryaxisline" d="M0 5L0 0L518.5 0L518.5 5" fill="none" stroke="#96a8c3"
stroke-width="1" shape-rendering="crispEdges"></path>
<line class="v-categoryaxisline" x1="27.289473684210527" x2="27.289473684210527" y1="0" y2="5"
stroke="#96a8c3" stroke-width="1" shape-rendering="crispEdges"></line>
<line class="v-categoryaxisline" x1="54.578947368421055" x2="54.578947368421055" y1="0" y2="5"
stroke="#96a8c3" stroke-width="1" shape-rendering="crispEdges"></line>
<line class="v-categoryaxisline" x1="81.86842105263159" x2="81.86842105263159" y1="0" y2="5"
stroke="#96a8c3" stroke-width="1" shape-rendering="crispEdges"></line>
<line class="v-categoryaxisline" x1="109.15789473684211" x2="109.15789473684211" y1="0" y2="5"
stroke="#96a8c3" stroke-width="1" shape-rendering="crispEdges"></line>
<line class="v-categoryaxisline" x1="136.44736842105263" x2="136.44736842105263" y1="0" y2="5"
stroke="#96a8c3" stroke-width="1" shape-rendering="crispEdges"></line>
<line class="v-categoryaxisline" x1="163.73684210526315" x2="163.73684210526315" y1="0" y2="5"
stroke="#96a8c3" stroke-width="1" shape-rendering="crispEdges"></line>
<line class="v-categoryaxisline" x1="191.02631578947367" x2="191.02631578947367" y1="0" y2="5"
stroke="#96a8c3" stroke-width="1" shape-rendering="crispEdges"></line>
<line class="v-categoryaxisline" x1="218.3157894736842" x2="218.3157894736842" y1="0" y2="5"
stroke="#96a8c3" stroke-width="1" shape-rendering="crispEdges"></line>
<line class="v-categoryaxisline" x1="245.6052631578947" x2="245.6052631578947" y1="0" y2="5"
stroke="#96a8c3" stroke-width="1" shape-rendering="crispEdges"></line>
<line class="v-categoryaxisline" x1="272.89473684210526" x2="272.89473684210526" y1="0" y2="5"
stroke="#96a8c3" stroke-width="1" shape-rendering="crispEdges"></line>
<line class="v-categoryaxisline" x1="300.1842105263158" x2="300.1842105263158" y1="0" y2="5"
stroke="#96a8c3" stroke-width="1" shape-rendering="crispEdges"></line>
<line class="v-categoryaxisline" x1="327.4736842105263" x2="327.4736842105263" y1="0" y2="5"
stroke="#96a8c3" stroke-width="1" shape-rendering="crispEdges"></line>
<line class="v-categoryaxisline" x1="354.7631578947368" x2="354.7631578947368" y1="0" y2="5"
stroke="#96a8c3" stroke-width="1" shape-rendering="crispEdges"></line>
<line class="v-categoryaxisline" x1="382.05263157894734" x2="382.05263157894734" y1="0" y2="5"
stroke="#96a8c3" stroke-width="1" shape-rendering="crispEdges"></line>
<line class="v-categoryaxisline" x1="409.34210526315786" x2="409.34210526315786" y1="0" y2="5"
stroke="#96a8c3" stroke-width="1" shape-rendering="crispEdges"></line>
<line class="v-categoryaxisline" x1="436.6315789473684" x2="436.6315789473684" y1="0" y2="5"
stroke="#96a8c3" stroke-width="1" shape-rendering="crispEdges"></line>
<line class="v-categoryaxisline" x1="463.9210526315789" x2="463.9210526315789" y1="0" y2="5"
stroke="#96a8c3" stroke-width="1" shape-rendering="crispEdges"></line>
<line class="v-categoryaxisline" x1="491.2105263157894" x2="491.2105263157894" y1="0" y2="5"
stroke="#96a8c3" stroke-width="1" shape-rendering="crispEdges"></line>
<rect x="0" y="1" width="27.289473684210527" height="69" opacity="0"
class="v-labelarea v-axis-item" fill="#cccccc"></rect>
<g fill="#333333" class="v-label viz-axis-label v-morphable-label" font-size="12px"
font-weight="normal" font-family="'Open Sans', Arial, Helvetica, sans-serif">
<text pointer-events="none" x="13.644736842105264" y="11" dominant-baseline="middle"
text-anchor="end" transform="rotate( -90 13.644736842105264 11 )">01/05/08
</text>
</g>
<rect x="27.289473684210527" y="1" width="27.289473684210527" height="69" opacity="0"
class="v-labelarea v-axis-item"></rect>
<g fill="#333333" class="v-label viz-axis-label v-morphable-label" font-size="12px"
font-weight="normal" font-family="'Open Sans', Arial, Helvetica, sans-serif">
<text pointer-events="none" x="40.934210526315795" y="11" dominant-baseline="middle"
text-anchor="end" transform="rotate( -90 40.934210526315795 11 )">01/08/08
</text>
</g>
<rect x="54.578947368421055" y="1" width="27.289473684210535" height="69" opacity="0"
class="v-labelarea v-axis-item"></rect>
<g fill="#333333" class="v-label viz-axis-label v-morphable-label" font-size="12px"
font-weight="normal" font-family="'Open Sans', Arial, Helvetica, sans-serif">
<text pointer-events="none" x="68.22368421052633" y="11" dominant-baseline="middle"
text-anchor="end" transform="rotate( -90 68.22368421052633 11 )">02/05/08
</text>
</g>
<rect x="81.86842105263159" y="1" width="27.28947368421052" height="69" opacity="0"
class="v-labelarea v-axis-item"></rect>
<g fill="#333333" class="v-label viz-axis-label v-morphable-label" font-size="12px"
font-weight="normal" font-family="'Open Sans', Arial, Helvetica, sans-serif">
<text pointer-events="none" x="95.51315789473685" y="11" dominant-baseline="middle"
text-anchor="end" transform="rotate( -90 95.51315789473685 11 )">02/06/08
</text>
</g>
<rect x="109.15789473684211" y="1" width="27.28947368421052" height="69" opacity="0"
class="v-labelarea v-axis-item"></rect>
<g fill="#333333" class="v-label viz-axis-label v-morphable-label" font-size="12px"
font-weight="normal" font-family="'Open Sans', Arial, Helvetica, sans-serif">
<text pointer-events="none" x="122.80263157894737" y="11" dominant-baseline="middle"
text-anchor="end" transform="rotate( -90 122.80263157894737 11 )">02/12/08
</text>
</g>
<rect x="136.44736842105263" y="1" width="27.28947368421052" height="69" opacity="0"
class="v-labelarea v-axis-item"></rect>
<g fill="#333333" class="v-label viz-axis-label v-morphable-label" font-size="12px"
font-weight="normal" font-family="'Open Sans', Arial, Helvetica, sans-serif">
<text pointer-events="none" x="150.0921052631579" y="11" dominant-baseline="middle"
text-anchor="end" transform="rotate( -90 150.0921052631579 11 )">03/12/08
</text>
</g>
<rect x="163.73684210526315" y="1" width="27.28947368421052" height="69" opacity="0"
class="v-labelarea v-axis-item"></rect>
<g fill="#333333" class="v-label viz-axis-label v-morphable-label" font-size="12px"
font-weight="normal" font-family="'Open Sans', Arial, Helvetica, sans-serif">
<text pointer-events="none" x="177.3815789473684" y="11" dominant-baseline="middle"
text-anchor="end" transform="rotate( -90 177.3815789473684 11 )">04/02/08
</text>
</g>
<rect x="191.02631578947367" y="1" width="27.28947368421052" height="69" opacity="0"
class="v-labelarea v-axis-item"></rect>
<g fill="#333333" class="v-label viz-axis-label v-morphable-label" font-size="12px"
font-weight="normal" font-family="'Open Sans', Arial, Helvetica, sans-serif">
<text pointer-events="none" x="204.67105263157893" y="11" dominant-baseline="middle"
text-anchor="end" transform="rotate( -90 204.67105263157893 11 )">04/05/08
</text>
</g>
<rect x="218.3157894736842" y="1" width="27.28947368421052" height="69" opacity="0"
class="v-labelarea v-axis-item"></rect>
<g fill="#333333" class="v-label viz-axis-label v-morphable-label" font-size="12px"
font-weight="normal" font-family="'Open Sans', Arial, Helvetica, sans-serif">
<text pointer-events="none" x="231.96052631578945" y="11" dominant-baseline="middle"
text-anchor="end" transform="rotate( -90 231.96052631578945 11 )">04/08/08
</text>
</g>
<rect x="245.6052631578947" y="1" width="27.28947368421055" height="69" opacity="0"
class="v-labelarea v-axis-item"></rect>
<g fill="#333333" class="v-label viz-axis-label v-morphable-label" font-size="12px"
font-weight="normal" font-family="'Open Sans', Arial, Helvetica, sans-serif">
<text pointer-events="none" x="259.25" y="11" dominant-baseline="middle" text-anchor="end"
transform="rotate( -90 259.25 11 )">04/10/08
</text>
</g>
<rect x="272.89473684210526" y="1" width="27.28947368421052" height="69" opacity="0"
class="v-labelarea v-axis-item"></rect>
<g fill="#333333" class="v-label viz-axis-label v-morphable-label" font-size="12px"
font-weight="normal" font-family="'Open Sans', Arial, Helvetica, sans-serif">
<text pointer-events="none" x="286.5394736842105" y="11" dominant-baseline="middle"
text-anchor="end" transform="rotate( -90 286.5394736842105 11 )">05/02/08
</text>
</g>
<rect x="300.1842105263158" y="1" width="27.28947368421052" height="69" opacity="0"
class="v-labelarea v-axis-item"></rect>
<g fill="#333333" class="v-label viz-axis-label v-morphable-label" font-size="12px"
font-weight="normal" font-family="'Open Sans', Arial, Helvetica, sans-serif">
<text pointer-events="none" x="313.82894736842104" y="11" dominant-baseline="middle"
text-anchor="end" transform="rotate( -90 313.82894736842104 11 )">06/06/08
</text>
</g>
<rect x="327.4736842105263" y="1" width="27.28947368421052" height="69" opacity="0"
class="v-labelarea v-axis-item"></rect>
<g fill="#333333" class="v-label viz-axis-label v-morphable-label" font-size="12px"
font-weight="normal" font-family="'Open Sans', Arial, Helvetica, sans-serif">
<text pointer-events="none" x="341.11842105263156" y="11" dominant-baseline="middle"
text-anchor="end" transform="rotate( -90 341.11842105263156 11 )">07/09/08
</text>
</g>
<rect x="354.7631578947368" y="1" width="27.28947368421052" height="69" opacity="0"
class="v-labelarea v-axis-item"></rect>
<g fill="#333333" class="v-label viz-axis-label v-morphable-label" font-size="12px"
font-weight="normal" font-family="'Open Sans', Arial, Helvetica, sans-serif">
<text pointer-events="none" x="368.4078947368421" y="11" dominant-baseline="middle"
text-anchor="end" transform="rotate( -90 368.4078947368421 11 )">08/02/08
</text>
</g>
<rect x="382.05263157894734" y="1" width="27.28947368421052" height="69" opacity="0"
class="v-labelarea v-axis-item"></rect>
<g fill="#333333" class="v-label viz-axis-label v-morphable-label" font-size="12px"
font-weight="normal" font-family="'Open Sans', Arial, Helvetica, sans-serif">
<text pointer-events="none" x="395.6973684210526" y="11" dominant-baseline="middle"
text-anchor="end" transform="rotate( -90 395.6973684210526 11 )">08/11/08
</text>
</g>
<rect x="409.34210526315786" y="1" width="27.28947368421052" height="69" opacity="0"
class="v-labelarea v-axis-item"></rect>
<g fill="#333333" class="v-label viz-axis-label v-morphable-label" font-size="12px"
font-weight="normal" font-family="'Open Sans', Arial, Helvetica, sans-serif">
<text pointer-events="none" x="422.9868421052631" y="11" dominant-baseline="middle"
text-anchor="end" transform="rotate( -90 422.9868421052631 11 )">09/07/08
</text>
</g>
<rect x="436.6315789473684" y="1" width="27.28947368421052" height="69" opacity="0"
class="v-labelarea v-axis-item"></rect>
<g fill="#333333" class="v-label viz-axis-label v-morphable-label" font-size="12px"
font-weight="normal" font-family="'Open Sans', Arial, Helvetica, sans-serif">
<text pointer-events="none" x="450.27631578947364" y="11" dominant-baseline="middle"
text-anchor="end" transform="rotate( -90 450.27631578947364 11 )">10/01/08
</text>
</g>
<rect x="463.9210526315789" y="1" width="27.28947368421052" height="69" opacity="0"
class="v-labelarea v-axis-item"></rect>
<g fill="#333333" class="v-label viz-axis-label v-morphable-label" font-size="12px"
font-weight="normal" font-family="'Open Sans', Arial, Helvetica, sans-serif">
<text pointer-events="none" x="477.56578947368416" y="11" dominant-baseline="middle"
text-anchor="end" transform="rotate( -90 477.56578947368416 11 )">10/05/08
</text>
</g>
<rect x="491.2105263157894" y="1" width="27.289473684210577" height="69" opacity="0"
class="v-labelarea v-axis-item"></rect>
<g fill="#333333" class="v-label viz-axis-label v-morphable-label" font-size="12px"
font-weight="normal" font-family="'Open Sans', Arial, Helvetica, sans-serif">
<text pointer-events="none" x="504.8552631578947" y="11" dominant-baseline="middle"
text-anchor="end" transform="rotate( -90 504.8552631578947 11 )">12/01/08
</text>
</g>
</g>
</g>
</g>
<g class="v-m-yAxis" transform="translate(0,7.199999999999999)">
<rect class="v-bound" width="38.5" height="317.8" fill="transparent"></rect>
<g class="viz-axis v-axis">
<g class="viz-axis-body v-body">
<line class="v-valueaxisline" x1="33" x2="38" y1="0" y2="0" stroke="#96a8c3" stroke-width="1"
shape-rendering="crispEdges"></line>
<g fill="#333333" class="v-label viz-axis-label v-morphable-label" font-size="12px"
font-weight="normal" font-family="'Open Sans', Arial, Helvetica, sans-serif">
<text x="27" y="0" dominant-baseline="middle" text-anchor="end">120</text>
</g>
<line class="v-valueaxisline" x1="33" x2="38" y1="52.79999999999999" y2="52.79999999999999"
stroke="#96a8c3" stroke-width="1" shape-rendering="crispEdges"></line>
<line class="v-gridline" y1="52.79999999999999" y2="52.79999999999999" x1="38" x2="556.5"
stroke="#7f8fa6" stroke-width="1" shape-rendering="crispEdges"></line>
<g fill="#333333" class="v-label viz-axis-label v-morphable-label" font-size="12px"
font-weight="normal" font-family="'Open Sans', Arial, Helvetica, sans-serif">
<text x="27" y="52.79999999999999" dominant-baseline="middle" text-anchor="end">100</text>
</g>
<line class="v-valueaxisline" x1="33" x2="38" y1="105.60000000000001" y2="105.60000000000001"
stroke="#96a8c3" stroke-width="1" shape-rendering="crispEdges"></line>
<line class="v-gridline" y1="105.60000000000001" y2="105.60000000000001" x1="38" x2="556.5"
stroke="#7f8fa6" stroke-width="1" shape-rendering="crispEdges"></line>
<g fill="#333333" class="v-label viz-axis-label v-morphable-label" font-size="12px"
font-weight="normal" font-family="'Open Sans', Arial, Helvetica, sans-serif">
<text x="27" y="105.60000000000001" dominant-baseline="middle" text-anchor="end">80</text>
</g>
<line class="v-valueaxisline" x1="33" x2="38" y1="158.4" y2="158.4" stroke="#96a8c3"
stroke-width="1" shape-rendering="crispEdges"></line>
<line class="v-gridline" y1="158.4" y2="158.4" x1="38" x2="556.5" stroke="#7f8fa6"
stroke-width="1" shape-rendering="crispEdges"></line>
<g fill="#333333" class="v-label viz-axis-label v-morphable-label" font-size="12px"
font-weight="normal" font-family="'Open Sans', Arial, Helvetica, sans-serif">
<text x="27" y="158.4" dominant-baseline="middle" text-anchor="end">60</text>
</g>
<line class="v-valueaxisline" x1="33" x2="38" y1="211.20000000000002" y2="211.20000000000002"
stroke="#96a8c3" stroke-width="1" shape-rendering="crispEdges"></line>
<line class="v-gridline" y1="211.20000000000002" y2="211.20000000000002" x1="38" x2="556.5"
stroke="#7f8fa6" stroke-width="1" shape-rendering="crispEdges"></line>
<g fill="#333333" class="v-label viz-axis-label v-morphable-label" font-size="12px"
font-weight="normal" font-family="'Open Sans', Arial, Helvetica, sans-serif">
<text x="27" y="211.20000000000002" dominant-baseline="middle" text-anchor="end">40</text>
</g>
<line class="v-valueaxisline" x1="33" x2="38" y1="264" y2="264" stroke="#96a8c3"
stroke-width="1" shape-rendering="crispEdges"></line>
<line class="v-gridline" y1="264" y2="264" x1="38" x2="556.5" stroke="#7f8fa6" stroke-width="1"
shape-rendering="crispEdges"></line>
<g fill="#333333" class="v-label viz-axis-label v-morphable-label" font-size="12px"
font-weight="normal" font-family="'Open Sans', Arial, Helvetica, sans-serif">
<text x="27" y="264" dominant-baseline="middle" text-anchor="end">20</text>
</g>
<line class="v-valueaxisline" x1="33" x2="38" y1="316.8" y2="316.8" stroke="#96a8c3"
stroke-width="1" shape-rendering="crispEdges"></line>
<g fill="#333333" class="v-label viz-axis-label v-morphable-label" font-size="12px"
font-weight="normal" font-family="'Open Sans', Arial, Helvetica, sans-serif">
<text x="27" y="316.8" dominant-baseline="middle" text-anchor="end">0</text>
</g>
<path class="v-valueaxisline" d="M38 316.8L38 316.8L38 0L38 0" fill="none" stroke="#96a8c3"
stroke-width="1" shape-rendering="crispEdges"></path>
</g>
</g>
</g>
<g class="v-m-plot" transform="translate(38.5,7.199999999999999)"
clip-path="url(#clip1_26e943ec-3ac9-4d5e-9f24-6a6485dacdd7)">
<clipPath class="v-clippath" id="clip1_26e943ec-3ac9-4d5e-9f24-6a6485dacdd7">
<rect width="518.5" height="316.8"></rect>
</clipPath>
<rect class="v-bound" width="518.5" height="316.8" fill="transparent"></rect>
<g class="v-modules">
<g class="v-module">
<rect class="v-bound" width="518.5" height="316.8" visibility="hidden"></rect>
<defs>
<clipPath id="clipPlot_8813">
<rect width="518.5" height="316.8"></rect>
</clipPath>
</defs>
<defs></defs>
<g class="v-datashapesgroup" fill="none" clip-path="url(#clipPlot_8813)">
<g class="v-column">
<g class="v-datashape" transform="translate(6.822368421052632,134.64000000000001)">
<rect class="v-datapoint v-morphable-datapoint" fill="#748cb2"
shape-rendering="crispEdges" fill-opacity="1" stroke="none"
width="13.644736842105264" height="182.16" y="0" x="0"></rect>
</g>
</g>
<g class="v-column">
<g class="v-datashape" transform="translate(34.11184210526316,200.64)">
<rect class="v-datapoint v-morphable-datapoint" fill="#748cb2"
shape-rendering="crispEdges" fill-opacity="1" stroke="none"
width="13.644736842105264" height="116.16000000000003" y="0" x="0"></rect>
</g>
</g>
<g class="v-column">
<g class="v-datashape" transform="translate(61.401315789473685,213.84000000000003)">
<rect class="v-datapoint v-morphable-datapoint" fill="#748cb2"
shape-rendering="crispEdges" fill-opacity="1" stroke="none"
width="13.644736842105264" height="102.95999999999998" y="0" x="0"></rect>
</g>
</g>
<g class="v-column">
<g class="v-datashape" transform="translate(88.69078947368422,298.32)">
<rect class="v-datapoint v-morphable-datapoint" fill="#748cb2"
shape-rendering="crispEdges" fill-opacity="1" stroke="none"
width="13.644736842105264" height="18.480000000000018" y="0" x="0"></rect>
</g>
</g>
<g class="v-column">
<g class="v-datashape" transform="translate(115.98026315789474,290.4)">
<rect class="v-datapoint v-morphable-datapoint" fill="#748cb2"
shape-rendering="crispEdges" fill-opacity="1" stroke="none"
width="13.644736842105264" height="26.400000000000034" y="0" x="0"></rect>
</g>
</g>
<g class="v-column">
<g class="v-datashape" transform="translate(143.26973684210526,208.56)">
<rect class="v-datapoint v-morphable-datapoint" fill="#748cb2"
shape-rendering="crispEdges" fill-opacity="1" stroke="none"
width="13.644736842105264" height="108.24000000000001" y="0" x="0"></rect>
</g>
</g>
<g class="v-column">
<g class="v-datashape" transform="translate(170.5592105263158,134.64000000000001)">
<rect class="v-datapoint v-morphable-datapoint" fill="#748cb2"
shape-rendering="crispEdges" fill-opacity="1" stroke="none"
width="13.644736842105264" height="182.16" y="0" x="0"></rect>
</g>
</g>
<g class="v-column">
<g class="v-datashape" transform="translate(197.84868421052633,55.44000000000002)">
<rect class="v-datapoint v-morphable-datapoint" fill="#748cb2"
shape-rendering="crispEdges" fill-opacity="1" stroke="none"
width="13.644736842105264" height="261.36" y="0" x="0"></rect>
</g>
</g>
<g class="v-column">
<g class="v-datashape" transform="translate(225.13815789473685,213.84000000000003)">
<rect class="v-datapoint v-morphable-datapoint" fill="#748cb2"
shape-rendering="crispEdges" fill-opacity="1" stroke="none"
width="13.644736842105264" height="102.95999999999998" y="0" x="0"></rect>
</g>
</g>
<g class="v-column">
<g class="v-datashape" transform="translate(252.42763157894737,110.88)">
<rect class="v-datapoint v-morphable-datapoint" fill="#748cb2"
shape-rendering="crispEdges" fill-opacity="1" stroke="none"
width="13.644736842105264" height="205.92000000000002" y="0" x="0"></rect>
</g>
</g>
<g class="v-column">
<g class="v-datashape" transform="translate(279.7171052631579,190.08)">
<rect class="v-datapoint v-morphable-datapoint" fill="#748cb2"
shape-rendering="crispEdges" fill-opacity="1" stroke="none"
width="13.644736842105264" height="126.72" y="0" x="0"></rect>
</g>
</g>
<g class="v-column">
<g class="v-datashape" transform="translate(307.00657894736844,110.88)">
<rect class="v-datapoint v-morphable-datapoint" fill="#748cb2"
shape-rendering="crispEdges" fill-opacity="1" stroke="none"
width="13.644736842105264" height="205.92000000000002" y="0" x="0"></rect>
</g>
</g>
<g class="v-column">
<g class="v-datashape" transform="translate(334.296052631579,311.52)">
<rect class="v-datapoint v-morphable-datapoint" fill="#748cb2"
shape-rendering="crispEdges" fill-opacity="1" stroke="none"
width="13.644736842105264" height="5.28000000000003" y="0" x="0"></rect>
</g>
</g>
<g class="v-column">
<g class="v-datashape" transform="translate(361.58552631578954,219.12)">
<rect class="v-datapoint v-morphable-datapoint" fill="#748cb2"
shape-rendering="crispEdges" fill-opacity="1" stroke="none"
width="13.644736842105264" height="97.68" y="0" x="0"></rect>
</g>
</g>
<g class="v-column">
<g class="v-datashape" transform="translate(388.87500000000006,73.91999999999999)">
<rect class="v-datapoint v-morphable-datapoint" fill="#748cb2"
shape-rendering="crispEdges" fill-opacity="1" stroke="none"
width="13.644736842105264" height="242.88000000000002" y="0" x="0"></rect>
</g>
</g>
<g class="v-column">
<g class="v-datashape" transform="translate(416.1644736842106,87.12)">
<rect class="v-datapoint v-morphable-datapoint" fill="#748cb2"
shape-rendering="crispEdges" fill-opacity="1" stroke="none"
width="13.644736842105264" height="229.68" y="0" x="0"></rect>
</g>
</g>
<g class="v-column">
<g class="v-datashape" transform="translate(443.4539473684211,298.32)">
<rect class="v-datapoint v-morphable-datapoint" fill="#748cb2"
shape-rendering="crispEdges" fill-opacity="1" stroke="none"
width="13.644736842105264" height="18.480000000000018" y="0" x="0"></rect>
</g>
</g>
<g class="v-column">
<g class="v-datashape" transform="translate(470.7434210526316,290.4)">
<rect class="v-datapoint v-morphable-datapoint" fill="#748cb2"
shape-rendering="crispEdges" fill-opacity="1" stroke="none"
width="13.644736842105264" height="26.400000000000034" y="0" x="0"></rect>
</g>
</g>
<g class="v-column">
<g class="v-datashape" transform="translate(498.03289473684214,232.32000000000002)">
<rect class="v-datapoint v-morphable-datapoint" fill="#748cb2"
shape-rendering="crispEdges" fill-opacity="1" stroke="none"
width="13.644736842105264" height="84.47999999999999" y="0" x="0"></rect>
</g>
</g>
</g>
</g>
<g class="v-module">
<rect class="v-bound" width="518.5" height="316.8" visibility="hidden"></rect>
<g>
<g class="v-datalines" opacity="1" fill="none">
<g class="v-axis1">
<path class="v-lines v-morphable-line" stroke-width="2" stroke-linejoin="round"
d="M13.644736842105264,184.79999999999998L40.934210526315795,198L68.22368421052632,237.60000000000002L95.51315789473685,163.67999999999998L122.80263157894737,102.96L150.0921052631579,224.39999999999998L177.38157894736844,134.64000000000001L204.67105263157896,76.56000000000002L231.96052631578948,237.60000000000002L259.25,89.76L286.5394736842105,192.72000000000003L313.82894736842104,171.60000000000002L341.1184210526316,79.2L368.40789473684214,285.12L395.69736842105266,213.84000000000003L422.9868421052632,245.52L450.2763157894737,132L477.5657894736842,279.84L504.85526315789474,248.16"
stroke="#9cc677"></path>
</g>
</g>
<g class="v-lightLines" fill="none"></g>
<g class="v-markers v-datashapesgroup" fill="none">
<g class="v-axis1">
<g class="v-marker">
<g class="v-datashape"
transform="translate(13.644736842105264,184.79999999999998)">
<path class="v-datapoint v-morphable-datapoint v-datapoint-default"
fill="#9cc677" stroke-width="2" stroke="transparent"
stroke-opacity="null" d="M-4,0 A4,4 0 1,0 4,0 A4,4 0 1,0 -4,0z"
fill-opacity="1"></path>
</g>
<g class="v-datashape" transform="translate(40.934210526315795,198)">
<path class="v-datapoint v-morphable-datapoint v-datapoint-default"
fill="#9cc677" stroke-width="2" stroke="transparent"
stroke-opacity="null" d="M-4,0 A4,4 0 1,0 4,0 A4,4 0 1,0 -4,0z"
fill-opacity="1"></path>
</g>
<g class="v-datashape"
transform="translate(68.22368421052632,237.60000000000002)">
<path class="v-datapoint v-morphable-datapoint v-datapoint-default"
fill="#9cc677" stroke-width="2" stroke="transparent"
stroke-opacity="null" d="M-4,0 A4,4 0 1,0 4,0 A4,4 0 1,0 -4,0z"
fill-opacity="1"></path>
</g>
<g class="v-datashape"
transform="translate(95.51315789473685,163.67999999999998)">
<path class="v-datapoint v-morphable-datapoint v-datapoint-default"
fill="#9cc677" stroke-width="2" stroke="transparent"
stroke-opacity="null" d="M-4,0 A4,4 0 1,0 4,0 A4,4 0 1,0 -4,0z"
fill-opacity="1"></path>
</g>
<g class="v-datashape" transform="translate(122.80263157894737,102.96)">
<path class="v-datapoint v-morphable-datapoint v-datapoint-default"
fill="#9cc677" stroke-width="2" stroke="transparent"
stroke-opacity="null" d="M-4,0 A4,4 0 1,0 4,0 A4,4 0 1,0 -4,0z"
fill-opacity="1"></path>
</g>
<g class="v-datashape"
transform="translate(150.0921052631579,224.39999999999998)">
<path class="v-datapoint v-morphable-datapoint v-datapoint-default"
fill="#9cc677" stroke-width="2" stroke="transparent"
stroke-opacity="null" d="M-4,0 A4,4 0 1,0 4,0 A4,4 0 1,0 -4,0z"
fill-opacity="1"></path>
</g>
<g class="v-datashape"
transform="translate(177.38157894736844,134.64000000000001)">
<path class="v-datapoint v-morphable-datapoint v-datapoint-default"
fill="#9cc677" stroke-width="2" stroke="transparent"
stroke-opacity="null" d="M-4,0 A4,4 0 1,0 4,0 A4,4 0 1,0 -4,0z"
fill-opacity="1"></path>
</g>
<g class="v-datashape"
transform="translate(204.67105263157896,76.56000000000002)">
<path class="v-datapoint v-morphable-datapoint v-datapoint-default"
fill="#9cc677" stroke-width="2" stroke="transparent"
stroke-opacity="null" d="M-4,0 A4,4 0 1,0 4,0 A4,4 0 1,0 -4,0z"
fill-opacity="1"></path>
</g>
<g class="v-datashape"
transform="translate(231.96052631578948,237.60000000000002)">
<path class="v-datapoint v-morphable-datapoint v-datapoint-default"
fill="#9cc677" stroke-width="2" stroke="transparent"
stroke-opacity="null" d="M-4,0 A4,4 0 1,0 4,0 A4,4 0 1,0 -4,0z"
fill-opacity="1"></path>
</g>
<g class="v-datashape" transform="translate(259.25,89.76)">
<path class="v-datapoint v-morphable-datapoint v-datapoint-default"
fill="#9cc677" stroke-width="2" stroke="transparent"
stroke-opacity="null" d="M-4,0 A4,4 0 1,0 4,0 A4,4 0 1,0 -4,0z"
fill-opacity="1"></path>
</g>
<g class="v-datashape"
transform="translate(286.5394736842105,192.72000000000003)">
<path class="v-datapoint v-morphable-datapoint v-datapoint-default"
fill="#9cc677" stroke-width="2" stroke="transparent"
stroke-opacity="null" d="M-4,0 A4,4 0 1,0 4,0 A4,4 0 1,0 -4,0z"
fill-opacity="1"></path>
</g>
<g class="v-datashape"
transform="translate(313.82894736842104,171.60000000000002)">
<path class="v-datapoint v-morphable-datapoint v-datapoint-default"
fill="#9cc677" stroke-width="2" stroke="transparent"
stroke-opacity="null" d="M-4,0 A4,4 0 1,0 4,0 A4,4 0 1,0 -4,0z"
fill-opacity="1"></path>
</g>
<g class="v-datashape" transform="translate(341.1184210526316,79.2)">
<path class="v-datapoint v-morphable-datapoint v-datapoint-default"
fill="#9cc677" stroke-width="2" stroke="transparent"
stroke-opacity="null" d="M-4,0 A4,4 0 1,0 4,0 A4,4 0 1,0 -4,0z"
fill-opacity="1"></path>
</g>
<g class="v-datashape" transform="translate(368.40789473684214,285.12)">
<path class="v-datapoint v-morphable-datapoint v-datapoint-default"
fill="#9cc677" stroke-width="2" stroke="transparent"
stroke-opacity="null" d="M-4,0 A4,4 0 1,0 4,0 A4,4 0 1,0 -4,0z"
fill-opacity="1"></path>
</g>
<g class="v-datashape"
transform="translate(395.69736842105266,213.84000000000003)">
<path class="v-datapoint v-morphable-datapoint v-datapoint-default"
fill="#9cc677" stroke-width="2" stroke="transparent"
stroke-opacity="null" d="M-4,0 A4,4 0 1,0 4,0 A4,4 0 1,0 -4,0z"
fill-opacity="1"></path>
</g>
<g class="v-datashape" transform="translate(422.9868421052632,245.52)">
<path class="v-datapoint v-morphable-datapoint v-datapoint-default"
fill="#9cc677" stroke-width="2" stroke="transparent"
stroke-opacity="null" d="M-4,0 A4,4 0 1,0 4,0 A4,4 0 1,0 -4,0z"
fill-opacity="1"></path>
</g>
<g class="v-datashape" transform="translate(450.2763157894737,132)">
<path class="v-datapoint v-morphable-datapoint v-datapoint-default"
fill="#9cc677" stroke-width="2" stroke="transparent"
stroke-opacity="null" d="M-4,0 A4,4 0 1,0 4,0 A4,4 0 1,0 -4,0z"
fill-opacity="1"></path>
</g>
<g class="v-datashape" transform="translate(477.5657894736842,279.84)">
<path class="v-datapoint v-morphable-datapoint v-datapoint-default"
fill="#9cc677" stroke-width="2" stroke="transparent"
stroke-opacity="null" d="M-4,0 A4,4 0 1,0 4,0 A4,4 0 1,0 -4,0z"
fill-opacity="1"></path>
</g>
<g class="v-datashape" transform="translate(504.85526315789474,248.16)">
<path class="v-datapoint v-morphable-datapoint v-datapoint-default"
fill="#9cc677" stroke-width="2" stroke="transparent"
stroke-opacity="null" d="M-4,0 A4,4 0 1,0 4,0 A4,4 0 1,0 -4,0z"
fill-opacity="1"></path>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</svg>
</svg>
<div id="source"></div>
<script type="text/javascript">
// IE does not support outerHTML on SVGElement
if (typeof SVGElement === 'object' && !SVGElement.prototype.outerHTML) {
Object.defineProperty(SVGElement.prototype, 'outerHTML', {
get: function () {
var $node, $temp;
$temp = document.createElement('div');
$node = this.cloneNode(true);
$temp.appendChild($node);
return $temp.innerHTML;
},
enumerable: false,
configurable: true
});
}
window.onload = function () {
doRefresh();
};
var doRefresh = function () {
var makePdf = function () {
var pdf = new jsPDF('p', 'pt', 'c1');
var c = pdf.canvas;
c.width = 1000;
c.height = 500;
var ctx = c.getContext('2d');
ctx.ignoreClearRect = true;
ctx.fillStyle = '#ffffff';
ctx.fillRect(0, 0, 1000, 700);
//load a svg snippet in the canvas with id = 'drawingArea'
canvg(c, document.getElementById('svg').outerHTML, {
ignoreMouse: true,
ignoreAnimation: true,
ignoreDimensions: true
});
return pdf;
};
document.getElementById('result').setAttribute('src', makePdf().output('dataurlstring'));
document.getElementById('source').innerText = makePdf().output();
//makePdf().save();
};
</script>
</body>
</html>

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,47 @@
<!doctype html>
<!--
/**
* jsPDF Context2d PlugIn
* Copyright (c) 2014 Steven Spungin (TwelveTone LLC) steven@twelvetone.tv
*
* Licensed under the MIT License.
* http://opensource.org/licenses/mit-license
*/
-->
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title>Context2D Paths Test</title>
</head>
<body style='background-color: silver; margin: 0;'>
<script src="../../dist/jspdf.min.js"></script>
<script src="../../examples/js/test_harness.js"></script>
<script>
var pdf = new jsPDF('p', 'pt', 'letter');
var context = pdf.context2d;
context.beginPath();
context.arc(150,150,50,0,Math.PI, false);
context.lineTo(300,300);
//context.moveTo(300,150);
//context.rect(5,5,150,150);
//context.arc(150,150,50,0,Math.PI, false);
context.stroke();
context.fillStyle = 'red';
context.fillRect(545,205,50,40);
pdf_test_harness_init(pdf);
</script>
</head>
</body>
</html>

View File

@ -0,0 +1,51 @@
.row-fluid .no-gutter {
margin-left: 0px;
}
footer {
text-align: center;
margin: 30px 0;
}
#editor {
width: 50%;
height: 400px;
float: left;
clear: left;
position: relative;
font-family: "source-code-pro";
font-size: 14px;
border: 1px solid #DDD;
border-radius: 4px;
border-bottom-right-radius: 0px;
}
.preview-pane {
border: 3px solid #ccc;
}
.controls {
float: left;
clear: left;
width: 50%;
padding-top: 10px;
}
#template {
width: 250px;
}
.tweet-buttons {
float: left;
margin-right: 40px;
padding-top: 8px;
}
.source {
font-family: "source-code-pro", Courier;
font-size: 14px;
}
.controls .alert {
float: left;
}

View File

@ -0,0 +1,30 @@
* {
padding: 0; margin: 0;
}
body {
padding: 30px;
font-family: Arial, Helvetica, sans-serif;
}
h1 {
margin-bottom: 1em;
border-bottom: 1px solid #ccc;
}
h2 {
margin-bottom: 1em;
border-bottom: 1px solid #ccc;
}
pre {
border: 1px dotted #ccc;
background: #f7f7f7;
padding: 10px;
margin-bottom: 1em;
}
h1 {
margin-bottom: 0.7em;
}
h2 {
margin-top: 1em;
}
p {
margin-bottom: 1em;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 180 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 178 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 120 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 105 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 111 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 110 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 119 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 101 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

View File

@ -0,0 +1,565 @@
/*
* jQuery UI CSS Framework 1.8.17
*
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Theming/API
*/
/* Layout helpers
----------------------------------*/
.ui-helper-hidden { display: none; }
.ui-helper-hidden-accessible { position: absolute !important; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); }
.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
.ui-helper-clearfix:before, .ui-helper-clearfix:after { content: ""; display: table; }
.ui-helper-clearfix:after { clear: both; }
.ui-helper-clearfix { zoom: 1; }
.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
/* Interaction Cues
----------------------------------*/
.ui-state-disabled { cursor: default !important; }
/* Icons
----------------------------------*/
/* states and images */
.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
/* Misc visuals
----------------------------------*/
/* Overlays */
.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
/*
* jQuery UI CSS Framework 1.8.17
*
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Theming/API
*
* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Verdana,Arial,sans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=cccccc&bgTextureHeader=03_highlight_soft.png&bgImgOpacityHeader=75&borderColorHeader=aaaaaa&fcHeader=222222&iconColorHeader=222222&bgColorContent=ffffff&bgTextureContent=01_flat.png&bgImgOpacityContent=75&borderColorContent=aaaaaa&fcContent=222222&iconColorContent=222222&bgColorDefault=e6e6e6&bgTextureDefault=02_glass.png&bgImgOpacityDefault=75&borderColorDefault=d3d3d3&fcDefault=555555&iconColorDefault=888888&bgColorHover=dadada&bgTextureHover=02_glass.png&bgImgOpacityHover=75&borderColorHover=999999&fcHover=212121&iconColorHover=454545&bgColorActive=ffffff&bgTextureActive=02_glass.png&bgImgOpacityActive=65&borderColorActive=aaaaaa&fcActive=212121&iconColorActive=454545&bgColorHighlight=fbf9ee&bgTextureHighlight=02_glass.png&bgImgOpacityHighlight=55&borderColorHighlight=fcefa1&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=02_glass.png&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=01_flat.png&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=01_flat.png&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px
*/
/* Component containers
----------------------------------*/
.ui-widget { font-family: Verdana,Arial,sans-serif; font-size: 1.1em; }
.ui-widget .ui-widget { font-size: 1em; }
.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Verdana,Arial,sans-serif; font-size: 1em; }
.ui-widget-content { border: 1px solid #aaaaaa; background: #ffffff url(images/ui-bg_flat_75_ffffff_40x100.png) 50% 50% repeat-x; color: #222222; }
.ui-widget-content a { color: #222222; }
.ui-widget-header { border: 1px solid #aaaaaa; background: #cccccc url(images/ui-bg_highlight-soft_75_cccccc_1x100.png) 50% 50% repeat-x; color: #222222; font-weight: bold; }
.ui-widget-header a { color: #222222; }
/* Interaction states
----------------------------------*/
.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #d3d3d3; background: #e6e6e6 url(images/ui-bg_glass_75_e6e6e6_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #555555; }
.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #555555; text-decoration: none; }
.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #999999; background: #dadada url(images/ui-bg_glass_75_dadada_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #212121; }
.ui-state-hover a, .ui-state-hover a:hover { color: #212121; text-decoration: none; }
.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #aaaaaa; background: #ffffff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #212121; }
.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #212121; text-decoration: none; }
.ui-widget :active { outline: none; }
/* Interaction Cues
----------------------------------*/
.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight {border: 1px solid #fcefa1; background: #fbf9ee url(images/ui-bg_glass_55_fbf9ee_1x400.png) 50% 50% repeat-x; color: #363636; }
.ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636; }
.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a; background: #fef1ec url(images/ui-bg_glass_95_fef1ec_1x400.png) 50% 50% repeat-x; color: #cd0a0a; }
.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #cd0a0a; }
.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #cd0a0a; }
.ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; }
.ui-priority-secondary, .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }
.ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }
/* Icons
----------------------------------*/
/* states and images */
.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_222222_256x240.png); }
.ui-widget-content .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); }
.ui-widget-header .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); }
.ui-state-default .ui-icon { background-image: url(images/ui-icons_888888_256x240.png); }
.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); }
.ui-state-active .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); }
.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_2e83ff_256x240.png); }
.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_cd0a0a_256x240.png); }
/* positioning */
.ui-icon-carat-1-n { background-position: 0 0; }
.ui-icon-carat-1-ne { background-position: -16px 0; }
.ui-icon-carat-1-e { background-position: -32px 0; }
.ui-icon-carat-1-se { background-position: -48px 0; }
.ui-icon-carat-1-s { background-position: -64px 0; }
.ui-icon-carat-1-sw { background-position: -80px 0; }
.ui-icon-carat-1-w { background-position: -96px 0; }
.ui-icon-carat-1-nw { background-position: -112px 0; }
.ui-icon-carat-2-n-s { background-position: -128px 0; }
.ui-icon-carat-2-e-w { background-position: -144px 0; }
.ui-icon-triangle-1-n { background-position: 0 -16px; }
.ui-icon-triangle-1-ne { background-position: -16px -16px; }
.ui-icon-triangle-1-e { background-position: -32px -16px; }
.ui-icon-triangle-1-se { background-position: -48px -16px; }
.ui-icon-triangle-1-s { background-position: -64px -16px; }
.ui-icon-triangle-1-sw { background-position: -80px -16px; }
.ui-icon-triangle-1-w { background-position: -96px -16px; }
.ui-icon-triangle-1-nw { background-position: -112px -16px; }
.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
.ui-icon-arrow-1-n { background-position: 0 -32px; }
.ui-icon-arrow-1-ne { background-position: -16px -32px; }
.ui-icon-arrow-1-e { background-position: -32px -32px; }
.ui-icon-arrow-1-se { background-position: -48px -32px; }
.ui-icon-arrow-1-s { background-position: -64px -32px; }
.ui-icon-arrow-1-sw { background-position: -80px -32px; }
.ui-icon-arrow-1-w { background-position: -96px -32px; }
.ui-icon-arrow-1-nw { background-position: -112px -32px; }
.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
.ui-icon-arrowthick-1-n { background-position: 0 -48px; }
.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
.ui-icon-arrow-4 { background-position: 0 -80px; }
.ui-icon-arrow-4-diag { background-position: -16px -80px; }
.ui-icon-extlink { background-position: -32px -80px; }
.ui-icon-newwin { background-position: -48px -80px; }
.ui-icon-refresh { background-position: -64px -80px; }
.ui-icon-shuffle { background-position: -80px -80px; }
.ui-icon-transfer-e-w { background-position: -96px -80px; }
.ui-icon-transferthick-e-w { background-position: -112px -80px; }
.ui-icon-folder-collapsed { background-position: 0 -96px; }
.ui-icon-folder-open { background-position: -16px -96px; }
.ui-icon-document { background-position: -32px -96px; }
.ui-icon-document-b { background-position: -48px -96px; }
.ui-icon-note { background-position: -64px -96px; }
.ui-icon-mail-closed { background-position: -80px -96px; }
.ui-icon-mail-open { background-position: -96px -96px; }
.ui-icon-suitcase { background-position: -112px -96px; }
.ui-icon-comment { background-position: -128px -96px; }
.ui-icon-person { background-position: -144px -96px; }
.ui-icon-print { background-position: -160px -96px; }
.ui-icon-trash { background-position: -176px -96px; }
.ui-icon-locked { background-position: -192px -96px; }
.ui-icon-unlocked { background-position: -208px -96px; }
.ui-icon-bookmark { background-position: -224px -96px; }
.ui-icon-tag { background-position: -240px -96px; }
.ui-icon-home { background-position: 0 -112px; }
.ui-icon-flag { background-position: -16px -112px; }
.ui-icon-calendar { background-position: -32px -112px; }
.ui-icon-cart { background-position: -48px -112px; }
.ui-icon-pencil { background-position: -64px -112px; }
.ui-icon-clock { background-position: -80px -112px; }
.ui-icon-disk { background-position: -96px -112px; }
.ui-icon-calculator { background-position: -112px -112px; }
.ui-icon-zoomin { background-position: -128px -112px; }
.ui-icon-zoomout { background-position: -144px -112px; }
.ui-icon-search { background-position: -160px -112px; }
.ui-icon-wrench { background-position: -176px -112px; }
.ui-icon-gear { background-position: -192px -112px; }
.ui-icon-heart { background-position: -208px -112px; }
.ui-icon-star { background-position: -224px -112px; }
.ui-icon-link { background-position: -240px -112px; }
.ui-icon-cancel { background-position: 0 -128px; }
.ui-icon-plus { background-position: -16px -128px; }
.ui-icon-plusthick { background-position: -32px -128px; }
.ui-icon-minus { background-position: -48px -128px; }
.ui-icon-minusthick { background-position: -64px -128px; }
.ui-icon-close { background-position: -80px -128px; }
.ui-icon-closethick { background-position: -96px -128px; }
.ui-icon-key { background-position: -112px -128px; }
.ui-icon-lightbulb { background-position: -128px -128px; }
.ui-icon-scissors { background-position: -144px -128px; }
.ui-icon-clipboard { background-position: -160px -128px; }
.ui-icon-copy { background-position: -176px -128px; }
.ui-icon-contact { background-position: -192px -128px; }
.ui-icon-image { background-position: -208px -128px; }
.ui-icon-video { background-position: -224px -128px; }
.ui-icon-script { background-position: -240px -128px; }
.ui-icon-alert { background-position: 0 -144px; }
.ui-icon-info { background-position: -16px -144px; }
.ui-icon-notice { background-position: -32px -144px; }
.ui-icon-help { background-position: -48px -144px; }
.ui-icon-check { background-position: -64px -144px; }
.ui-icon-bullet { background-position: -80px -144px; }
.ui-icon-radio-off { background-position: -96px -144px; }
.ui-icon-radio-on { background-position: -112px -144px; }
.ui-icon-pin-w { background-position: -128px -144px; }
.ui-icon-pin-s { background-position: -144px -144px; }
.ui-icon-play { background-position: 0 -160px; }
.ui-icon-pause { background-position: -16px -160px; }
.ui-icon-seek-next { background-position: -32px -160px; }
.ui-icon-seek-prev { background-position: -48px -160px; }
.ui-icon-seek-end { background-position: -64px -160px; }
.ui-icon-seek-start { background-position: -80px -160px; }
/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
.ui-icon-seek-first { background-position: -80px -160px; }
.ui-icon-stop { background-position: -96px -160px; }
.ui-icon-eject { background-position: -112px -160px; }
.ui-icon-volume-off { background-position: -128px -160px; }
.ui-icon-volume-on { background-position: -144px -160px; }
.ui-icon-power { background-position: 0 -176px; }
.ui-icon-signal-diag { background-position: -16px -176px; }
.ui-icon-signal { background-position: -32px -176px; }
.ui-icon-battery-0 { background-position: -48px -176px; }
.ui-icon-battery-1 { background-position: -64px -176px; }
.ui-icon-battery-2 { background-position: -80px -176px; }
.ui-icon-battery-3 { background-position: -96px -176px; }
.ui-icon-circle-plus { background-position: 0 -192px; }
.ui-icon-circle-minus { background-position: -16px -192px; }
.ui-icon-circle-close { background-position: -32px -192px; }
.ui-icon-circle-triangle-e { background-position: -48px -192px; }
.ui-icon-circle-triangle-s { background-position: -64px -192px; }
.ui-icon-circle-triangle-w { background-position: -80px -192px; }
.ui-icon-circle-triangle-n { background-position: -96px -192px; }
.ui-icon-circle-arrow-e { background-position: -112px -192px; }
.ui-icon-circle-arrow-s { background-position: -128px -192px; }
.ui-icon-circle-arrow-w { background-position: -144px -192px; }
.ui-icon-circle-arrow-n { background-position: -160px -192px; }
.ui-icon-circle-zoomin { background-position: -176px -192px; }
.ui-icon-circle-zoomout { background-position: -192px -192px; }
.ui-icon-circle-check { background-position: -208px -192px; }
.ui-icon-circlesmall-plus { background-position: 0 -208px; }
.ui-icon-circlesmall-minus { background-position: -16px -208px; }
.ui-icon-circlesmall-close { background-position: -32px -208px; }
.ui-icon-squaresmall-plus { background-position: -48px -208px; }
.ui-icon-squaresmall-minus { background-position: -64px -208px; }
.ui-icon-squaresmall-close { background-position: -80px -208px; }
.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
/* Misc visuals
----------------------------------*/
/* Corner radius */
.ui-corner-all, .ui-corner-top, .ui-corner-left, .ui-corner-tl { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; -khtml-border-top-left-radius: 4px; border-top-left-radius: 4px; }
.ui-corner-all, .ui-corner-top, .ui-corner-right, .ui-corner-tr { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; -khtml-border-top-right-radius: 4px; border-top-right-radius: 4px; }
.ui-corner-all, .ui-corner-bottom, .ui-corner-left, .ui-corner-bl { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; -khtml-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; }
.ui-corner-all, .ui-corner-bottom, .ui-corner-right, .ui-corner-br { -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; -khtml-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; }
/* Overlays */
.ui-widget-overlay { background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); }
.ui-widget-shadow { margin: -8px 0 0 -8px; padding: 8px; background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); -moz-border-radius: 8px; -khtml-border-radius: 8px; -webkit-border-radius: 8px; border-radius: 8px; }/*
* jQuery UI Resizable 1.8.17
*
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Resizable#theming
*/
.ui-resizable { position: relative;}
.ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block; }
.ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; }
.ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; }
.ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; }
.ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; }
.ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; }
.ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; }
.ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; }
.ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; }
.ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}/*
* jQuery UI Selectable 1.8.17
*
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Selectable#theming
*/
.ui-selectable-helper { position: absolute; z-index: 100; border:1px dotted black; }
/*
* jQuery UI Accordion 1.8.17
*
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Accordion#theming
*/
/* IE/Win - Fix animation bug - #4615 */
.ui-accordion { width: 100%; }
.ui-accordion .ui-accordion-header { cursor: pointer; position: relative; margin-top: 1px; zoom: 1; }
.ui-accordion .ui-accordion-li-fix { display: inline; }
.ui-accordion .ui-accordion-header-active { border-bottom: 0 !important; }
.ui-accordion .ui-accordion-header a { display: block; font-size: 1em; padding: .5em .5em .5em .7em; }
.ui-accordion-icons .ui-accordion-header a { padding-left: 2.2em; }
.ui-accordion .ui-accordion-header .ui-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; }
.ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; margin-top: -2px; position: relative; top: 1px; margin-bottom: 2px; overflow: auto; display: none; zoom: 1; }
.ui-accordion .ui-accordion-content-active { display: block; }
/*
* jQuery UI Autocomplete 1.8.17
*
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Autocomplete#theming
*/
.ui-autocomplete { position: absolute; cursor: default; }
/* workarounds */
* html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */
/*
* jQuery UI Menu 1.8.17
*
* Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Menu#theming
*/
.ui-menu {
list-style:none;
padding: 2px;
margin: 0;
display:block;
float: left;
}
.ui-menu .ui-menu {
margin-top: -3px;
}
.ui-menu .ui-menu-item {
margin:0;
padding: 0;
zoom: 1;
float: left;
clear: left;
width: 100%;
}
.ui-menu .ui-menu-item a {
text-decoration:none;
display:block;
padding:.2em .4em;
line-height:1.5;
zoom:1;
}
.ui-menu .ui-menu-item a.ui-state-hover,
.ui-menu .ui-menu-item a.ui-state-active {
font-weight: normal;
margin: -1px;
}
/*
* jQuery UI Button 1.8.17
*
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Button#theming
*/
.ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; text-decoration: none !important; cursor: pointer; text-align: center; zoom: 1; overflow: visible; } /* the overflow property removes extra width in IE */
.ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */
button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */
.ui-button-icons-only { width: 3.4em; }
button.ui-button-icons-only { width: 3.7em; }
/*button text element */
.ui-button .ui-button-text { display: block; line-height: 1.4; }
.ui-button-text-only .ui-button-text { padding: .4em 1em; }
.ui-button-icon-only .ui-button-text, .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; }
.ui-button-text-icon-primary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; }
.ui-button-text-icon-secondary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 2.1em .4em 1em; }
.ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; }
/* no icon support for input elements, provide padding by default */
input.ui-button { padding: .4em 1em; }
/*button icon element(s) */
.ui-button-icon-only .ui-icon, .ui-button-text-icon-primary .ui-icon, .ui-button-text-icon-secondary .ui-icon, .ui-button-text-icons .ui-icon, .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; }
.ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; }
.ui-button-text-icon-primary .ui-button-icon-primary, .ui-button-text-icons .ui-button-icon-primary, .ui-button-icons-only .ui-button-icon-primary { left: .5em; }
.ui-button-text-icon-secondary .ui-button-icon-secondary, .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
.ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
/*button sets*/
.ui-buttonset { margin-right: 7px; }
.ui-buttonset .ui-button { margin-left: 0; margin-right: -.3em; }
/* workarounds */
button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */
/*
* jQuery UI Dialog 1.8.17
*
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Dialog#theming
*/
.ui-dialog { position: absolute; padding: .2em; width: 300px; overflow: hidden; }
.ui-dialog .ui-dialog-titlebar { padding: .4em 1em; position: relative; }
.ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .1em 0; }
.ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; }
.ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; }
.ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; }
.ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; }
.ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; }
.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; }
.ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; }
.ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; }
.ui-draggable .ui-dialog-titlebar { cursor: move; }
/*
* jQuery UI Slider 1.8.17
*
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Slider#theming
*/
.ui-slider { position: relative; text-align: left; }
.ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; }
.ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; }
.ui-slider-horizontal { height: .8em; }
.ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; }
.ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; }
.ui-slider-horizontal .ui-slider-range-min { left: 0; }
.ui-slider-horizontal .ui-slider-range-max { right: 0; }
.ui-slider-vertical { width: .8em; height: 100px; }
.ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; }
.ui-slider-vertical .ui-slider-range { left: 0; width: 100%; }
.ui-slider-vertical .ui-slider-range-min { bottom: 0; }
.ui-slider-vertical .ui-slider-range-max { top: 0; }/*
* jQuery UI Tabs 1.8.17
*
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Tabs#theming
*/
.ui-tabs { position: relative; padding: .2em; zoom: 1; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
.ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; }
.ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 1px; margin: 0 .2em 1px 0; border-bottom: 0 !important; padding: 0; white-space: nowrap; }
.ui-tabs .ui-tabs-nav li a { float: left; padding: .5em 1em; text-decoration: none; }
.ui-tabs .ui-tabs-nav li.ui-tabs-selected { margin-bottom: 0; padding-bottom: 1px; }
.ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; }
.ui-tabs .ui-tabs-nav li a, .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */
.ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 1em 1.4em; background: none; }
.ui-tabs .ui-tabs-hide { display: none !important; }
/*
* jQuery UI Datepicker 1.8.17
*
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Datepicker#theming
*/
.ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; }
.ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; }
.ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; }
.ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; }
.ui-datepicker .ui-datepicker-prev { left:2px; }
.ui-datepicker .ui-datepicker-next { right:2px; }
.ui-datepicker .ui-datepicker-prev-hover { left:1px; }
.ui-datepicker .ui-datepicker-next-hover { right:1px; }
.ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px; }
.ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; }
.ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; }
.ui-datepicker select.ui-datepicker-month-year {width: 100%;}
.ui-datepicker select.ui-datepicker-month,
.ui-datepicker select.ui-datepicker-year { width: 49%;}
.ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; }
.ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; }
.ui-datepicker td { border: 0; padding: 1px; }
.ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; }
.ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; }
.ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; }
.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; }
/* with multiple calendars */
.ui-datepicker.ui-datepicker-multi { width:auto; }
.ui-datepicker-multi .ui-datepicker-group { float:left; }
.ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; }
.ui-datepicker-multi-2 .ui-datepicker-group { width:50%; }
.ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; }
.ui-datepicker-multi-4 .ui-datepicker-group { width:25%; }
.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; }
.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; }
.ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; }
.ui-datepicker-row-break { clear:both; width:100%; font-size:0em; }
/* RTL support */
.ui-datepicker-rtl { direction: rtl; }
.ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; }
.ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; }
.ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; }
.ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; }
.ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; }
.ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; }
.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; }
.ui-datepicker-rtl .ui-datepicker-group { float:right; }
.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */
.ui-datepicker-cover {
display: none; /*sorry for IE5*/
display/**/: block; /*sorry for IE5*/
position: absolute; /*must have*/
z-index: -1; /*must have*/
filter: mask(); /*must have*/
top: -4px; /*must have*/
left: -4px; /*must have*/
width: 200px; /*must have*/
height: 200px; /*must have*/
}/*
* jQuery UI Progressbar 1.8.17
*
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Progressbar#theming
*/
.ui-progressbar { height:2em; text-align: left; overflow: hidden; }
.ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; }

View File

@ -0,0 +1,45 @@
<!doctype>
<html>
<head>
<title>jsPDF</title>
<link rel="stylesheet" type="text/css" href="css/main.css">
<script type="text/javascript" src="../libs/base64.js"></script>
<script type="text/javascript" src="../jspdf.js"></script>
<script type="text/javascript" src="../libs/downloadify/js/swfobject.js"></script>
<script type="text/javascript" src="../libs/downloadify/js/downloadify.min.js"></script>
</head>
<body onload="load()">
<h1>jsPDF Downloadify Example</h1>
<p>This is an example of jsPDF using <a href="https://github.com/dcneiner/Downloadify">Downloadify</a>. This works in all major browsers.</p>
<p id="downloadify">
You must have Flash 10 installed to download this file.
</p>
<script type="text/javascript">
function load(){
Downloadify.create('downloadify',{
filename: 'Example.pdf',
data: function(){
var doc = new jsPDF();
doc.text(20, 20, 'PDF Generation using client-side Javascript');
doc.addPage();
doc.text(20, 20, 'Do you like that?');
return doc.output();
},
onComplete: function(){ alert('Your File Has Been Saved!'); },
onCancel: function(){ alert('You have cancelled the saving of this file.'); },
onError: function(){ alert('You must put something in the File Contents or there will be nothing to save!'); },
swf: '../libs/downloadify/media/downloadify.swf',
downloadImage: '../libs/downloadify/images/download.png',
width: 100,
height: 30,
transparent: true,
append: false
});
}
</script>
</body>
</html>

View File

@ -0,0 +1,171 @@
<!DOCTYPE html>
<html>
<head>
<title>context2d auto-break</title>
<link rel="stylesheet" type="text/css" href="examples.css">
<style>
</style>
</head>
<body>
<div style='position: absolute; left: 0; top: 0; bottom: 0; width: 400px; overflow: auto'>
<h1>Autobreak</h1>
<p>The context2d plugin was tweaked to auto-break a document into multiple pages.</p>
<p>The auto-page-break feature allows vertical positioning by addressing the Y coordinate beyond the PDF page.</p>
<p>
Note: <em>There is a margin bug that causes an item to not draw in the break.</em>
</p>
<ol>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
<li>OL Item</li>
</ol>
</div>
<script src='../../dist/jspdf.debug.js'></script>
<script src='../../libs/html2pdf.js'></script>
<script>
var pdf = new jsPDF('p', 'pt', 'letter');
var canvas = pdf.canvas;
canvas.height = 72 * 11;
canvas.width=72 * 8.5;;
// var width = 400;
document.body.style.width = 400 + 'px';
html2pdf(document.body, pdf, function(pdf) {
var iframe = document.createElement('iframe');
iframe.setAttribute('style','position:absolute;right:0; top:0; bottom:0; height:100%; width:500px');
document.body.appendChild(iframe);
iframe.src = pdf.output('datauristring');
//var div = document.createElement('pre');
//div.innerText=pdf.output();
//document.body.appendChild(div);
}
);
</script>
</body>
</html>

View File

@ -0,0 +1 @@
@CHARSET "UTF-8";

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

View File

@ -0,0 +1,65 @@
<!DOCTYPE html>
<html>
<head>
<title>Html2Pdf</title>
<link rel="stylesheet" type="text/css" href="examples.css">
<style>
</style>
</head>
<body>
<div style='position: absolute'>
<h1>Ordered And Unordered Lists</h1>
<h2>Implemented</h2>
<ol>
<li>OL Item (default)</li>
<li style='list-style-type: decimal'>OL Item (decimal)</li>
<li style='list-style-type: upper-alpha'>OL Item (upper-alpha)</li>
<li style='list-style-type: lower-alpha'>OL Item (lower-alpha)</li>
<li style='list-style-type: upper-roman'>OL Item (upper-roman)</li>
<li style='list-style-type: lower-roman'>OL Item (lower-roman)</li>
<li style='list-style-type: none'>OL Item (none)</li>
</ol>
<ul>
<li>UL Item (default)</li>
<li style='list-style-type: circle'>UL Item (circle)</li>
<li style='list-style-type: square'>UL Item (square)</li>
<li style='list-style-type: disc'>UL Item (disc)</li>
<li style='list-style-type: none'>OL Item (none)</li>
</ul>
<h2>Not Implemented</h2>
<pre>
upper-latin
lower-latin
armenian
cjk-ideographic
decimal-leading-zero
georgian
hebrew
hiragana
hiragana-iroha
katakana
katakana-iroha
</pre>
</div>
<script src='../../dist/jspdf.debug.js'></script>
<script src='../../libs/html2pdf.js'></script>
<script>
var pdf = new jsPDF('p', 'pt', 'letter');
var canvas = pdf.canvas;
canvas.height = 72 * 11;
canvas.width=72 * 8.5;;
// var width = 400;
html2pdf(document.body, pdf, function(canvas) {
var iframe = document.createElement('iframe');
iframe.setAttribute('style','position:absolute;right:0; top:0; bottom:0; height:100%; width:500px');
document.body.appendChild(iframe);
iframe.src = pdf.output('datauristring');
}
);
</script>
</body>
</html>

View File

@ -0,0 +1,54 @@
<!DOCTYPE html>
<html>
<head>
<title>Page Break Test</title>
<link rel="stylesheet" type="text/css" href="examples.css">
<style>
table,td {
border: 1px solid silver;
border-collapse: collapse
}
td {
padding: .5em
}
</style>
</head>
<body>
<div style='position: absolute; left: 0; top: 0; bottom: 0; overflow: auto; width: 400px'>
This example show how the <em>page-break-before</em> style is rendered.
<h1 style='page-break-before: always'>Numbers</h1>
<p>1</p>
<p>2</p>
<p>3</p>
<p>4</p>
<h1 style='page-break-before: always'>Letters</h1>
<p>a</p>
<p>b</p>
<p>c</p>
<p>d</p>
<h1 style='page-break-before: always'>Text</h1>
<p>This is the content.</p>
</div>
<script src='../../dist/jspdf.debug.js'></script>
<script src='../../libs/html2pdf.js'></script>
<script>
var pdf = new jsPDF('p', 'pt', 'letter');
pdf.canvas.height = 72 * 11;
pdf.canvas.width = 72 * 8.5;
//html2pdf(document.documentElement.innerHTML, pdf, function(pdf){
html2pdf(document.body, pdf, function(pdf){
var iframe = document.createElement('iframe');
iframe.setAttribute('style','position:absolute;right:0; top:0; bottom:0; height:100%; width:500px');
document.body.appendChild(iframe);
iframe.src = pdf.output('datauristring');
});
</script>
</body>
</html>

View File

@ -0,0 +1,180 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
<html>
<head>
<title>display/box/float/clear test</title>
<style type="text/css">
/* last modified: 1 Dec 98 */
html {
font: 10px/1 Verdana, sans-serif;
background-color: blue;
color: white;
}
body {
margin: 1.5em;
border: .5em solid black;
padding: 0;
width: 48em;
background-color: white;
}
dl {
margin: 0;
border: 0;
padding: .5em;
}
dt {
background-color: rgb(204, 0, 0);
margin: 0;
padding: 1em;
width: 10.638%; /* refers to parent element's width of 47em. = 5em or 50px */
height: 28em;
border: .5em solid black;
float: left;
}
dd {
float: right;
margin: 0 0 0 1em;
border: 1em solid black;
padding: 1em;
width: 34em;
height: 27em;
}
ul {
margin: 0;
border: 0;
padding: 0;
}
li {
display: block; /* i.e., suppress marker */
color: black;
height: 9em;
width: 5em;
margin: 0;
border: .5em solid black;
padding: 1em;
float: left;
background-color: #FC0;
}
#bar {
background-color: black;
color: white;
width: 41.17%; /* = 14em */
border: 0;
margin: 0 1em;
}
#baz {
margin: 1em 0;
border: 0;
padding: 1em;
width: 10em;
height: 10em;
background-color: black;
color: white;
}
form {
margin: 0;
display: inline;
}
p {
margin: 0;
}
form p {
line-height: 1.9;
}
blockquote {
margin: 1em 1em 1em 2em;
border-width: 1em 1.5em 2em .5em;
border-style: solid;
border-color: black;
padding: 1em 0;
width: 5em;
height: 9em;
float: left;
background-color: #FC0;
color: black;
}
address {
font-style: normal;
}
h1 {
background-color: black;
color: white;
float: left;
margin: 1em 0;
border: 0;
padding: 1em;
width: 10em;
height: 10em;
font-weight: normal;
font-size: 1em;
}
</style>
</head>
<body>
<dl>
<dt>toggle</dt>
<dd>
<ul>
<li>the way</li>
<li id="bar">
<p>the world ends</p>
<form action="./" method="get">
<p>
bang <input type="radio" name="foo" value="off">
</p>
<p>
whimper <input type="radio" name="foo2" value="on">
</p>
</form>
</li>
<li>i grow old</li>
<li id="baz">pluot?</li>
</ul>
<blockquote>
<address>bar maids,</address>
</blockquote>
<h1>sing to me, erbarme dich</h1>
</dd>
</dl>
<p style="color: black; font-size: 1em; line-height: 1.3em; clear: both">
This is a nonsensical document, but syntactically valid HTML 4.0. All 100% conformant CSS1 agents should be able to render the document elements above this paragraph <b>indistinguishably</b> (to the pixel) from this reference rendering, (except font rasterization and form widgets). All discrepancies should be traceable to CSS1 implementation shortcomings. Once you have finished evaluating this test, you can return to the <A HREF="sec5526c.htm" style="text-decoration: none">parent page</A>.
</p>
<script src='../../dist/jspdf.debug.js'></script>
<script src='../../libs/html2pdf.js'></script>
<script>
var pdf = new jsPDF('p', 'pt', 'letter');
var canvas = pdf.canvas;
canvas.width = 8.5 * 72;
html2canvas(document.body, {
canvas:canvas,
onrendered: function(canvas) {
var iframe = document.createElement('iframe');
iframe.setAttribute('style','position:absolute;right:0; top:0; bottom:0; height:100%; width:500px');
document.body.appendChild(iframe);
iframe.src = pdf.output('datauristring');
//var div = document.createElement('pre');
//div.innerText=pdf.output();
//document.body.appendChild(div);
}
});
</script>
</body>
</html>

View File

@ -0,0 +1,87 @@
<!DOCTYPE html>
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<style>
.feedback-overlay-black {
background-color: #000;
opacity: 0.5;
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
margin: 0;
}
</style>
<style>
div {
padding: 20px;
margin: 0 auto;
border: 5px solid black;
}
h1 {
border-bottom: 2px solid white;
}
h2 {
background: #efefef;
padding: 10px;
}
</style>
</head>
<body>
<div style="background: red;">
<div style="background: green;">
<div style="background: blue; border-color: white;">
<div style="background: yellow;">
<div style="background: orange;">
<h1>Heading</h1>
Text that isn't wrapped in anything.
<p>
Followed by some text wrapped in a <b>&lt;p&gt; paragraph.</b>
</p>
<p>
Maybe add a <a href="#">link</a> or a different style of <a href="#" style='font-weight: 700; color: purple; font-size: 2em' id="highlight">link with a highlight</a>.
</p>
<hr />
<h2>More content</h2>
<div style="width: 10px; height: 10px; border-width: 10px; padding: 0;">a</div>
</div>
</div>
</div>
</div>
</div>
<script src='../../dist/jspdf.debug.js'></script>
<script src='../../libs/html2pdf.js'></script>
<script>
var pdf = new jsPDF('p', 'pt', 'letter');
var canvas = pdf.canvas;
var width = 600;
//canvas.width=8.5*72;
document.body.style.width=width + "px";
html2canvas(document.body, {
canvas:canvas,
onrendered: function(canvas) {
var iframe = document.createElement('iframe');
iframe.setAttribute('style', 'position:absolute;top:0;right:0;height:100%; width:600px');
document.body.appendChild(iframe);
iframe.src = pdf.output('datauristring');
//var div = document.createElement('pre');
//div.innerText=pdf.output();
//document.body.appendChild(div);
}
});
</script>
</body>
</html>

View File

@ -0,0 +1,93 @@
<!DOCTYPE html>
<html>
<head>
<title>Html2Pdf</title>
<link rel="stylesheet" type="text/css" href="examples.css">
<style>
</style>
</head>
<body>
<div style='position: absolute; left: 0; top: 0; bottom: 0; overflow: auto; width: 400px'>
<h1>Html2Pdf</h1>
<p>
This demo uses Html2Canvas.js to render HTML. <br />Instead of using an HTML canvas however, a canvas wrapper using jsPDF is substituted. The <em>context2d</em> provided by the wrapper calls native PDF rendering methods.
</p>
<p>A PDF of this page will be inserted into the right margin.</p>
<h2>Colors</h2>
<p>
<span style='color: red'>red</span> <span style='color: rgb(0, 255, 0)'>rgb(0,255,0)</span> <span style='color: rgba(0, 0, 0, .5)'>rgba(0,0,0,.5)</span> <span style='color: #0000FF'>#0000FF</span> <span style='color: #0FF'>#0FF</span>
</p>
<h2>Text Alignment</h2>
<div style='text-align: left'>left</div>
<div style='text-align: center'>center</div>
<div style='text-align: right'>right</div>
<h2>Margins and Padding</h2>
<div style='background-color: red'>
Red
<div style='background-color: green; margin: 1em; padding: 1em;'>
Green
<div style='background-color: blue; margin: 1em'>Blue</div>
</div>
</div>
<h2>Borders</h2>
<div style='border: 1px solid black'>Single</div>
<hr />
<div style='border: 4px double black'>Double</div>
<h2>Font Style</h2>
<div style='font-style: normal'>Normal</div>
<div style='font-style: italic'>Italic</div>
<div style='font-style: oblique'>Oblique</div>
<h2>Lists</h2>
<ul>
<li>apples</li>
<li>oranges</li>
<li>pears</li>
<li>peaches</li>
<li>lemons</li>
<li>limes</li>
</ul>
<h2>Font Size</h2>
<div style='font-size: 10px'>10px</div>
<div style='font-size: 20px'>20px</div>
<div style='font-size: 30px'>30px</div>
<div style='font-size: 20pt'>20pt</div>
<div style='font-size: 1em'>1em</div>
<div style='font-size: 2em'>2em</div>
</div>
<script src='../../dist/jspdf.debug.js'></script>
<script src='../../libs/html2pdf.js'></script>
<script>
var pdf = new jsPDF('p', 'pt', 'letter');
var canvas = pdf.canvas;
canvas.height = 72 * 11;
canvas.width=72 * 8.5;;
// var width = 400;
html2pdf(document.body, pdf, function(pdf) {
var iframe = document.createElement('iframe');
iframe.setAttribute('style','position:absolute;right:0; top:0; bottom:0; height:100%; width:500px');
document.body.appendChild(iframe);
iframe.src = pdf.output('datauristring');
//var div = document.createElement('pre');
//div.innerText=pdf.output();
//document.body.appendChild(div);
}
);
</script>
</body>
</html>

View File

@ -0,0 +1,218 @@
<!DOCTYPE html>
<html>
<head>
<title>HTML Test File</title>
<link rel="stylesheet" type="text/css" href="examples.css">
<style>
table,td {
border: 1px solid silver;
border-collapse: collapse
}
td {
padding: .5em
}
#table-list-styles td {
vertical-align: top;
}
.page-break {
page-break-before: always;
}
</style>
</head>
<body>
<div style='position: absolute; left: 0; top: 0; bottom: 0; overflow: auto; width: 400px'>
<h1>HTML Test File</h1>
This page showcases all HTML supported features.
<hr>
<h1>Headings</h1>
<h1>Heading 1</h1>
<h2>Heading 2</h2>
<h3>Heading 3</h3>
<h4>Heading 4</h4>
<h5>Heading 5</h5>
<h6>Heading 6</h6>
<hr>
<h1>
<a id="colors" class="mce-item-anchor"></a>Colors
</h1>
<p>
<span style="color: #ff0000; background-color: #00ff00;" data-mce-style="color: #ff0000; background-color: #00ff00;">Red Text With Green Background</span>
</p>
<hr>
<h1 class='page-break'>
<a id="font-sizes" class="mce-item-anchor"></a>Font Sizes
</h1>
<p>
<span style="font-size: 12pt;" data-mce-style="font-size: 12pt;">12 Point</span>
</p>
<p>
<span style="font-size: 24pt;" data-mce-style="font-size: 24pt;">24 Point</span>
</p>
<hr>
<h1>
<a id="fonts" class="mce-item-anchor"></a>Fonts
</h1>
<p>
<span style="font-size: 24pt; font-family: arial, helvetica, sans-serif;" data-mce-style="font-size: 24pt; font-family: arial, helvetica, sans-serif;">Arial</span>
</p>
<p>
<span style="font-size: 24pt; font-family: georgia, palatino;" data-mce-style="font-size: 24pt; font-family: georgia, palatino;">Georgia</span>
</p>
<p>
<span style="font-size: 24pt; font-family: terminal, monaco;" data-mce-style="font-size: 24pt; font-family: terminal, monaco;">Terminal</span>
</p>
<p>
<span style="font-size: 24pt; font-family: 'times new roman', times;" data-mce-style="font-size: 24pt; font-family: 'times new roman', times;">Times</span>
</p>
<hr>
<h1 class='page-break'>
<a id="tables" class="mce-item-anchor"></a>Tables
</h1>
<table class="mce-item-table">
<tbody>
<tr>
<td>Number</td>
<td>English</td>
<td>Spanish</td>
</tr>
<tr>
<td>1</td>
<td>one</td>
<td>uno</td>
</tr>
<tr>
<td>2</td>
<td>two</td>
<td>dos</td>
</tr>
<tr>
<td>3</td>
<td>three</td>
<td>tres</td>
</tr>
</tbody>
</table>
<h1>Images</h1>
Images are subject to CORS restrictions an may only show up in a production environment.
When testing, we start Chrome with the '--allow-file-access-from-files' flag...
<img src="images/favicon.png" height="100" />
<h1 class='page-break'>Lists</h1>
<table id='table-list-styles'>
<tr>
<td>
<p>Default</p>
<ul>
<li>Milk</li>
<li>Eggs</li>
<li>Cheese</li>
</ul>
<p>Circle</p>
<ul style="list-style-type: circle;" data-mce-style="list-style-type: circle;">
<li>Milk</li>
<li>Eggs</li>
<li>Cheese</li>
</ul>
<p>Disk</p>
<ul style="list-style-type: disc;" data-mce-style="list-style-type: disc;">
<li>Milk</li>
<li>Eggs</li>
<li>Cheese</li>
</ul>
<p>Square</p>
<ul style="list-style-type: square;" data-mce-style="list-style-type: square;">
<li>Milk</li>
<li>Eggs</li>
<li>Cheese</li>
</ul>
</td>
<td>
<p>Default</p>
<ol>
<li>Milk</li>
<li>Eggs</li>
<li>Cheese</li>
</ol>
<p>Lower Alpha</p>
<ol style="list-style-type: lower-alpha;" data-mce-style="list-style-type: lower-alpha;">
<li>Milk</li>
<li>Eggs</li>
<li>Cheese</li>
</ol>
<p>Upper Alpha</p>
<ol style="list-style-type: upper-alpha;" data-mce-style="list-style-type: upper-alpha;">
<li>Milk</li>
<li>Eggs</li>
<li>Cheese</li>
</ol>
</td>
<td>
<p>Lower&nbsp;Roman</p>
<ol style="list-style-type: lower-roman;" data-mce-style="list-style-type: lower-roman;">
<li>Milk</li>
<li>Eggs</li>
<li>Cheese</li>
</ol>
<p>Upper&nbsp;Roman</p>
<ol style="list-style-type: upper-roman;" data-mce-style="list-style-type: upper-roman;">
<li>Milk</li>
<li>Eggs</li>
<li>Cheese</li>
</ol>
<p>Lower&nbsp;Greek</p>
<ol style="list-style-type: lower-greek;" data-mce-style="list-style-type: lower-greek;">
<li>Milk</li>
<li>Eggs</li>
<li>Cheese</li>
</ol>
<p>Upper&nbsp;Greek</p>
<ol style="list-style-type: upper-greek;" data-mce-style="list-style-type: upper-greek;">
<li>Milk</li>
<li>Eggs</li>
<li>Cheese</li>
</ol>
</td>
</tr>
</table>
<h1 class='page-break'>Hyperlinks</h1>
<h2>Internal</h2>
<p>
<a href="#colors" data-mce-href="#colors">Colors</a>
</p>
<p>
<a href="#font-sizes" data-mce-href="#font-sizes">Font Sizes</a>
</p>
<p>
<a href="#fonts" data-mce-href="#fonts">Fonts</a>
</p>
<p>
<a href="#tables" data-mce-href="#tables">Tables</a>
</p>
<h2>External</h2>
<p>
<a href="http://www.twelvetone.tv" data-mce-href="http://www.twelvetone.tv">www.twelvetone.tv</a>
</p>
</div>
<script src='../../dist/jspdf.debug.js'></script>
<script src='../../libs/html2pdf.js'></script>
<script>
var pdf = new jsPDF('p', 'pt', 'letter');
pdf.canvas.height = 72 * 11;
pdf.canvas.width = 72 * 8.5;
html2pdf(document.body, pdf, function(pdf){
var iframe = document.createElement('iframe');
iframe.setAttribute('style','position:absolute;right:0; top:0; bottom:0; height:100%; width:500px');
document.body.appendChild(iframe);
iframe.src = pdf.output('datauristring');
});
</script>
</body>
</html>

View File

@ -0,0 +1,27 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>html2pdf Simple Example</title>
</head>
<body>
</body>
</html>
<script src='../../dist/jspdf.debug.js'></script>
<script src='../../libs/html2pdf.js'></script>
<script>
var pdf = new jsPDF('p', 'pt', 'letter');
var canvas = pdf.canvas;
canvas.height = 72 * 11;
canvas.width= 72 * 8.5;;
// can also be document.body
var html = '<html><body>Hello <strong> World</strong></body></html>';
html2pdf(html, pdf, function(pdf) {
pdf.output('dataurlnewwindow');
});
</script>

View File

@ -0,0 +1,239 @@
<!DOCTYPE html>
<html>
<head>
<title>Html2Pdf</title>
<link rel="stylesheet" type="text/css" href="examples.css">
<style>
table {
margin-bottom: 1em;
}
table td {
padding: 3px;
}
.table1 {
border: 1px solid red;
}
.table2,.table2 td {
border: 1px solid silver;
border-collapse: collapse;
}
.table2 td:first-child {
background-color: lightblue;
}
.CSSTableGenerator {
margin: 0px;
padding: 0px;
width: 100%;
box-shadow: 10px 10px 5px #888888;
border: 1px solid #000000;
-moz-border-radius-bottomleft: 0px;
-webkit-border-bottom-left-radius: 0px;
border-bottom-left-radius: 0px;
-moz-border-radius-bottomright: 0px;
-webkit-border-bottom-right-radius: 0px;
border-bottom-right-radius: 0px;
-moz-border-radius-topright: 0px;
-webkit-border-top-right-radius: 0px;
border-top-right-radius: 0px;
-moz-border-radius-topleft: 0px;
-webkit-border-top-left-radius: 0px;
border-top-left-radius: 0px;
}
.CSSTableGenerator table {
border-collapse: collapse;
border-spacing: 0;
width: 100%;
height: 100%;
margin: 0px;
padding: 0px;
}
.CSSTableGenerator tr:last-child td:last-child {
-moz-border-radius-bottomright: 0px;
-webkit-border-bottom-right-radius: 0px;
border-bottom-right-radius: 0px;
}
.CSSTableGenerator table tr:first-child td:first-child {
-moz-border-radius-topleft: 0px;
-webkit-border-top-left-radius: 0px;
border-top-left-radius: 0px;
}
.CSSTableGenerator table tr:first-child td:last-child {
-moz-border-radius-topright: 0px;
-webkit-border-top-right-radius: 0px;
border-top-right-radius: 0px;
}
.CSSTableGenerator tr:last-child td:first-child {
-moz-border-radius-bottomleft: 0px;
-webkit-border-bottom-left-radius: 0px;
border-bottom-left-radius: 0px;
}
.CSSTableGenerator tr:hover td {
}
.CSSTableGenerator tr:nth-child(odd) {
background-color: #ffaa56;
}
.CSSTableGenerator tr:nth-child(even) {
background-color: #ffffff;
}
.CSSTableGenerator td {
vertical-align: middle;
border: 1px solid #000000;
border-width: 0px 1px 1px 0px;
text-align: left;
padding: 7px;
font-size: 10px;
font-family: Arial;
font-weight: normal;
color: #000000;
}
.CSSTableGenerator tr:last-child td {
border-width: 0px 1px 0px 0px;
}
.CSSTableGenerator tr td:last-child {
border-width: 0px 0px 1px 0px;
}
.CSSTableGenerator tr:last-child td:last-child {
border-width: 0px 0px 0px 0px;
}
.CSSTableGenerator tr:first-child td {
background: -o-linear-gradient(bottom, #ff7f00 5%, #bf5f00 100%);
background: -webkit-gradient(linear, left top, left bottom, color-stop(0.05, #ff7f00), color-stop(1, #bf5f00));
background: -moz-linear-gradient(center top, #ff7f00 5%, #bf5f00 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr="#ff7f00", endColorstr="#bf5f00");
background: -o-linear-gradient(top, #ff7f00, bf5f00);
background-color: #ff7f00;
border: 0px solid #000000;
text-align: center;
border-width: 0px 0px 1px 1px;
font-size: 14px;
font-family: Arial;
font-weight: bold;
color: #ffffff;
}
.CSSTableGenerator tr:first-child:hover td {
background: -o-linear-gradient(bottom, #ff7f00 5%, #bf5f00 100%);
background: -webkit-gradient(linear, left top, left bottom, color-stop(0.05, #ff7f00), color-stop(1, #bf5f00));
background: -moz-linear-gradient(center top, #ff7f00 5%, #bf5f00 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr="#ff7f00", endColorstr="#bf5f00");
background: -o-linear-gradient(top, #ff7f00, bf5f00);
background-color: #ff7f00;
}
.CSSTableGenerator tr:first-child td:first-child {
border-width: 0px 0px 1px 0px;
}
.CSSTableGenerator tr:first-child td:last-child {
border-width: 0px 0px 1px 1px;
}
</style>
</head>
<body>
<div style='position: absolute'>
<h1>Tables</h1>
<table class='table1'>
<tr>
<td>Item</td>
<td>Cost</td>
<td>Description</td>
<td>Available</td>
</tr>
<tr>
<td>Milk</td>
<td>$1.00</td>
<td>Hello PDF World</td>
<td>Out Of Stock</td>
</tr>
<tr>
<td>Milk</td>
<td>$1.00</td>
<td>Hello PDF World</td>
<td>Out Of Stock</td>
</tr>
</table>
<table class='table2'>
<tr>
<td>Item</td>
<td>Cost</td>
<td>Description</td>
<td>Available</td>
</tr>
<tr>
<td>Milk</td>
<td>$1.00</td>
<td>Hello PDF World</td>
<td>Out Of Stock</td>
</tr>
<tr>
<td>Milk</td>
<td>$1.00</td>
<td>Hello PDF World</td>
<td>Out Of Stock</td>
</tr>
</table>
<table class='CSSTableGenerator'>
<tr>
<td>Item</td>
<td>Cost</td>
<td>Description</td>
<td>Available</td>
</tr>
<tr>
<td>Milk</td>
<td>$1.00</td>
<td>Hello PDF World</td>
<td>Out Of Stock</td>
</tr>
<tr>
<td>Milk</td>
<td>$1.00</td>
<td>Hello PDF World</td>
<td>Out Of Stock</td>
</tr>
</table>
</div>
<script src='../../dist/jspdf.debug.js'></script>
<script src='../../libs/html2pdf.js'></script>
<script>
var pdf = new jsPDF('p', 'pt', 'letter');
var canvas = pdf.canvas;
canvas.height = 72 * 11;
canvas.width=72 * 8.5;;
// var width = 400;
html2pdf(document.body, pdf, function(pdf) {
var iframe = document.createElement('iframe');
iframe.setAttribute('style','position:absolute;right:0; top:0; bottom:0; height:100%; width:500px');
document.body.appendChild(iframe);
iframe.src = pdf.output('datauristring');
//var div = document.createElement('pre');
//div.innerText=pdf.output();
//document.body.appendChild(div);
}
);
</script>
</body>
</html>

View File

@ -0,0 +1,269 @@
<!DOCTYPE html>
<html>
<head>
<title>Html2Pdf</title>
<link rel="stylesheet" type="text/css" href="examples.css">
<style>
</style>
</head>
<body>
<div style='position: absolute; left: 0; width: 400px'>
<br />
<h1>Heading one</h1>
<h2>Header two</h2>
<h3>Header three</h3>
<h4>Header four</h4>
<h5>Header five</h5>
<h6>Header six</h6>
<p>
This is a copy of one of the sample pages from the <a href="http://www.wordpress.org" onclick="_gaq.push(['_trackEvent', 'outbound-article', 'http://www.wordpress.org', 'WordPress']);">WordPress</a> theme development test content. I found it handy to keep a copy of this for building sites that arent using WordPress. 99% of the credit goes to them, Im just hosting it in a handy place in case its useful to anyone other than me.
</p>
<h2>Blockquote Tests</h2>
<p>Blockquote:</p>
<blockquote>
<p>Heres a one line quote.</p>
</blockquote>
<p>This part isnt quoted. Heres a longer quote:</p>
<blockquote>
<p>I have learned, that if one advances confidently in the direction of his dreams, and endeavors to live the life he has imagined, he will meet with a success unexpected in common hours.</p>
<p>
<cite>Henry David Thoreau </cite>
</p>
</blockquote>
<p>And some trailing text.</p>
<h2>Table Layout Test</h2>
<table class="statsDay">
<tbody>
<tr>
<th>Title</th>
<th class="views">Views</th>
<th></th>
</tr>
<tr class="alternate">
<td class="label"><a href="http:///example.com/" onclick="_gaq.push(['_trackEvent', 'outbound-article', 'http:///example.com/', 'About Test User']);">About Test User</a></td>
<td class="views">1</td>
<td class="more">More</td>
</tr>
<tr>
<td class="label"><a href="http://example.com/" onclick="_gaq.push(['_trackEvent', 'outbound-article', 'http://example.com/', '260']);">260</a></td>
<td class="views">1</td>
<td class="more">More</td>
</tr>
<tr class="alternate">
<td class="label"><a href="http://example.com" onclick="_gaq.push(['_trackEvent', 'outbound-article', 'http://example.com', 'Archives']);">Archives</a></td>
<td class="views">1</td>
<td class="more">More</td>
</tr>
<tr>
<td class="label"><a href="http://example.com" onclick="_gaq.push(['_trackEvent', 'outbound-article', 'http://example.com', '235']);">235</a></td>
<td class="views">1</td>
<td class="more">More</td>
</tr>
</tbody>
</table>
<h2>List Type Tests</h2>
<h3>Definition List</h3>
<dl>
<dt>Definition List Title</dt>
<dd>This is a definition list division.</dd>
<dt>Definition</dt>
<dd>
An exact statement or description of the nature, scope, or meaning of something: <em>our definition of what constitutes poetry.</em>
</dd>
<dt>Gallery</dt>
<dd>A feature introduced with WordPress 2.5, that is specifically an exposition of images attached to a post. In that same vein, an upload is “attached to a post” when you upload it while editing a post.</dd>
<dt>Gravatar</dt>
<dd>A globally recognized avatar (a graphic image or picture that represents a user). A gravatar is associated with an email address, and is maintained by the Gravatar.com service. Using this service, a blog owner can configure their blog so that a users gravatar is displayed along with their comments.</dd>
</dl>
<h3>Unordered List (Nested)</h3>
<ul>
<li>List item one
<ul>
<li>List item one
<ul>
<li>List item one</li>
<li>List item two</li>
<li>List item three</li>
<li>List item four</li>
</ul>
</li>
<li>List item two</li>
<li>List item three</li>
<li>List item four</li>
</ul>
</li>
<li>List item two</li>
<li>List item three</li>
<li>List item four</li>
</ul>
<h3>Ordered List</h3>
<ol>
<li>List item one
<ol>
<li>List item one
<ol>
<li>List item one</li>
<li>List item two</li>
<li>List item three</li>
<li>List item four</li>
</ol>
</li>
<li>List item two</li>
<li>List item three</li>
<li>List item four</li>
</ol>
</li>
<li>List item two</li>
<li>List item three</li>
<li>List item four</li>
</ol>
<h2>HTML Element Tag Tests</h2>
<p>
All other HTML tags listed in the <a href="http://en.support.wordpress.com/code/" onclick="_gaq.push(['_trackEvent', 'outbound-article', 'http://en.support.wordpress.com/code/', 'FAQ']);">FAQ</a>:
</p>
<p>
Here is the address for Automattic, using the
<code>
<address>
</code>
tag:
</p>
<address>
355 1st Street Suite 202<br /> San Francisco, CA 94105<br /> United States
</address>
<p>
This is an example of <a href="http://example.com" onclick="_gaq.push(['_trackEvent', 'outbound-article', 'http://example.com', 'an <anchor>']);">an <code>
<anchor>
</code></a> (otherwise known as a link). This <abbr title="abbreviation">abbr.</abbr> is an example of an <abbr> tag in the middle of a sentence. Here is a <acronym title="three-letter acronym">TLA</acronym> showing off the <code>
<acronym>
</code> tag. What, you want to see <big>some over-sized text</big> using the <code>
<big>
</code> tag? Can you <cite>cite a reference</cite> for that, using the <code>
<cite>
</code> tag? Have you noticed that all of the tag names are displayed <code>in code-form</code>, using the <code>
<code></code>
tag? Similarly, I could
<kbd>emulate keyboard text</kbd>
, using the
<code>
<kbd>
</code>
text tag, or
<tt>emulate teletype text</tt>
using the
<code>
<tt>
</code>
tag.
</p>
<p>
Oh no! I wrote something incorrectly.
<del>Id better delete it</del>
, using the
<code>
<del>
</code>
tag. I could alternately <span style="text-decoration: line-through;">strike something out</span> using the
<code>
<strike>
</code>
tag, or strike something out using the
<code>
<s>
</code>
tag. <em>So many choices</em>, which I emphasize using the
<code>
<em>
</code>
tag. Just to clarify,
<ins>this is some inserted text</ins>
, that Ill highlight using the
<code>
<ins>
</code>
tag.
</p>
<p>
Need to display completely unformatted text, such as a large block of code? Use the
<code>
<pre>
</code>
tag, which lets you display:
</p>
<pre>#container {
float: left;
margin: 0 -240px 0 0;
width: 100%;
}</pre>
<p>
Want to quote the WordPress tagline <q>Code is Poetry</q>? Use the
<code>
<q>
</code>
tag to add quotes around it. <strong>This is strong text</strong> (otherwise known as bold), using the
<code>
<strong>
</code>
tag.
</p>
<p>
Need to write H<sub>2</sub>O or E = MC<sup>2</sup>? You may find great use for <sub>subscripting</sub> text using the
<code>
<sub>
</code>
tag, or for <sup>superscripting</sup> text using the
<code>
<sup>
</code>
tag. Need to call out a
<var>variable</var>
? Use the
<code>
<var>
</code>
tag.
</p>
<h2>Div and Span Tests</h2>
<div>
<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit.</p>
<div class="myclass">
<strong>This is a div with “myclass” class, inside of another div, using the <code>
<div>
</code> tag.
</strong>
</div>
<p>Sed odio nibh, tincidunt adipiscing, pretium nec, tincidunt id, enim. Fusce scelerisque nunc vitae nisl.</p>
</div>
<p>
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. <span><strong>This is a span inside of a paragraph, using the <code>
<span>
</code> tag.
</strong></span> Sed odio nibh, tincidunt adipiscing, pretium nec, tincidunt id, enim. Fusce scelerisque nunc vitae nisl.
</p>
<p>
</div>
<script src='../../dist/jspdf.debug.js'></script>
<script src='../../libs/html2pdf.js'></script>
<script>
var pdf = new jsPDF('p', 'pt', 'letter');
var canvas = pdf.canvas;
canvas.height = 72 * 11;
canvas.width=72 * 8.5;;
// var width = 400;
html2pdf(document.body, pdf,function(pdf) {
var iframe = document.createElement('iframe');
iframe.setAttribute('style','position:absolute;right:0; top:0; bottom:0; height:100%; width:500px');
document.body.appendChild(iframe);
iframe.src = pdf.output('datauristring');
//var div = document.createElement('pre');
//div.innerText=pdf.output();
//document.body.appendChild(div);
}
);
</script>
</body>
</html>

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 74 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 979 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

View File

@ -0,0 +1,14 @@
<script runat="server" type="text/javascript" src="../libs/base64.js"></script>
<script runat="server" type="text/javascript" src="../jspdf.js"></script>
<script runat="server" autoload="true" type="text/javascript">
var doc = new jsPDF();
doc.text(20, 20, 'Hello world!');
doc.text(20, 30, 'This is a server-side Jaxer example.');
content = doc.output();
Jaxer.response.addHeader('Content-Disposition', 'attachment; filename=example.pdf');
Jaxer.response.addHeader('Content-Type', 'application/pdf');
Jaxer.response.setContents(content);
</script>

View File

@ -0,0 +1,70 @@
var doc = new jsPDF();//{unit: 'px'}
doc.setFontSize(12);
doc.text(10, 105, 'ComboBox:');
var d = new ComboBox();
d.T = "ChoiceField1";
d.TI = 1;
d.Rect = [50, 100, 30, 10];
d.Opt = "[(a)(b)(c)]";
d.V = '(b)';
d.DV = '(b)';
doc.addField(d);
doc.text(10, 115, 'ListBox:');
var d2 = new ListBox();
d2.edit = false;
d2.T = "ChoiceField2";
d2.TI = 2;
d2.Rect = [50, 110, 30, 10];
d2.Opt = "[(c)(a)(d)(f)(b)(s)]";
d2.V = '(s)';
d2.BG = [0, 1, 1];
doc.addField(d2);
doc.text(10, 125, 'CheckBox:');
var checkBox = new CheckBox();
checkBox.T = "CheckBox1";
checkBox.Rect = [50, 120, 30, 10];
doc.addField(checkBox);
doc.text(10, 135, 'PushButton:');
var pushButton = new PushButton();
pushButton.T = "PushButton1";
pushButton.Rect = [50, 130, 30, 10];
pushButton.BG = [1, 0, 0];
doc.addField(pushButton);
doc.text(10, 145, 'TextField:');
var textField = new TextField();
textField.Rect = [50, 140, 30, 10];
textField.multiline = true;
textField.V = "The quick brown fox ate the lazy mouse The quick brown fox ate the lazy mouse The quick brown fox ate the lazy mouse";//
textField.T = "TestTextBox";
//textField.Q = 2; // Text-Alignment
doc.addField(textField);
doc.text(10, 155, 'Password:');
var passwordField = new PasswordField();
passwordField.Rect = [50, 150, 30, 10];
doc.addField(passwordField);
doc.text(50, 165, 'RadioGroup:');
var radioGroup = new RadioButton();
radioGroup.V = "/Test";
radioGroup.Subtype = "Form";
doc.addField(radioGroup);
var radioButton1 = radioGroup.createOption("Test");
radioButton1.Rect = [50, 170, 30, 10];
radioButton1.AS = "/Test";
var radioButton2 = radioGroup.createOption("Test2");
radioButton2.Rect = [50, 180, 30, 10];
var radioButton3 = radioGroup.createOption("Test3");
radioButton3.Rect = [50, 190, 20, 10];
radioGroup.setAppearance(AcroForm.Appearance.RadioButton.Cross);

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,382 @@
function demoTwoPageDocument() {
var doc = new jsPDF();
doc.text(20, 20, 'Hello world!');
doc.text(20, 30, 'This is client-side Javascript, pumping out a PDF.');
doc.addPage();
doc.text(20, 20, 'Do you like that?');
// Save the PDF
doc.save('Test.pdf');
}
function demoLandscape() {
var doc = new jsPDF('landscape');
doc.text(20, 20, 'Hello landscape world!');
// Save the PDF
doc.save('Test.pdf');
}
function demoFontSizes() {
var doc = new jsPDF();
doc.setFontSize(22);
doc.text(20, 20, 'This is a title');
doc.setFontSize(16);
doc.text(20, 30, 'This is some normal sized text underneath.');
doc.save('Test.pdf');
}
function demoFontTypes() {
var doc = new jsPDF();
doc.text(20, 20, 'This is the default font.');
doc.setFont("courier");
doc.setFontType("normal");
doc.text(20, 30, 'This is courier normal.');
doc.setFont("times");
doc.setFontType("italic");
doc.text(20, 40, 'This is times italic.');
doc.setFont("helvetica");
doc.setFontType("bold");
doc.text(20, 50, 'This is helvetica bold.');
doc.setFont("courier");
doc.setFontType("bolditalic");
doc.text(20, 60, 'This is courier bolditalic.');
doc.save('Test.pdf');
}
function demoTextColors() {
var doc = new jsPDF();
doc.setTextColor(100);
doc.text(20, 20, 'This is gray.');
doc.setTextColor(150);
doc.text(20, 30, 'This is light gray.');
doc.setTextColor(255,0,0);
doc.text(20, 40, 'This is red.');
doc.setTextColor(0,255,0);
doc.text(20, 50, 'This is green.');
doc.setTextColor(0,0,255);
doc.text(20, 60, 'This is blue.');
// Output as Data URI
doc.output('datauri');
}
function demoMetadata() {
var doc = new jsPDF();
doc.text(20, 20, 'This PDF has a title, subject, author, keywords and a creator.');
// Optional - set properties on the document
doc.setProperties({
title: 'Title',
subject: 'This is the subject',
author: 'James Hall',
keywords: 'generated, javascript, web 2.0, ajax',
creator: 'MEEE'
});
doc.save('Test.pdf');
}
function demoUserInput() {
var name = prompt('What is your name?');
var multiplier = prompt('Enter a number:');
multiplier = parseInt(multiplier);
var doc = new jsPDF();
doc.setFontSize(22);
doc.text(20, 20, 'Questions');
doc.setFontSize(16);
doc.text(20, 30, 'This belongs to: ' + name);
for(var i = 1; i <= 12; i ++) {
doc.text(20, 30 + (i * 10), i + ' x ' + multiplier + ' = ___');
}
doc.addPage();
doc.setFontSize(22);
doc.text(20, 20, 'Answers');
doc.setFontSize(16);
for (i = 1; i <= 12; i ++) {
doc.text(20, 30 + (i * 10), i + ' x ' + multiplier + ' = ' + (i * multiplier));
}
doc.save('Test.pdf');
}
function demoRectangles() {
var doc = new jsPDF();
doc.rect(20, 20, 10, 10); // empty square
doc.rect(40, 20, 10, 10, 'F'); // filled square
doc.setDrawColor(255, 0, 0);
doc.rect(60, 20, 10, 10); // empty red square
doc.setDrawColor(255, 0, 0);
doc.rect(80, 20, 10, 10, 'FD'); // filled square with red borders
doc.setDrawColor(0);
doc.setFillColor(255, 0, 0);
doc.rect(100, 20, 10, 10, 'F'); // filled red square
doc.setDrawColor(0);
doc.setFillColor(255, 0, 0);
doc.rect(120, 20, 10, 10, 'FD'); // filled red square with black borders
doc.setDrawColor(0);
doc.setFillColor(255, 255, 255);
doc.roundedRect(140, 20, 10, 10, 3, 3, 'FD'); // Black square with rounded corners
doc.save('Test.pdf');
}
function demoLines() {
var doc = new jsPDF();
doc.line(20, 20, 60, 20); // horizontal line
doc.setLineWidth(0.5);
doc.line(20, 25, 60, 25);
doc.setLineWidth(1);
doc.line(20, 30, 60, 30);
doc.setLineWidth(1.5);
doc.line(20, 35, 60, 35);
doc.setDrawColor(255,0,0); // draw red lines
doc.setLineWidth(0.1);
doc.line(100, 20, 100, 60); // vertical line
doc.setLineWidth(0.5);
doc.line(105, 20, 105, 60);
doc.setLineWidth(1);
doc.line(110, 20, 110, 60);
doc.setLineWidth(1.5);
doc.line(115, 20, 115, 60);
// Output as Data URI
doc.output('datauri');
}
function demoCircles() {
var doc = new jsPDF();
doc.ellipse(40, 20, 10, 5);
doc.setFillColor(0,0,255);
doc.ellipse(80, 20, 10, 5, 'F');
doc.setLineWidth(1);
doc.setDrawColor(0);
doc.setFillColor(255,0,0);
doc.circle(120, 20, 5, 'FD');
doc.save('Test.pdf');
}
function demoTriangles() {
var doc = new jsPDF();
doc.triangle(60, 100, 60, 120, 80, 110, 'FD');
doc.setLineWidth(1);
doc.setDrawColor(255,0,0);
doc.setFillColor(0,0,255);
doc.triangle(100, 100, 110, 100, 120, 130, 'FD');
doc.save('Test.pdf');
}
function demoImages() {
// Because of security restrictions, getImageFromUrl will
// not load images from other domains. Chrome has added
// security restrictions that prevent it from loading images
// when running local files. Run with: chromium --allow-file-access-from-files --allow-file-access
// to temporarily get around this issue.
var getImageFromUrl = function(url, callback) {
var img = new Image(), data, ret = {
data: null,
pending: true
};
img.onError = function() {
throw new Error('Cannot load image: "'+url+'"');
};
img.onload = function() {
var canvas = document.createElement('canvas');
document.body.appendChild(canvas);
canvas.width = img.width;
canvas.height = img.height;
var ctx = canvas.getContext('2d');
ctx.drawImage(img, 0, 0);
// Grab the image as a jpeg encoded in base64, but only the data
data = canvas.toDataURL('image/jpeg').slice('data:image/jpeg;base64,'.length);
// Convert the data to binary form
data = atob(data);
document.body.removeChild(canvas);
ret['data'] = data;
ret['pending'] = false;
if (typeof callback === 'function') {
callback(data);
}
};
img.src = url;
return ret;
};
// Since images are loaded asyncronously, we must wait to create
// the pdf until we actually have the image data.
// If we already had the jpeg image binary data loaded into
// a string, we create the pdf without delay.
var createPDF = function(imgData) {
var doc = new jsPDF();
doc.addImage(imgData, 'JPEG', 10, 10, 50, 50);
doc.addImage(imgData, 'JPEG', 70, 10, 100, 120);
doc.save('output.pdf');
}
getImageFromUrl('thinking-monkey.jpg', createPDF);
}
function demoStringSplitting() {
var pdf = new jsPDF('p','in','letter')
, sizes = [12, 16, 20]
, fonts = [['Times','Roman'],['Helvetica',''], ['Times','Italic']]
, font, size, lines
, margin = 0.5 // inches on a 8.5 x 11 inch sheet.
, verticalOffset = margin
, loremipsum = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus id eros turpis. Vivamus tempor urna vitae sapien mollis molestie. Vestibulum in lectus non enim bibendum laoreet at at libero. Etiam malesuada erat sed sem blandit in varius orci porttitor. Sed at sapien urna. Fusce augue ipsum, molestie et adipiscing at, varius quis enim. Morbi sed magna est, vel vestibulum urna. Sed tempor ipsum vel mi pretium at elementum urna tempor. Nulla faucibus consectetur felis, elementum venenatis mi mollis gravida. Aliquam mi ante, accumsan eu tempus vitae, viverra quis justo.\n\nProin feugiat augue in augue rhoncus eu cursus tellus laoreet. Pellentesque eu sapien at diam porttitor venenatis nec vitae velit. Donec ultrices volutpat lectus eget vehicula. Nam eu erat mi, in pulvinar eros. Mauris viverra porta orci, et vehicula lectus sagittis id. Nullam at magna vitae nunc fringilla posuere. Duis volutpat malesuada ornare. Nulla in eros metus. Vivamus a posuere libero.'
// Margins:
pdf.setDrawColor(0, 255, 0)
.setLineWidth(1/72)
.line(margin, margin, margin, 11 - margin)
.line(8.5 - margin, margin, 8.5-margin, 11-margin)
// the 3 blocks of text
for (var i in fonts){
if (fonts.hasOwnProperty(i)) {
font = fonts[i]
size = sizes[i]
lines = pdf.setFont(font[0], font[1])
.setFontSize(size)
.splitTextToSize(loremipsum, 7.5)
// Don't want to preset font, size to calculate the lines?
// .splitTextToSize(text, maxsize, options)
// allows you to pass an object with any of the following:
// {
// 'fontSize': 12
// , 'fontStyle': 'Italic'
// , 'fontName': 'Times'
// }
// Without these, .splitTextToSize will use current / default
// font Family, Style, Size.
console.log(lines);
pdf.text(0.5, verticalOffset + size / 72, lines)
verticalOffset += (lines.length + 0.5) * size / 72
}
}
pdf.save('Test.pdf');
}
function demoFromHTML() {
var pdf = new jsPDF('p', 'pt', 'letter')
// source can be HTML-formatted string, or a reference
// to an actual DOM element from which the text will be scraped.
, source = $('#fromHTMLtestdiv')[0]
// we support special element handlers. Register them with jQuery-style
// ID selector for either ID or node name. ("#iAmID", "div", "span" etc.)
// There is no support for any other type of selectors
// (class, of compound) at this time.
, specialElementHandlers = {
// element with id of "bypass" - jQuery style selector
'#bypassme': function(element, renderer){
// true = "handled elsewhere, bypass text extraction"
return true
}
}
margins = {
top: 80,
bottom: 60,
left: 40,
width: 522
};
// all coords and widths are in jsPDF instance's declared units
// 'inches' in this case
pdf.fromHTML(
source // HTML string or DOM elem ref.
, margins.left // x coord
, margins.top // y coord
, {
'width': margins.width // max width of content on PDF
, 'elementHandlers': specialElementHandlers
},
function (dispose) {
// dispose: object with X, Y of the last line add to the PDF
// this allow the insertion of new lines after html
pdf.save('Test.pdf');
},
margins
)
}
function demoTextAlign() {
var pdf = new jsPDF('p', 'pt', 'letter');
pdf.setFillColor(0);
pdf.circle( 140, 50, 2, "F" );
pdf.text( 'This text is normally\raligned.', 140, 50 );
pdf.circle( 140, 120, 2, "F" );
pdf.text( 'This text is centered\raround\rthis point.', 140, 120, 'center' );
pdf.circle( 140, 300, 2, "F" );
pdf.text( 'This text is rotated\rand centered around\rthis point.', 140, 300, 45, 'center' );
pdf.circle( 140, 400, 2, "F" );
pdf.text( 'This text is\raligned to the\rright.', 140, 400, 'right' );
pdf.circle( 140, 550, 2, "F" );
pdf.text( 'This text is\raligned to the\rright.', 140, 550, 45, 'right' );
pdf.circle( 460, 50, 2, "F" );
pdf.text( 'This single line is centered', 460, 50, 'center' );
pdf.circle( 460, 200, 2, "F" );
pdf.text( 'This right aligned text\r\rhas an empty line.', 460, 200, 'right' );
pdf.save('Test.pdf');
}

View File

@ -0,0 +1,11 @@
var doc = new jsPDF();
doc.ellipse(40, 20, 10, 5);
doc.setFillColor(0,0,255);
doc.ellipse(80, 20, 10, 5, 'F');
doc.setLineWidth(1);
doc.setDrawColor(0);
doc.setFillColor(255,0,0);
doc.circle(120, 20, 5, 'FD');

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,30 @@
var doc = new jsPDF();
doc.text(20, 20, 'This is the default font.');
doc.setFont("courier");
doc.setFontType("normal");
doc.text(20, 30, 'This is courier normal.');
doc.setFont("times");
doc.setFontType("italic");
doc.text(20, 40, 'This is times italic.');
doc.setFont("helvetica");
doc.setFontType("bold");
doc.text(20, 50, 'This is helvetica bold.');
doc.setFont("courier");
doc.setFontType("bolditalic");
doc.text(20, 60, 'This is courier bolditalic.');
doc.setFont("times");
doc.setFontType("normal");
doc.text(105, 80, 'This is centred text.', null, null, 'center');
doc.text(105, 90, 'And a little bit more underneath it.', null, null, 'center');
doc.text(200, 100, 'This is right aligned text', null, null, 'right');
doc.text(200, 110, 'And some more', null, null, 'right');
doc.text(20, 120, 'Back to left');
doc.text(20, 140, '10 degrees rotated', null, 10);
doc.text(20, 160, '-10 degrees rotated', null, -10);

View File

@ -0,0 +1,6 @@
var doc = new jsPDF();
doc.setFontSize(22);
doc.text(20, 20, 'This is a title');
doc.setFontSize(16);
doc.text(20, 30, 'This is some normal sized text underneath.');

View File

@ -0,0 +1,15 @@
var doc = new jsPDF();
// We'll make our own renderer to skip this editor
var specialElementHandlers = {
'#editor': function(element, renderer){
return true;
}
};
// All units are in the set measurement for the document
// This can be changed to "pt" (points), "mm" (Default), "cm", "in"
doc.fromHTML($('body').get(0), 15, 15, {
'width': 170,
'elementHandlers': specialElementHandlers
});

View File

@ -0,0 +1,7 @@
var pdf = new jsPDF('p','pt','a4');
pdf.addHTML(document.body,function() {
var string = pdf.output('datauristring');
$('.preview-pane').attr('src', string);
});

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,3 @@
// Kitchen Sink Example

View File

@ -0,0 +1,2 @@
var doc = new jsPDF('landscape');
doc.text(20, 20, 'Hello landscape world!');

View File

@ -0,0 +1,26 @@
var doc = new jsPDF();
doc.line(20, 20, 60, 20); // horizontal line
doc.setLineWidth(0.5);
doc.line(20, 25, 60, 25);
doc.setLineWidth(1);
doc.line(20, 30, 60, 30);
doc.setLineWidth(1.5);
doc.line(20, 35, 60, 35);
doc.setDrawColor(255,0,0); // draw red lines
doc.setLineWidth(0.1);
doc.line(100, 20, 100, 60); // vertical line
doc.setLineWidth(0.5);
doc.line(105, 20, 105, 60);
doc.setLineWidth(1);
doc.line(110, 20, 110, 60);
doc.setLineWidth(1.5);
doc.line(115, 20, 115, 60);

View File

@ -0,0 +1,30 @@
var doc = new jsPDF();
// Empty square
doc.rect(20, 20, 10, 10);
// Filled square
doc.rect(40, 20, 10, 10, 'F');
// Empty red square
doc.setDrawColor(255,0,0);
doc.rect(60, 20, 10, 10);
// Filled square with red borders
doc.setDrawColor(255,0,0);
doc.rect(80, 20, 10, 10, 'FD');
// Filled red square
doc.setDrawColor(0);
doc.setFillColor(255,0,0);
doc.rect(100, 20, 10, 10, 'F');
// Filled red square with black borders
doc.setDrawColor(0);
doc.setFillColor(255,0,0);
doc.rect(120, 20, 10, 10, 'FD');
// Black square with rounded corners
doc.setDrawColor(0);
doc.setFillColor(255, 255, 255);
doc.roundedRect(140, 20, 10, 10, 3, 3, 'FD');

View File

@ -0,0 +1,40 @@
// @TODO: Need to simplify this demo
var doc = new jsPDF('p','in','letter')
, sizes = [12, 16, 20]
, fonts = [['Times','Roman'],['Helvetica',''], ['Times','Italic']]
, font, size, lines
, margin = 0.5 // inches on a 8.5 x 11 inch sheet.
, verticalOffset = margin
, loremipsum = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus id eros turpis. Vivamus tempor urna vitae sapien mollis molestie. Vestibulum in lectus non enim bibendum laoreet at at libero. Etiam malesuada erat sed sem blandit in varius orci porttitor. Sed at sapien urna. Fusce augue ipsum, molestie et adipiscing at, varius quis enim. Morbi sed magna est, vel vestibulum urna. Sed tempor ipsum vel mi pretium at elementum urna tempor. Nulla faucibus consectetur felis, elementum venenatis mi mollis gravida. Aliquam mi ante, accumsan eu tempus vitae, viverra quis justo.\n\nProin feugiat augue in augue rhoncus eu cursus tellus laoreet. Pellentesque eu sapien at diam porttitor venenatis nec vitae velit. Donec ultrices volutpat lectus eget vehicula. Nam eu erat mi, in pulvinar eros. Mauris viverra porta orci, et vehicula lectus sagittis id. Nullam at magna vitae nunc fringilla posuere. Duis volutpat malesuada ornare. Nulla in eros metus. Vivamus a posuere libero.'
// Margins:
doc.setDrawColor(0, 255, 0)
.setLineWidth(1/72)
.line(margin, margin, margin, 11 - margin)
.line(8.5 - margin, margin, 8.5-margin, 11-margin)
// the 3 blocks of text
for (var i in fonts){
if (fonts.hasOwnProperty(i)) {
font = fonts[i]
size = sizes[i]
lines = doc.setFont(font[0], font[1])
.setFontSize(size)
.splitTextToSize(loremipsum, 7.5)
// Don't want to preset font, size to calculate the lines?
// .splitTextToSize(text, maxsize, options)
// allows you to pass an object with any of the following:
// {
// 'fontSize': 12
// , 'fontStyle': 'Italic'
// , 'fontName': 'Times'
// }
// Without these, .splitTextToSize will use current / default
// font Family, Style, Size.
doc.text(0.5, verticalOffset + size / 72, lines)
verticalOffset += (lines.length + 0.5) * size / 72
}
}

View File

@ -0,0 +1,161 @@
/**
* jsPDF PDF Test Harness
* Copyright (c) 2014 Steven Spungin (TwelveTone LLC) steven@twelvetone.tv
*
* Licensed under the MIT License.
* http://opensource.org/licenses/mit-license
*/
/**
* An easy way to view PDF and PDF source code side by side.
*/
pdf_test_harness_init = function(pdf, message) {
var harness = new pdf_test_harness();
var body = document.getElementsByTagName('body')[0];
body.style.display = 'flex';
var div = document.createElement('div');
div.setAttribute('style', 'position:fixed;height:20px;left:0;right:0;background:lightblue');
body.appendChild(div);
harness.header = div;
var div2 = document.createElement('div');
div2.setAttribute('style', 'position:fixed;display:flex;top:20px; bottom:0;left:0;right:0');
body.appendChild(div2);
harness.body = div2;
var btn1 = document.createElement('input');
btn1.setAttribute('type', 'radio');
btn1.setAttribute('name', 'view');
div.appendChild(btn1);
btn1.checked = true;
var lbl1 = document.createElement('label');
lbl1.setAttribute('for', 'btn1');
lbl1.innerHTML = 'PDF'
div.appendChild(lbl1);
var btn2 = document.createElement('input');
btn2.setAttribute('type', 'radio');
btn2.setAttribute('name', 'view');
div.appendChild(btn2);
var lbl2 = document.createElement('label');
lbl2.setAttribute('for', 'btn2');
lbl2.innerHTML = 'Source'
div.appendChild(lbl2);
var btn3 = document.createElement('input');
btn3.setAttribute('type', 'radio');
btn3.setAttribute('name', 'view');
div.appendChild(btn3);
var lbl3 = document.createElement('label');
lbl3.setAttribute('for', 'btn3');
lbl3.innerHTML = 'Both'
div.appendChild(lbl3);
harness.source = document.createElement('pre');
harness.source.setAttribute('style', 'margin-top:0;width:100%;height:100%;position:absolute;top:0px;bottom:0px;overflow:auto');
div2.appendChild(harness.source);
harness.iframe = document.createElement('iframe');
harness.iframe.setAttribute('style', 'width:100%;height:100%;position:absolute;overflow:auto;top:0px;bottom:0px');
div2.appendChild(harness.iframe);
//if (pdf_test_harness.onload) {
//harness.pdf = pdf_test_harness.onload(harness);
if (message) {
message += "<p style='text-align:center;font-style:italic;font-size:.8em'>click to close</p>";
var popup = document.createElement('div');
popup.setAttribute('style', 'z-index:100;margin:100px auto;cursor:pointer;font-size:1.3em;top:50px;background-color:rgb(243, 224, 141);padding:1em;border:1px solid black');
popup.innerHTML = message;
body.appendChild(popup);
popup.onclick = function() {
popup.parentNode.removeChild(popup);
}
}
//}
harness.pdf = pdf;
harness.render('pdf');
btn1.onclick = function() {
harness.render('pdf');
}
btn2.onclick = function() {
harness.render('source');
}
btn3.onclick = function() {
harness.render('both');
}
return harness;
}
pdf_test_harness = function(pdf) {
this.pdf = pdf;
this.onload = undefined;
this.iframe = undefined;
this.entityMap = {
"&" : "&amp;",
"<" : "&lt;",
">" : "&gt;",
'"' : '&quot;',
"'" : '&#39;',
"/" : '&#x2F;'
};
this.escapeHtml = function(string) {
return String(string).replace(/[&<>"'\/]/g, function(s) {
return this.entityMap[s];
}.bind(this));
};
this.getParameterByName = function(name) {
name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"), results = regex.exec(location.search);
return results === null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
};
this.setPdf = function(pdf) {
this.pdf = pdf;
this.rendered = undefined;
this.render(this.view);
};
// generate the pdf, the source code, or both
this.render = function(view) {
this.view = view;
//Current code only lets us render one time.
if (!this.rendered) {
this.rendered = this.pdf.output('datauristring');
this.iframe.src = this.rendered;
var raw = this.pdf.output();
raw = this.escapeHtml(raw);
this.source.innerHTML = raw;
}
if ('pdf' === view) {
this.source.style.display = 'none';
this.iframe.style.display = 'block';
this.iframe.style.width = '100%';
} else if ('source' === view) {
this.iframe.style.display = 'none';
this.source.style.display = 'block';
this.source.style.width = '100%';
}
if ('both' === view) {
raw = this.escapeHtml(raw);
this.iframe.style.width = '50%';
this.iframe.style.position = 'relative';
this.iframe.style.display = 'inline-block';
this.source.style.width = '50%';
this.source.style.position = 'relative';
this.source.style.display = 'inline-block';
}
}
}

View File

@ -0,0 +1,17 @@
var doc = new jsPDF();
// I know the proper spelling is colour ;)
doc.setTextColor(100);
doc.text(20, 20, 'This is gray.');
doc.setTextColor(150);
doc.text(20, 30, 'This is light gray.');
doc.setTextColor(255, 0, 0);
doc.text(20, 40, 'This is red.');
doc.setTextColor(0, 255, 0);
doc.text(20, 50, 'This is green.');
doc.setTextColor(0, 0, 255);
doc.text(20, 60, 'This is blue.');

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,8 @@
var doc = new jsPDF();
doc.triangle(60, 100, 60, 120, 80, 110, 'FD');
doc.setLineWidth(1);
doc.setDrawColor(255,0,0);
doc.setFillColor(0,0,255);
doc.triangle(100, 100, 110, 100, 120, 130, 'FD');

View File

@ -0,0 +1,5 @@
var doc = new jsPDF();
doc.text(20, 20, 'Hello world!');
doc.text(20, 30, 'This is client-side Javascript, pumping out a PDF.');
doc.addPage('a6','l');
doc.text(20, 20, 'Do you like that?');

View File

@ -0,0 +1,27 @@
var name = prompt('What is your name?');
var multiplier = parseInt(prompt('Enter a number:'));
var doc = new jsPDF();
doc.setFontSize(22);
doc.text(20, 20, 'Questions');
doc.setFontSize(16);
doc.text(20, 30, 'This belongs to: ' + name);
for(var i = 1; i <= 12; i ++) {
doc.text(20, 30 + (i * 10), i + ' x ' + multiplier + ' = ___');
}
doc.addPage();
doc.setFontSize(22);
doc.text(20, 20, 'Answers');
doc.setFontSize(16);
for(var i = 1; i <= 12; i ++) {
doc.text(20, 30 + (i * 10), i + ' x ' + multiplier + ' = ' + (i * multiplier));
}
// You wouldn't normally call this - this is just to make the
// demo not look broken as we've disabled auto update.
if (jsPDFEditor !== undefined) {
jsPDFEditor.update(true);
}

View File

@ -0,0 +1,27 @@
/**
* jsPDF [NAME] PlugIn
* Copyright (c) 2014 [YOUR NAME HERE] [WAY TO CONTACT YOU HERE]
*
* Licensed under the MIT License.
* http://opensource.org/licenses/mit-license
*/
(function (jsPDFAPI) {
'use strict';
jsPDFAPI.myFunction = function (args) {
'use strict';
// `this` is _jsPDF object returned when jsPDF is inited (new jsPDF())
// `this.internal` is a collection of useful, specific-to-raw-PDF-stream functions.
// for example, `this.internal.write` function allowing you to write directly to PDF stream.
// `this.line`, `this.text` etc are available directly.
// so if your plugin just wraps complex series of this.line or this.text or other public API calls,
// you don't need to look into `this.internal`
// See _jsPDF object in jspdf.js for complete list of what's available to you.
// it is good practice to return ref to jsPDF instance to make
// the calls chainable.
return this;
};
})(jsPDF.API);

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

View File

@ -0,0 +1,54 @@
<!doctype html>
<!--
/**
* jsPDF Outline PlugIn
* Copyright (c) 2014 Steven Spungin (TwelveTone LLC) steven@twelvetone.tv
*
* Licensed under the MIT License.
* http://opensource.org/licenses/mit-license
*/
-->
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title>Outline Test</title>
<script src='../../libs/require/require.js'></script>
<script>
require_baseUrl_override = '../..';
require(['../../libs/require/config'], function(){
require(['plugins/outline', 'examples/js/test_harness'], function(){
var pdf = new jsPDF('p', 'pt', 'letter');
pdf.text(20, 20, 'Hello');
pdf.addPage();
pdf.text(20, 20, 'PDF');
pdf.addPage();
pdf.text(20, 20, 'World');
pdf.addPage();
pdf.text(20, 20, 'More');
var node = pdf.outline.add(null, 'Test Pages', null);
pdf.outline.add(node, 'Hello', {pageNumber:1});
pdf.outline.add(node, 'PDF', {pageNumber:2});
pdf.outline.add(node, 'World', {pageNumber:3});
var node = pdf.outline.add(null, 'More Pages', null);
pdf.outline.add(node, 'More', {pageNumber:4});
pdf_test_harness_init(pdf, "Open in Reader (or Firefox) to see the PDF outline");
}); // require
}); // require
</script>
</head>
<body style='background-color: silver; margin: 0;'>
</body>
</html>

View File

@ -0,0 +1,302 @@
%PDF-1.3
3 0 obj
<</Type /Page
/Parent 1 0 R
/Resources 2 0 R
/MediaBox [0 0 612.00 792.00]
/Contents 4 0 R
>>
endobj
4 0 obj
<</Length 65>>
stream
0.20 w
0 G
BT
/F1 16 Tf
18.4 TL
0 g
20.00 772.00 Td
(Hello) Tj
ET
endstream
endobj
5 0 obj
<</Type /Page
/Parent 1 0 R
/Resources 2 0 R
/MediaBox [0 0 612.00 792.00]
/Contents 6 0 R
>>
endobj
6 0 obj
<</Length 63>>
stream
0.20 w
0 G
BT
/F1 16 Tf
18.4 TL
0 g
20.00 772.00 Td
(PDF) Tj
ET
endstream
endobj
7 0 obj
<</Type /Page
/Parent 1 0 R
/Resources 2 0 R
/MediaBox [0 0 612.00 792.00]
/Contents 8 0 R
>>
endobj
8 0 obj
<</Length 65>>
stream
0.20 w
0 G
BT
/F1 16 Tf
18.4 TL
0 g
20.00 772.00 Td
(World) Tj
ET
endstream
endobj
9 0 obj
<</Type /Page
/Parent 1 0 R
/Resources 2 0 R
/MediaBox [0 0 612.00 792.00]
/Contents 10 0 R
>>
endobj
10 0 obj
<</Length 64>>
stream
0.20 w
0 G
BT
/F1 16 Tf
18.4 TL
0 g
20.00 772.00 Td
(More) Tj
ET
endstream
endobj
1 0 obj
<</Type /Pages
/Kids [3 0 R 5 0 R 7 0 R 9 0 R ]
/Count 4
>>
endobj
11 0 obj
<</BaseFont/Helvetica/Type/Font
/Encoding/StandardEncoding
/Subtype/Type1>>
endobj
12 0 obj
<</BaseFont/Helvetica-Bold/Type/Font
/Encoding/StandardEncoding
/Subtype/Type1>>
endobj
13 0 obj
<</BaseFont/Helvetica-Oblique/Type/Font
/Encoding/StandardEncoding
/Subtype/Type1>>
endobj
14 0 obj
<</BaseFont/Helvetica-BoldOblique/Type/Font
/Encoding/StandardEncoding
/Subtype/Type1>>
endobj
15 0 obj
<</BaseFont/Courier/Type/Font
/Encoding/StandardEncoding
/Subtype/Type1>>
endobj
16 0 obj
<</BaseFont/Courier-Bold/Type/Font
/Encoding/StandardEncoding
/Subtype/Type1>>
endobj
17 0 obj
<</BaseFont/Courier-Oblique/Type/Font
/Encoding/StandardEncoding
/Subtype/Type1>>
endobj
18 0 obj
<</BaseFont/Courier-BoldOblique/Type/Font
/Encoding/StandardEncoding
/Subtype/Type1>>
endobj
19 0 obj
<</BaseFont/Times-Roman/Type/Font
/Encoding/StandardEncoding
/Subtype/Type1>>
endobj
20 0 obj
<</BaseFont/Times-Bold/Type/Font
/Encoding/StandardEncoding
/Subtype/Type1>>
endobj
21 0 obj
<</BaseFont/Times-Italic/Type/Font
/Encoding/StandardEncoding
/Subtype/Type1>>
endobj
22 0 obj
<</BaseFont/Times-BoldItalic/Type/Font
/Encoding/StandardEncoding
/Subtype/Type1>>
endobj
2 0 obj
<<
/ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
/Font <<
/F1 11 0 R
/F2 12 0 R
/F3 13 0 R
/F4 14 0 R
/F5 15 0 R
/F6 16 0 R
/F7 17 0 R
/F8 18 0 R
/F9 19 0 R
/F10 20 0 R
/F11 21 0 R
/F12 22 0 R
>>
/XObject <<
>>
>>
endobj
23 0 obj
<<
/Type /Outlines
/First 24 0 R
/Last 28 0 R
/Count 6
>>
endobj
24 0 obj
<<
/Title (Test Pages)
/Parent 23 0 R
/Next 28 0 R
/First 25 0 R
/Last 27 0 R
/Count 3
>>
endobj
28 0 obj
<<
/Title (More Pages)
/Parent 23 0 R
/Prev 24 0 R
/First 29 0 R
/Last 29 0 R
/Count 1
>>
endobj
25 0 obj
<<
/Title (Hello)
/Parent 24 0 R
/Next 26 0 R
/Dest [3 0 R /XYZ 0 792 0]
>>
endobj
26 0 obj
<<
/Title (PDF)
/Parent 24 0 R
/Prev 25 0 R
/Next 27 0 R
/Dest [5 0 R /XYZ 0 792 0]
>>
endobj
27 0 obj
<<
/Title (World)
/Parent 24 0 R
/Prev 26 0 R
/Dest [7 0 R /XYZ 0 792 0]
>>
endobj
29 0 obj
<<
/Title (More)
/Parent 28 0 R
/Dest [9 0 R /XYZ 0 792 0]
>>
endobj
30 0 obj
<<
/Producer (jsPDF 1.0.0-trunk)
/CreationDate (D:20141126191205+01'00')
>>
endobj
31 0 obj
<<
/Type /Catalog
/Pages 1 0 R
/OpenAction [3 0 R /FitH null]
/PageLayout /OneColumn
/Outlines 23 0 R
>>
endobj
xref
0 32
0000000000 65535 f
0000000896 00000 n
0000002130 00000 n
0000000009 00000 n
0000000118 00000 n
0000000231 00000 n
0000000340 00000 n
0000000451 00000 n
0000000560 00000 n
0000000673 00000 n
0000000783 00000 n
0000000971 00000 n
0000001063 00000 n
0000001160 00000 n
0000001260 00000 n
0000001364 00000 n
0000001454 00000 n
0000001549 00000 n
0000001647 00000 n
0000001749 00000 n
0000001843 00000 n
0000001936 00000 n
0000002031 00000 n
0000002360 00000 n
0000002436 00000 n
0000002652 00000 n
0000002746 00000 n
0000002851 00000 n
0000002544 00000 n
0000002945 00000 n
0000003025 00000 n
0000003117 00000 n
trailer
<<
/Size 32
/Root 31 0 R
/Info 30 0 R
>>
startxref
3238
%%EOF

View File

@ -0,0 +1,89 @@
<!doctype>
<html>
<head>
<title>jsPDF</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link rel="stylesheet" type="text/css" href="css/smoothness/jquery-ui-1.8.17.custom.css">
<link rel="stylesheet" type="text/css" href="css/main.css">
<script type="text/javascript" src="js/jquery/jquery-1.7.1.min.js"></script>
<script type="text/javascript" src="js/jquery/jquery-ui-1.8.17.custom.min.js"></script>
<script type="text/javascript" src="../jspdf.js"></script>
<script type="text/javascript" src="../libs/FileSaver.js/FileSaver.js"></script>
<script type="text/javascript" src="../libs/BlobBuilder.js/BlobBuilder.js"></script>
<script type="text/javascript" src="../plugins/addimage.js"></script>
<script type="text/javascript" src="../plugins/standard_fonts_metrics.js"></script>
<script type="text/javascript" src="../plugins/split_text_to_size.js"></script>
<script type="text/javascript" src="../plugins/from_html.js"></script>
<script type="text/javascript" src="js/basic.js"></script>
<script>
$(function() {
$("#accordion-basic, #accordion-text, #accordion-graphic").accordion({
autoHeight: false,
navigation: true
});
$( "#tabs" ).tabs();
$(".button").button();
});
</script>
</head>
<body>
<iframe frameborder="0" width="500" height="400"></iframe>
<script>
$(document).ready(function() {
var pdf = new jsPDF('p','in','letter')
, sizes = [12, 16, 20]
, fonts = [['Times','Roman'],['Helvetica',''], ['Times','Italic']]
, font, size, lines
, margin = 0.5 // inches on a 8.5 x 11 inch sheet.
, verticalOffset = margin
, loremipsum = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus id eros turpis. Vivamus tempor urna vitae sapien mollis molestie. Vestibulum in lectus non enim bibendum laoreet at at libero. Etiam malesuada erat sed sem blandit in varius orci porttitor. Sed at sapien urna. Fusce augue ipsum, molestie et adipiscing at, varius quis enim. Morbi sed magna est, vel vestibulum urna. Sed tempor ipsum vel mi pretium at elementum urna tempor. Nulla faucibus consectetur felis, elementum venenatis mi mollis gravida. Aliquam mi ante, accumsan eu tempus vitae, viverra quis justo.\n\nProin feugiat augue in augue rhoncus eu cursus tellus laoreet. Pellentesque eu sapien at diam porttitor venenatis nec vitae velit. Donec ultrices volutpat lectus eget vehicula. Nam eu erat mi, in pulvinar eros. Mauris viverra porta orci, et vehicula lectus sagittis id. Nullam at magna vitae nunc fringilla posuere. Duis volutpat malesuada ornare. Nulla in eros metus. Vivamus a posuere libero.'
// Margins:
pdf.setDrawColor(0, 255, 0)
.setLineWidth(1/72)
.line(margin, margin, margin, 11 - margin)
.line(8.5 - margin, margin, 8.5-margin, 11-margin)
// the 3 blocks of text
for (var i in fonts){
if (fonts.hasOwnProperty(i)) {
font = fonts[i]
size = sizes[i]
lines = pdf.setFont(font[0], font[1])
.setFontSize(size)
.splitTextToSize(loremipsum, 7.5)
// Don't want to preset font, size to calculate the lines?
// .splitTextToSize(text, maxsize, options)
// allows you to pass an object with any of the following:
// {
// 'fontSize': 12
// , 'fontStyle': 'Italic'
// , 'fontName': 'Times'
// }
// Without these, .splitTextToSize will use current / default
// font Family, Style, Size.
console.log(lines);
pdf.text(0.5, verticalOffset + size / 72, lines)
verticalOffset += (lines.length + 0.5) * size / 72
}
}
var string = pdf.output('datauristring');
$('iframe').attr('src', string);
});
</script>
</body>
</html>

View File

@ -0,0 +1,78 @@
<!doctype html>
<!--
/**
* jsPDF Test HTML PlugIn
* Copyright (c) 2014 Steven Spungin (TwelveTone LLC) steven@twelvetone.tv
*
* Licensed under the MIT License.
* http://opensource.org/licenses/mit-license
*/
-->
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title>Test HTML</title>
<script src='../libs/require/require.js'></script>
<script>
require_baseUrl_override = '../';
require(['../libs/require/config'], function(){
require(['test/test_harness', 'plugins/from_html'], function(){
var pdf = new jsPDF('p', 'pt', 'letter');
var ta = document.getElementById('textarea');
pdf.fromHTML(ta.value, 0, 0);
ta.onkeyup = function(){
var pdf = new jsPDF('p', 'pt', 'letter');
pdf.fromHTML(ta.value, 0, 0);
harness.setPdf(pdf);
}
var harness = pdf_test_harness_init(pdf);
harness.header.style.left='50%';
harness.body.style.left='50%';
}); //require
}); //require
</script>
</head>
<body style='background-color: silver; margin: 0;'>
<textarea id='textarea' style='position: fixed; width: 50%; height: 100%'>
<html>
<head>
<style>
.important {
color: darkred;
font-size: 10em;
}
</style>
</head>
<body>
<div>black</div>
<div>black (should not have color parameter in PDF source)</div>
<div style='color: red; font-size: 30px'>hello</div>
<div style='color: rgb(0, 255, 0); font-size: 30px'>hello</div>
<div style='color: #0000FF; font-size: 30px'>hello</div>
<div class='important'>hello</div>
<div>black</div>
<div>black (should not have color parameter in PDF source)</div>
</body>
</html>
</textarea>
</body>
</html>

View File

@ -0,0 +1,85 @@
<!doctype html>
<!--
/**
* jsPDF Test HTML PlugIn
* Copyright (c) 2014 Steven Spungin (TwelveTone LLC) steven@twelvetone.tv
*
* Licensed under the MIT License.
* http://opensource.org/licenses/mit-license
*/
-->
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title>Test HTML</title>
<script src='../libs/require/require.js'></script>
<script>
require_baseUrl_override = '../';
require(['../libs/require/config'], function(){
require(['test/test_harness', 'plugins/from_html'], function(){
var pdf = new jsPDF('p', 'pt', 'letter');
var ta = document.getElementById('textarea');
pdf.fromHTML(ta.value, 0, 0);
ta.onkeyup = function(){
var pdf = new jsPDF('p', 'pt', 'letter');
pdf.fromHTML(ta.value, 0, 0);
harness.setPdf(pdf);
}
ta.onkeyup = function(){
var pdf = new jsPDF('p', 'pt', 'letter');
pdf.fromHTML(ta.value, 0, 0);
harness.setPdf(pdf);
}
var harness = pdf_test_harness_init(pdf);
harness.header.style.left='300px';
harness.body.style.left='300px';
}); //require
}); //require
</script>
<script>
pdf_test_harness.onload = function(harness) {
}
</script>
</head>
<body style='background-color: silver; margin: 0;'>
<textarea id='textarea' style='position:fixed;left:0;width:290px;height:100%'>
<html>
<head>
<style>
.break{
page-break-before:always;
}
body{
font-size:2em;
}
</style>
</head>
<body>
<div>page 1 <em>ok?</em></div>
<div class='break'>page 2</div>
<div class='break' style='margin-top:1in'>page 3</div>
</body>
</html>
</textarea>
</body>
</html>

View File

@ -0,0 +1,85 @@
<!doctype html>
<!--
/**
* jsPDF Insert Page PlugIn
* Copyright (c) 2014 Steven Spungin (TwelveTone LLC) steven@twelvetone.tv
*
* Licensed under the MIT License.
* http://opensource.org/licenses/mit-license
*/
-->
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title>Insert/Move/Delete Page Test</title>
<script type="text/javascript" src="../jspdf.js"></script>
<script type="text/javascript" src="test_harness.js"></script>
<script>
pdf_test_harness.onload = function(harness) {
var pdf = new jsPDF('p', 'pt', 'letter');
var textHeight = 16;
var y = 0;
var pad = 5;
var context;
pdf.text("Page 1", 20, y + textHeight);
y += textHeight + pad;
context = pdf.internal.getPageInfo(1).pageContext;
context.data = 'this is page 1';
pdf.addPage();
y=0;
pdf.text("Page 2", 20, y + textHeight);
y += textHeight + pad;
context = pdf.internal.getPageInfo(2).pageContext;
context.data = 'this is page 2';
pdf.insertPage(1);
y=0;
pdf.text("Inserted Page", 20, y + textHeight);
y += textHeight + pad;
context = pdf.internal.getCurrentPageInfo().pageContext;
context.data = 'this is page inserted';
pdf.movePage(3, 2);
pdf.addPage();
pdf.text("Page Delete Me", 20, y + textHeight);
y += textHeight + pad;
pdf.deletePage(pdf.currentPage);
pdf.insertPage(1);
y=0;
pdf.text("Testing Insert Page", 20, y + textHeight);
y += textHeight + pad;
pdf.text("Order should be [inserted page] [page 2] [page 1]", 20, y + textHeight);
y += textHeight + pad;
pdf.text("[page 4] should have been deleted", 20, y + textHeight);
y += textHeight + pad;
pdf.internal.getCurrentPageInfo().pageContext.data = 'This is the title page';
// verify context was moved
pdf.addPage();
for (var i=1; i<=4; i++){
context = pdf.internal.getPageInfo(i).pageContext;
pdf.text("Page " + i, 20, i*30);
pdf.text("context " + context.data, 30, i*30 + 10);
}
return pdf;
}
</script>
</head>
<body style='background-color: silver; margin: 0;'>
</body>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB