Linux cesa-www-main 6.1.0-49-cloud-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.174-1 (2026-05-26) x86_64
Apache/2.4.68 (Debian)
Server IP : 10.218.0.2 & Your IP : 216.73.216.28
Domains :
Cant Read [ /etc/named.conf ]
User : www-data
Terminal
Auto Root
Create File
Create Folder
Localroot Suggester
Backdoor Destroyer
Readme
/
var /
www /
cesa.co.za /
fpdf /
Delete
Unzip
Name
Size
Permission
Date
Action
cache
[ DIR ]
drwxr-sr-x
2017-05-29 10:14
classes
[ DIR ]
drwxr-sr-x
2013-05-22 07:48
data
[ DIR ]
drwxr-sr-x
2013-05-22 07:49
demo
[ DIR ]
drwxr-sr-x
2017-10-25 14:17
destinations
[ DIR ]
drwxr-sr-x
2013-05-22 07:51
features
[ DIR ]
drwxr-sr-x
2013-05-22 07:52
fonts
[ DIR ]
drwxr-sr-x
2013-05-22 07:54
fpdf
[ DIR ]
drwxr-sr-x
2013-05-22 07:55
help
[ DIR ]
drwxr-sr-x
2013-05-22 07:55
out
[ DIR ]
drwxr-sr-x
2013-05-22 07:56
postscript
[ DIR ]
drwxr-sr-x
2013-05-22 07:57
samples
[ DIR ]
drwxr-sr-x
2013-05-22 07:57
temp
[ DIR ]
drwxr-sr-x
2017-05-29 18:53
templates
[ DIR ]
drwxr-sr-x
2013-05-22 07:58
unittest
[ DIR ]
drwxr-sr-x
2013-05-22 07:59
.cvsignore
181
B
-rw-r--r--
2013-05-22 07:29
ChangeLog
52.56
KB
-rw-r--r--
2013-05-22 07:48
LICENSE
25.82
KB
-rw-r--r--
2013-05-22 07:56
TODO
894
B
-rw-r--r--
2013-05-22 07:58
autofix.url.php
1.8
KB
-rw-r--r--
2013-05-22 07:29
background.image.php
7.33
KB
-rw-r--r--
2013-05-22 07:29
background.position.php
2.17
KB
-rw-r--r--
2013-05-22 07:29
box.block.inline.php
5.24
KB
-rw-r--r--
2013-05-22 07:29
box.block.php
16.2
KB
-rw-r--r--
2013-05-22 07:29
box.body.php
894
B
-rw-r--r--
2013-05-22 07:29
box.br.php
6.07
KB
-rw-r--r--
2013-05-22 07:29
box.button.php
4.03
KB
-rw-r--r--
2013-05-22 07:29
box.button.reset.php
965
B
-rw-r--r--
2013-05-22 07:29
box.button.submit.php
2.86
KB
-rw-r--r--
2013-05-22 07:29
box.checkbutton.php
6.5
KB
-rw-r--r--
2013-05-22 07:29
box.container.php
33.85
KB
-rw-r--r--
2013-05-22 07:29
box.field.pageno.php
2.16
KB
-rw-r--r--
2013-05-22 07:29
box.field.pages.php
2.26
KB
-rw-r--r--
2013-05-22 07:29
box.form.php
842
B
-rw-r--r--
2013-05-22 07:29
box.frame.php
10.75
KB
-rw-r--r--
2013-05-22 07:29
box.generic.formatted.php
33.63
KB
-rw-r--r--
2013-05-22 07:29
box.generic.inline.php
3.72
KB
-rw-r--r--
2013-05-22 07:29
box.generic.php
11.08
KB
-rw-r--r--
2013-05-22 07:29
box.iframe.php
2.21
KB
-rw-r--r--
2013-05-22 07:29
box.img.php
9.76
KB
-rw-r--r--
2013-05-22 07:29
box.inline.control.php
3.15
KB
-rw-r--r--
2013-05-22 07:29
box.inline.php
14.46
KB
-rw-r--r--
2013-05-22 07:29
box.inline.simple.php
893
B
-rw-r--r--
2013-05-22 07:29
box.input.img.php
3.79
KB
-rw-r--r--
2013-05-22 07:29
box.input.password.php
2.05
KB
-rw-r--r--
2013-05-22 07:29
box.input.text.php
2.35
KB
-rw-r--r--
2013-05-22 07:29
box.input.textarea.php
1.91
KB
-rw-r--r--
2013-05-22 07:29
box.legend.php
1.55
KB
-rw-r--r--
2013-05-22 07:29
box.list-item.php
6.77
KB
-rw-r--r--
2013-05-22 07:29
box.note-call.class.php
6.23
KB
-rw-r--r--
2013-05-22 07:29
box.null.php
959
B
-rw-r--r--
2013-05-22 07:29
box.page.margin.class.php
18.82
KB
-rw-r--r--
2013-05-22 07:30
box.page.php
1.05
KB
-rw-r--r--
2013-05-22 07:30
box.php
18.32
KB
-rw-r--r--
2013-05-22 07:30
box.radiobutton.php
3.5
KB
-rw-r--r--
2013-05-22 07:30
box.select.php
4.3
KB
-rw-r--r--
2013-05-22 07:30
box.table.cell.fake.php
1.23
KB
-rw-r--r--
2013-05-22 07:30
box.table.cell.php
9.92
KB
-rw-r--r--
2013-05-22 07:30
box.table.php
43.15
KB
-rw-r--r--
2013-05-22 07:30
box.table.row.php
6.08
KB
-rw-r--r--
2013-05-22 07:30
box.table.section.php
1.52
KB
-rw-r--r--
2013-05-22 07:30
box.text.php
20.09
KB
-rw-r--r--
2013-05-22 07:30
box.text.string.php
1.41
KB
-rw-r--r--
2013-05-22 07:30
box.utils.text-align.inc.php
2.87
KB
-rw-r--r--
2013-05-22 07:30
box.whitespace.php
3.21
KB
-rw-r--r--
2013-05-22 07:30
config.inc.php
5.78
KB
-rw-r--r--
2013-05-22 07:48
config.parse.php
7.61
KB
-rw-r--r--
2013-05-22 07:48
content_type.class.php
506
B
-rw-r--r--
2013-05-22 07:48
converter.class.php
1.4
KB
-rw-r--r--
2013-05-22 07:48
css.background.attachment.inc.php
788
B
-rw-r--r--
2013-05-22 07:48
css.background.color.inc.php
1.98
KB
-rw-r--r--
2013-05-22 07:48
css.background.image.inc.php
1021
B
-rw-r--r--
2013-05-22 07:48
css.background.inc.php
2.13
KB
-rw-r--r--
2013-05-22 07:48
css.background.position.inc.php
3.56
KB
-rw-r--r--
2013-05-22 07:48
css.background.repeat.inc.php
1.47
KB
-rw-r--r--
2013-05-22 07:48
css.border.bottom.color.inc.php
753
B
-rw-r--r--
2013-05-22 07:48
css.border.bottom.inc.php
469
B
-rw-r--r--
2013-05-22 07:48
css.border.bottom.style.inc.php
726
B
-rw-r--r--
2013-05-22 07:48
css.border.bottom.width.inc.php
920
B
-rw-r--r--
2013-05-22 07:48
css.border.collapse.inc.php
812
B
-rw-r--r--
2013-05-22 07:48
css.border.color.inc.php
2.74
KB
-rw-r--r--
2013-05-22 07:48
css.border.inc.php
6.41
KB
-rw-r--r--
2013-05-22 07:48
css.border.left.color.inc.php
718
B
-rw-r--r--
2013-05-22 07:48
css.border.left.inc.php
459
B
-rw-r--r--
2013-05-22 07:48
css.border.left.style.inc.php
712
B
-rw-r--r--
2013-05-22 07:48
css.border.left.width.inc.php
904
B
-rw-r--r--
2013-05-22 07:48
css.border.right.color.inc.php
725
B
-rw-r--r--
2013-05-22 07:48
css.border.right.inc.php
464
B
-rw-r--r--
2013-05-22 07:48
css.border.right.style.inc.php
719
B
-rw-r--r--
2013-05-22 07:48
css.border.right.width.inc.php
912
B
-rw-r--r--
2013-05-22 07:48
css.border.style.inc.php
3.04
KB
-rw-r--r--
2013-05-22 07:49
css.border.top.color.inc.php
711
B
-rw-r--r--
2013-05-22 07:49
css.border.top.inc.php
455
B
-rw-r--r--
2013-05-22 07:49
css.border.top.style.inc.php
705
B
-rw-r--r--
2013-05-22 07:49
css.border.top.width.inc.php
896
B
-rw-r--r--
2013-05-22 07:49
css.border.width.inc.php
2.77
KB
-rw-r--r--
2013-05-22 07:49
css.bottom.inc.php
1.62
KB
-rw-r--r--
2013-05-22 07:49
css.cache.class.php
1018
B
-rw-r--r--
2013-05-22 07:49
css.clear.inc.php
903
B
-rw-r--r--
2013-05-22 07:49
css.color.inc.php
610
B
-rw-r--r--
2013-05-22 07:49
css.colors.inc.php
9.09
KB
-rw-r--r--
2013-05-22 07:49
css.constants.inc.php
6.32
KB
-rw-r--r--
2013-05-22 07:49
css.content.inc.php
3.39
KB
-rw-r--r--
2013-05-22 07:49
css.counter.collection.php
378
B
-rw-r--r--
2013-05-22 07:49
css.counter.php
419
B
-rw-r--r--
2013-05-22 07:49
css.direction.inc.php
685
B
-rw-r--r--
2013-05-22 07:49
css.display.inc.php
1
KB
-rw-r--r--
2013-05-22 07:49
css.float.inc.php
737
B
-rw-r--r--
2013-05-22 07:49
css.font-family.inc.php
1.22
KB
-rw-r--r--
2013-05-22 07:49
css.font-size.inc.php
1.51
KB
-rw-r--r--
2013-05-22 07:49
css.font-style.inc.php
531
B
-rw-r--r--
2013-05-22 07:49
css.font-weight.inc.php
671
B
-rw-r--r--
2013-05-22 07:49
css.font.inc.php
6.67
KB
-rw-r--r--
2013-05-22 07:49
css.frame.inc.php
100
B
-rw-r--r--
2013-05-22 07:49
css.height.inc.php
1.04
KB
-rw-r--r--
2013-05-22 07:49
css.html2ps.html.content.inc.php
984
B
-rw-r--r--
2013-05-22 07:49
css.html2ps.pixels.php
496
B
-rw-r--r--
2013-05-22 07:49
css.html2ps.pseudoelements.inc.php
755
B
-rw-r--r--
2013-05-22 07:49
css.inc.php
4.3
KB
-rw-r--r--
2013-05-22 07:49
css.left.inc.php
693
B
-rw-r--r--
2013-05-22 07:49
css.letter-spacing.inc.php
829
B
-rw-r--r--
2013-05-22 07:49
css.line-height.inc.php
1.88
KB
-rw-r--r--
2013-05-22 07:49
css.list-style-image.inc.php
1.06
KB
-rw-r--r--
2013-05-22 07:49
css.list-style-position.inc.php
695
B
-rw-r--r--
2013-05-22 07:49
css.list-style-type.inc.php
3.66
KB
-rw-r--r--
2013-05-22 07:49
css.list-style.inc.php
1.3
KB
-rw-r--r--
2013-05-22 07:49
css.margin.inc.php
2.87
KB
-rw-r--r--
2013-05-22 07:49
css.max-height.inc.php
1.3
KB
-rw-r--r--
2013-05-22 07:49
css.min-height.inc.php
1.22
KB
-rw-r--r--
2013-05-22 07:49
css.min-width.inc.php
521
B
-rw-r--r--
2013-05-22 07:49
css.orphans.inc.php
407
B
-rw-r--r--
2013-05-22 07:49
css.overflow.inc.php
910
B
-rw-r--r--
2013-05-22 07:49
css.padding.inc.php
2.96
KB
-rw-r--r--
2013-05-22 07:49
css.page-break-after.inc.php
351
B
-rw-r--r--
2013-05-22 07:49
css.page-break-before.inc.php
360
B
-rw-r--r--
2013-05-22 07:49
css.page-break-inside.inc.php
360
B
-rw-r--r--
2013-05-22 07:49
css.page-break.inc.php
813
B
-rw-r--r--
2013-05-22 07:49
css.page.inc.php
484
B
-rw-r--r--
2013-05-22 07:49
css.parse.inc.php
9.29
KB
-rw-r--r--
2013-05-22 07:49
css.parse.media.inc.php
805
B
-rw-r--r--
2013-05-22 07:49
css.parse.properties.php
1.92
KB
-rw-r--r--
2013-05-22 07:49
css.position.inc.php
1.06
KB
-rw-r--r--
2013-05-22 07:49
css.property.collection.php
2.99
KB
-rw-r--r--
2013-05-22 07:49
css.property.declaration.php
1.45
KB
-rw-r--r--
2013-05-22 07:49
css.property.handler.class.php
2.39
KB
-rw-r--r--
2013-05-22 07:49
css.property.stringset.class.php
783
B
-rw-r--r--
2013-05-22 07:49
css.property.sub.class.php
1.69
KB
-rw-r--r--
2013-05-22 07:49
css.property.sub.field.class.php
455
B
-rw-r--r--
2013-05-22 07:49
css.pseudo.add.margin.inc.php
9
B
-rw-r--r--
2013-05-22 07:49
css.pseudo.align.inc.php
1.75
KB
-rw-r--r--
2013-05-22 07:49
css.pseudo.cellpadding.inc.php
587
B
-rw-r--r--
2013-05-22 07:49
css.pseudo.cellspacing.inc.php
587
B
-rw-r--r--
2013-05-22 07:49
css.pseudo.form.action.inc.php
441
B
-rw-r--r--
2013-05-22 07:49
css.pseudo.form.radiogroup.inc.php
477
B
-rw-r--r--
2013-05-22 07:49
css.pseudo.link.destination.inc.php
484
B
-rw-r--r--
2013-05-22 07:49
css.pseudo.link.target.inc.php
955
B
-rw-r--r--
2013-05-22 07:49
css.pseudo.listcounter.inc.php
567
B
-rw-r--r--
2013-05-22 07:49
css.pseudo.localalign.inc.php
588
B
-rw-r--r--
2013-05-22 07:49
css.pseudo.nowrap.inc.php
532
B
-rw-r--r--
2013-05-22 07:49
css.pseudo.table.border.inc.php
2.24
KB
-rw-r--r--
2013-05-22 07:49
css.right.inc.php
702
B
-rw-r--r--
2013-05-22 07:49
css.rules.inc.php
1.98
KB
-rw-r--r--
2013-05-22 07:49
css.rules.page.inc.php
11.19
KB
-rw-r--r--
2013-05-22 07:49
css.ruleset.class.php
9.87
KB
-rw-r--r--
2013-05-22 07:49
css.selectors.inc.php
7.4
KB
-rw-r--r--
2013-05-22 07:49
css.size.inc.php
1.54
KB
-rw-r--r--
2013-05-22 07:49
css.state.class.php
5.15
KB
-rw-r--r--
2013-05-22 07:49
css.table-layout.inc.php
734
B
-rw-r--r--
2013-05-22 07:49
css.text-align.inc.php
1.22
KB
-rw-r--r--
2013-05-22 07:49
css.text-decoration.inc.php
1.54
KB
-rw-r--r--
2013-05-22 07:49
css.text-indent.inc.php
845
B
-rw-r--r--
2013-05-22 07:49
css.text-transform.inc.php
1.1
KB
-rw-r--r--
2013-05-22 07:49
css.top.inc.php
685
B
-rw-r--r--
2013-05-22 07:49
css.utils.inc.php
4.95
KB
-rw-r--r--
2013-05-22 07:49
css.vertical-align.inc.php
4.91
KB
-rw-r--r--
2013-05-22 07:49
css.visibility.inc.php
941
B
-rw-r--r--
2013-05-22 07:49
css.white-space.inc.php
1.02
KB
-rw-r--r--
2013-05-22 07:49
css.widows.inc.php
394
B
-rw-r--r--
2013-05-22 07:49
css.width.inc.php
1.76
KB
-rw-r--r--
2013-05-22 07:49
css.word-spacing.inc.php
817
B
-rw-r--r--
2013-05-22 07:49
css.z-index.inc.php
473
B
-rw-r--r--
2013-05-22 07:49
default.css
7.31
KB
-rw-r--r--
2013-05-22 07:50
destination._http.class.php
618
B
-rw-r--r--
2013-05-22 07:51
destination._interface.class.php
518
B
-rw-r--r--
2013-05-22 07:51
destination.browser.class.php
377
B
-rw-r--r--
2013-05-22 07:50
destination.download.class.php
540
B
-rw-r--r--
2013-05-22 07:50
destination.file.class.php
622
B
-rw-r--r--
2013-05-22 07:51
dispatcher.class.php
713
B
-rw-r--r--
2013-05-22 07:51
doc.anchor.class.php
1.07
KB
-rw-r--r--
2013-05-22 07:51
dom.activelink.inc.php
2.81
KB
-rw-r--r--
2013-05-22 07:51
dom.php4.inc.php
1.5
KB
-rw-r--r--
2013-05-22 07:51
dom.php5.inc.php
1.88
KB
-rw-r--r--
2013-05-22 07:51
encoding.cp1251.inc.php
10.38
KB
-rw-r--r--
2013-05-22 07:51
encoding.cp866.inc.php
10.89
KB
-rw-r--r--
2013-05-22 07:51
encoding.dingbats.inc.php
11.71
KB
-rw-r--r--
2013-05-22 07:51
encoding.entities.inc.php
25.8
KB
-rw-r--r--
2013-05-22 07:51
encoding.glyphs.inc.php
101.68
KB
-rw-r--r--
2013-05-22 07:51
encoding.inc.php
1.61
KB
-rw-r--r--
2013-05-22 07:51
encoding.iso-8859-1.inc.php
10.49
KB
-rw-r--r--
2013-05-22 07:51
encoding.iso-8859-10.inc.php
10.92
KB
-rw-r--r--
2013-05-22 07:51
encoding.iso-8859-11.inc.php
9.63
KB
-rw-r--r--
2013-05-22 07:51
encoding.iso-8859-13.inc.php
10.6
KB
-rw-r--r--
2013-05-22 07:51
encoding.iso-8859-14.inc.php
10.98
KB
-rw-r--r--
2013-05-22 07:51
encoding.iso-8859-15.inc.php
10.55
KB
-rw-r--r--
2013-05-22 07:51
encoding.iso-8859-2.inc.php
16.24
KB
-rw-r--r--
2013-05-22 07:51
encoding.iso-8859-3.inc.php
15.74
KB
-rw-r--r--
2013-05-22 07:51
encoding.iso-8859-4.inc.php
10.71
KB
-rw-r--r--
2013-05-22 07:51
encoding.iso-8859-5.inc.php
10.36
KB
-rw-r--r--
2013-05-22 07:51
encoding.iso-8859-6.inc.php
8.88
KB
-rw-r--r--
2013-05-22 07:51
encoding.iso-8859-7.inc.php
10.22
KB
-rw-r--r--
2013-05-22 07:51
encoding.iso-8859-8.inc.php
5.96
KB
-rw-r--r--
2013-05-22 07:51
encoding.iso-8859-9.inc.php
10.49
KB
-rw-r--r--
2013-05-22 07:51
encoding.koi8-r.inc.php
11.09
KB
-rw-r--r--
2013-05-22 07:51
encoding.symbol.inc.php
10.04
KB
-rw-r--r--
2013-05-22 07:51
encoding.windows-1250.inc.php
17
KB
-rw-r--r--
2013-05-22 07:52
encoding.windows-1251.inc.php
10.39
KB
-rw-r--r--
2013-05-22 07:52
encoding.windows-1252.inc.php
16.32
KB
-rw-r--r--
2013-05-22 07:52
error.php
191
B
-rw-r--r--
2013-05-22 07:52
favicon.ico
1
B
-rw-r--r--
2013-05-22 07:52
fetched_data._html.class.php
405
B
-rw-r--r--
2013-05-22 07:52
fetched_data._interface.class.php
286
B
-rw-r--r--
2013-05-22 07:52
fetched_data.file.class.php
688
B
-rw-r--r--
2013-05-22 07:52
fetched_data.url.class.php
1.31
KB
-rw-r--r--
2013-05-22 07:52
fetcher._interface.class.php
995
B
-rw-r--r--
2013-05-22 07:52
fetcher.local.class.php
357
B
-rw-r--r--
2013-05-22 07:52
fetcher.memory.class.php
600
B
-rw-r--r--
2013-05-22 07:52
fetcher.url.class.php
14.88
KB
-rw-r--r--
2013-05-22 07:52
fetcher.url.curl.class.php
2.6
KB
-rw-r--r--
2013-05-22 07:52
filter.data._interface.class.php
138
B
-rw-r--r--
2013-05-22 07:52
filter.data.doctype.class.php
1.98
KB
-rw-r--r--
2013-05-22 07:52
filter.data.encoding.class.php
889
B
-rw-r--r--
2013-05-22 07:52
filter.data.html2xhtml.class.php
211
B
-rw-r--r--
2013-05-22 07:52
filter.data.ucs2.class.php
283
B
-rw-r--r--
2013-05-22 07:52
filter.data.utf8.class.php
284
B
-rw-r--r--
2013-05-22 07:52
filter.data.xhtml2xhtml.class.php
169
B
-rw-r--r--
2013-05-22 07:52
filter.output._interface.class.php
249
B
-rw-r--r--
2013-05-22 07:52
filter.output.gzip.class.php
391
B
-rw-r--r--
2013-05-22 07:52
filter.output.ps2pdf.class.php
1.28
KB
-rw-r--r--
2013-05-22 07:52
filter.post._interface.class.php
142
B
-rw-r--r--
2013-05-22 07:52
filter.post.positioned.class.php
806
B
-rw-r--r--
2013-05-22 07:52
filter.post.postponed.class.php
765
B
-rw-r--r--
2013-05-22 07:52
filter.pre._interface.class.php
160
B
-rw-r--r--
2013-05-22 07:52
filter.pre.fields.class.php
1.7
KB
-rw-r--r--
2013-05-22 07:52
filter.pre.footnotes.class.php
1.16
KB
-rw-r--r--
2013-05-22 07:52
filter.pre.headfoot.class.php
1.05
KB
-rw-r--r--
2013-05-22 07:52
filter.pre.height-constraint.class.php
1.2
KB
-rw-r--r--
2013-05-22 07:52
flow_context.class.inc.php
11.75
KB
-rw-r--r--
2013-05-22 07:52
flow_viewport.class.inc.php
829
B
-rw-r--r--
2013-05-22 07:52
font.class.php
6.15
KB
-rw-r--r--
2013-05-22 07:52
font.constants.inc.php
228
B
-rw-r--r--
2013-05-22 07:52
font.resolver.class.php
7.41
KB
-rw-r--r--
2013-05-22 07:52
font_factory.class.php
1.51
KB
-rw-r--r--
2013-05-22 07:55
globals.inc.php
51
B
-rw-r--r--
2013-05-22 07:55
globals.php
119
B
-rw-r--r--
2013-05-22 07:55
height.php
7.25
KB
-rw-r--r--
2013-05-22 07:55
html.attrs.inc.php
31.84
KB
-rw-r--r--
2013-05-22 07:56
html2ps.config
7.99
KB
-rw-r--r--
2013-05-22 07:56
html2ps.config.recommended
8.94
KB
-rw-r--r--
2013-05-22 07:56
image.class.php
5.3
KB
-rw-r--r--
2013-05-22 07:56
index.php
185
B
-rw-r--r--
2013-05-22 07:56
inline.content.builder.factory.php
1.03
KB
-rw-r--r--
2013-05-22 07:56
inline.content.builder.normal.php
1.65
KB
-rw-r--r--
2013-05-22 07:56
inline.content.builder.nowrap.php
632
B
-rw-r--r--
2013-05-22 07:56
inline.content.builder.php
53.41
KB
-rw-r--r--
2013-05-22 07:56
inline.content.builder.pre.line.php
1.09
KB
-rw-r--r--
2013-05-22 07:56
inline.content.builder.pre.php
938
B
-rw-r--r--
2013-05-22 07:56
inline.content.builder.pre.wrap.php
1.18
KB
-rw-r--r--
2013-05-22 07:56
layout._interface.class.php
149
B
-rw-r--r--
2013-05-22 07:56
layout.default.class.php
3.25
KB
-rw-r--r--
2013-05-22 07:56
layout.page.breaks.php
21.75
KB
-rw-r--r--
2013-05-22 07:56
layout.vertical.php
1.46
KB
-rw-r--r--
2013-05-22 07:56
list-style.image.php
335
B
-rw-r--r--
2013-05-22 07:56
logger.php
424
B
-rw-r--r--
2013-05-22 07:56
manager.encoding.php
8.57
KB
-rw-r--r--
2013-05-22 07:56
media.layout.inc.php
3.6
KB
-rw-r--r--
2013-05-22 07:56
observer.class.php
89
B
-rw-r--r--
2013-05-22 07:56
ot.class.php
27.21
KB
-rw-r--r--
2013-05-22 07:56
output._generic.class.php
8.72
KB
-rw-r--r--
2013-05-22 07:56
output._generic.pdf.class.php
582
B
-rw-r--r--
2013-05-22 07:56
output._generic.ps.class.php
851
B
-rw-r--r--
2013-05-22 07:56
output._interface.class.php
2.78
KB
-rw-r--r--
2013-05-22 07:56
output.fastps.class.php
12.54
KB
-rw-r--r--
2013-05-22 07:56
output.fastps.l2.class.php
2.95
KB
-rw-r--r--
2013-05-22 07:56
output.fpdf.class.php
11.46
KB
-rw-r--r--
2013-05-22 07:56
output.pcl.class.php
8.35
KB
-rw-r--r--
2013-05-22 07:56
output.pdflib.1.6.class.php
7.66
KB
-rw-r--r--
2013-05-22 07:56
output.pdflib.class.php
12.68
KB
-rw-r--r--
2013-05-22 07:56
output.pdflib.old.class.php
959
B
-rw-r--r--
2013-05-22 07:56
output.png.class.php
15.33
KB
-rw-r--r--
2013-05-22 07:56
parser._interface.class.php
134
B
-rw-r--r--
2013-05-22 07:56
parser.xhtml.class.php
3.24
KB
-rw-r--r--
2013-05-22 07:56
path.php
3.3
KB
-rw-r--r--
2013-05-22 07:56
path.point.php
187
B
-rw-r--r--
2013-05-22 07:56
path.rectangle.php
566
B
-rw-r--r--
2013-05-22 07:56
pdf.fpdf.makefont.php
13.08
KB
-rw-r--r--
2013-05-22 07:56
pdf.fpdf.php
86.35
KB
-rw-r--r--
2013-05-22 07:56
pipeline.class.php
43.81
KB
-rw-r--r--
2013-05-22 07:56
pipeline.factory.class.php
1.17
KB
-rw-r--r--
2013-05-22 07:56
ps.image.encoder.inc.php
8
B
-rw-r--r--
2013-05-22 07:57
ps.image.encoder.simple.inc.php
7.07
KB
-rw-r--r--
2013-05-22 07:57
ps.image.encoder.stream.inc.php
657
B
-rw-r--r--
2013-05-22 07:57
ps.l2.image.encoder.stream.inc.php
1.13
KB
-rw-r--r--
2013-05-22 07:57
ps.l3.image.encoder.stream.inc.php
7.92
KB
-rw-r--r--
2013-05-22 07:57
ps.unicode.inc.php
3.07
KB
-rw-r--r--
2013-05-22 07:57
ps.utils.inc.php
344
B
-rw-r--r--
2013-05-22 07:57
ps.whitespace.inc.php
103
B
-rw-r--r--
2013-05-22 07:57
render.queue.class.php
275
B
-rw-r--r--
2013-05-22 07:57
render.stacking.context.class.php
589
B
-rw-r--r--
2013-05-22 07:57
render.stacking.level.class.php
246
B
-rw-r--r--
2013-05-22 07:57
strategy.link.rendering.normal.php
929
B
-rw-r--r--
2013-05-22 07:57
strategy.page.break.simple.php
370
B
-rw-r--r--
2013-05-22 07:57
strategy.page.break.smart.php
395
B
-rw-r--r--
2013-05-22 07:57
strategy.position.absolute.php
3.07
KB
-rw-r--r--
2013-05-22 07:57
strategy.table.layout.auto.php
10.07
KB
-rw-r--r--
2013-05-22 07:57
strategy.table.layout.fixed.php
381
B
-rw-r--r--
2013-05-22 07:57
strategy.width.absolute.positioned.php
7.54
KB
-rw-r--r--
2013-05-22 07:58
strategy.width.max.natural.php
2.55
KB
-rw-r--r--
2013-05-22 07:58
strategy.width.max.php
2.14
KB
-rw-r--r--
2013-05-22 07:58
strategy.width.min.nowrap.php
1.36
KB
-rw-r--r--
2013-05-22 07:58
strategy.width.min.php
2.01
KB
-rw-r--r--
2013-05-22 07:58
stubs._.inc.php
48
B
-rw-r--r--
2013-05-22 07:58
stubs.common.inc.php
615
B
-rw-r--r--
2013-05-22 07:58
stubs.file_get_contents.inc.php
253
B
-rw-r--r--
2013-05-22 07:58
stubs.file_put_contents.inc.php
133
B
-rw-r--r--
2013-05-22 07:58
stubs.is_executable.inc.php
54
B
-rw-r--r--
2013-05-22 07:58
stubs.memory_get_usage.inc.php
854
B
-rw-r--r--
2013-05-22 07:58
tag.body.inc.php
97
B
-rw-r--r--
2013-05-22 07:58
tag.font.inc.php
97
B
-rw-r--r--
2013-05-22 07:58
tag.frame.inc.php
3.59
KB
-rw-r--r--
2013-05-22 07:58
tag.img.inc.php
98
B
-rw-r--r--
2013-05-22 07:58
tag.input.inc.php
156
B
-rw-r--r--
2013-05-22 07:58
tag.select.inc.php
100
B
-rw-r--r--
2013-05-22 07:58
tag.span.inc.php
97
B
-rw-r--r--
2013-05-22 07:58
tag.table.inc.php
99
B
-rw-r--r--
2013-05-22 07:58
tag.td.inc.php
97
B
-rw-r--r--
2013-05-22 07:58
tag.utils.inc.php
98
B
-rw-r--r--
2013-05-22 07:58
tree.navigation.inc.php
1.68
KB
-rw-r--r--
2013-05-22 07:58
treebuilder.class.php
2.25
KB
-rw-r--r--
2013-05-22 07:58
utils_array.php
1.95
KB
-rw-r--r--
2013-05-22 07:59
utils_graphic.php
1.46
KB
-rw-r--r--
2013-05-22 07:59
utils_number.php
451
B
-rw-r--r--
2013-05-22 07:59
utils_text.php
182
B
-rw-r--r--
2013-05-22 07:59
utils_units.php
1.84
KB
-rw-r--r--
2013-05-22 07:59
utils_url.php
2.22
KB
-rw-r--r--
2013-05-22 07:59
value.background.php
4.81
KB
-rw-r--r--
2013-05-22 07:59
value.border.class.php
5.64
KB
-rw-r--r--
2013-05-22 07:59
value.border.color.class.php
483
B
-rw-r--r--
2013-05-22 07:59
value.border.edge.class.php
7.44
KB
-rw-r--r--
2013-05-22 07:59
value.border.style.class.php
451
B
-rw-r--r--
2013-05-22 07:59
value.border.width.class.php
483
B
-rw-r--r--
2013-05-22 07:59
value.bottom.php
314
B
-rw-r--r--
2013-05-22 07:59
value.color.php
1.14
KB
-rw-r--r--
2013-05-22 07:59
value.content.item.php
5
KB
-rw-r--r--
2013-05-22 07:59
value.content.php
1.01
KB
-rw-r--r--
2013-05-22 07:59
value.font.class.php
1.57
KB
-rw-r--r--
2013-05-22 07:59
value.generic.length.php
2.44
KB
-rw-r--r--
2013-05-22 07:59
value.generic.percentage.php
1.77
KB
-rw-r--r--
2013-05-22 07:59
value.generic.php
294
B
-rw-r--r--
2013-05-22 07:59
value.height.php
314
B
-rw-r--r--
2013-05-22 07:59
value.left.php
308
B
-rw-r--r--
2013-05-22 07:59
value.line-height.class.php
909
B
-rw-r--r--
2013-05-22 07:59
value.list-style.class.php
1.25
KB
-rw-r--r--
2013-05-22 07:59
value.margin.class.php
3.43
KB
-rw-r--r--
2013-05-22 07:59
value.max-height.php
323
B
-rw-r--r--
2013-05-22 07:59
value.min-height.php
323
B
-rw-r--r--
2013-05-22 07:59
value.padding.class.php
3.29
KB
-rw-r--r--
2013-05-22 07:59
value.right.php
311
B
-rw-r--r--
2013-05-22 07:59
value.text-indent.class.php
845
B
-rw-r--r--
2013-05-22 07:59
value.top.php
305
B
-rw-r--r--
2013-05-22 07:59
width.constraint.php
909
B
-rw-r--r--
2013-05-22 07:59
width.php
2.16
KB
-rw-r--r--
2013-05-22 07:59
xhtml.autoclose.inc.php
2.31
KB
-rw-r--r--
2013-05-22 07:59
xhtml.comments.inc.php
240
B
-rw-r--r--
2013-05-22 07:59
xhtml.deflist.inc.php
854
B
-rw-r--r--
2013-05-22 07:59
xhtml.entities.inc.php
2.88
KB
-rw-r--r--
2013-05-22 07:59
xhtml.lists.inc.php
982
B
-rw-r--r--
2013-05-22 07:59
xhtml.p.inc.php
1.16
KB
-rw-r--r--
2013-05-22 07:59
xhtml.script.inc.php
211
B
-rw-r--r--
2013-05-22 07:59
xhtml.selects.inc.php
727
B
-rw-r--r--
2013-05-22 07:59
xhtml.style.inc.php
1.18
KB
-rw-r--r--
2013-05-22 07:59
xhtml.tables.inc.php
4.49
KB
-rw-r--r--
2013-05-22 07:59
xhtml.utils.inc.php
15.36
KB
-rw-r--r--
2013-05-22 07:59
xml.validation.inc.php
326
B
-rw-r--r--
2013-05-22 07:59
Save
Rename
<?php require_once(HTML2PS_DIR.'utils_array.php'); require_once(HTML2PS_DIR.'utils_graphic.php'); require_once(HTML2PS_DIR.'utils_url.php'); require_once(HTML2PS_DIR.'utils_text.php'); require_once(HTML2PS_DIR.'utils_units.php'); require_once(HTML2PS_DIR.'utils_number.php'); require_once(HTML2PS_DIR.'value.color.php'); require_once(HTML2PS_DIR.'config.parse.php'); require_once(HTML2PS_DIR.'flow_context.class.inc.php'); require_once(HTML2PS_DIR.'flow_viewport.class.inc.php'); require_once(HTML2PS_DIR.'output._interface.class.php'); require_once(HTML2PS_DIR.'output._generic.class.php'); require_once(HTML2PS_DIR.'output._generic.pdf.class.php'); require_once(HTML2PS_DIR.'output._generic.ps.class.php'); require_once(HTML2PS_DIR.'output.pdflib.old.class.php'); require_once(HTML2PS_DIR.'output.pdflib.1.6.class.php'); require_once(HTML2PS_DIR.'output.fpdf.class.php'); require_once(HTML2PS_DIR.'output.fastps.class.php'); require_once(HTML2PS_DIR.'output.fastps.l2.class.php'); require_once(HTML2PS_DIR.'output.png.class.php'); // require_once(HTML2PS_DIR.'output.pcl.class.php'); require_once(HTML2PS_DIR.'stubs.common.inc.php'); require_once(HTML2PS_DIR.'media.layout.inc.php'); require_once(HTML2PS_DIR.'box.php'); require_once(HTML2PS_DIR.'box.generic.php'); require_once(HTML2PS_DIR.'box.generic.formatted.php'); require_once(HTML2PS_DIR.'box.container.php'); require_once(HTML2PS_DIR.'box.generic.inline.php'); require_once(HTML2PS_DIR.'box.inline.php'); require_once(HTML2PS_DIR.'box.inline.control.php'); require_once(HTML2PS_DIR.'font.class.php'); require_once(HTML2PS_DIR.'font_factory.class.php'); require_once(HTML2PS_DIR.'box.br.php'); require_once(HTML2PS_DIR.'box.block.php'); require_once(HTML2PS_DIR.'box.page.php'); require_once(HTML2PS_DIR.'box.page.margin.class.php'); require_once(HTML2PS_DIR.'box.body.php'); require_once(HTML2PS_DIR.'box.block.inline.php'); require_once(HTML2PS_DIR.'box.button.php'); require_once(HTML2PS_DIR.'box.button.submit.php'); require_once(HTML2PS_DIR.'box.button.reset.php'); require_once(HTML2PS_DIR.'box.checkbutton.php'); require_once(HTML2PS_DIR.'box.form.php'); require_once(HTML2PS_DIR.'box.frame.php'); require_once(HTML2PS_DIR.'box.iframe.php'); require_once(HTML2PS_DIR.'box.input.text.php'); require_once(HTML2PS_DIR.'box.input.textarea.php'); require_once(HTML2PS_DIR.'box.input.password.php'); require_once(HTML2PS_DIR.'box.legend.php'); require_once(HTML2PS_DIR.'box.list-item.php'); require_once(HTML2PS_DIR.'box.null.php'); require_once(HTML2PS_DIR.'box.radiobutton.php'); require_once(HTML2PS_DIR.'box.select.php'); require_once(HTML2PS_DIR.'box.table.php'); require_once(HTML2PS_DIR.'box.table.cell.php'); require_once(HTML2PS_DIR.'box.table.cell.fake.php'); require_once(HTML2PS_DIR.'box.table.row.php'); require_once(HTML2PS_DIR.'box.table.section.php'); require_once(HTML2PS_DIR.'box.text.php'); require_once(HTML2PS_DIR.'box.text.string.php'); require_once(HTML2PS_DIR.'box.field.pageno.php'); require_once(HTML2PS_DIR.'box.field.pages.php'); require_once(HTML2PS_DIR.'box.whitespace.php'); require_once(HTML2PS_DIR.'box.img.php'); // Inherited from the text box! require_once(HTML2PS_DIR.'box.input.img.php'); require_once(HTML2PS_DIR.'box.utils.text-align.inc.php'); require_once(HTML2PS_DIR.'manager.encoding.php'); require_once(HTML2PS_DIR.'ps.unicode.inc.php'); require_once(HTML2PS_DIR.'ps.utils.inc.php'); require_once(HTML2PS_DIR.'ps.whitespace.inc.php'); require_once(HTML2PS_DIR.'ps.image.encoder.inc.php'); require_once(HTML2PS_DIR.'ps.image.encoder.simple.inc.php'); require_once(HTML2PS_DIR.'ps.l2.image.encoder.stream.inc.php'); require_once(HTML2PS_DIR.'ps.l3.image.encoder.stream.inc.php'); require_once(HTML2PS_DIR.'tag.body.inc.php'); require_once(HTML2PS_DIR.'tag.font.inc.php'); require_once(HTML2PS_DIR.'tag.frame.inc.php'); require_once(HTML2PS_DIR.'tag.input.inc.php'); require_once(HTML2PS_DIR.'tag.img.inc.php'); require_once(HTML2PS_DIR.'tag.select.inc.php'); require_once(HTML2PS_DIR.'tag.span.inc.php'); require_once(HTML2PS_DIR.'tag.table.inc.php'); require_once(HTML2PS_DIR.'tag.td.inc.php'); require_once(HTML2PS_DIR.'tag.utils.inc.php'); require_once(HTML2PS_DIR.'tree.navigation.inc.php'); require_once(HTML2PS_DIR.'html.attrs.inc.php'); require_once(HTML2PS_DIR.'xhtml.autoclose.inc.php'); require_once(HTML2PS_DIR.'xhtml.utils.inc.php'); require_once(HTML2PS_DIR.'xhtml.tables.inc.php'); require_once(HTML2PS_DIR.'xhtml.p.inc.php'); require_once(HTML2PS_DIR.'xhtml.lists.inc.php'); require_once(HTML2PS_DIR.'xhtml.deflist.inc.php'); require_once(HTML2PS_DIR.'xhtml.script.inc.php'); require_once(HTML2PS_DIR.'xhtml.entities.inc.php'); require_once(HTML2PS_DIR.'xhtml.comments.inc.php'); require_once(HTML2PS_DIR.'xhtml.style.inc.php'); require_once(HTML2PS_DIR.'xhtml.selects.inc.php'); require_once(HTML2PS_DIR.'background.image.php'); require_once(HTML2PS_DIR.'background.position.php'); require_once(HTML2PS_DIR.'list-style.image.php'); require_once(HTML2PS_DIR.'height.php'); require_once(HTML2PS_DIR.'width.php'); require_once(HTML2PS_DIR.'css.counter.php'); require_once(HTML2PS_DIR.'css.counter.collection.php'); require_once(HTML2PS_DIR.'css.colors.inc.php'); require_once(HTML2PS_DIR.'css.constants.inc.php'); require_once(HTML2PS_DIR.'css.inc.php'); require_once(HTML2PS_DIR.'css.state.class.php'); require_once(HTML2PS_DIR.'css.cache.class.php'); require_once(HTML2PS_DIR.'css.property.handler.class.php'); require_once(HTML2PS_DIR.'css.property.stringset.class.php'); require_once(HTML2PS_DIR.'css.property.sub.class.php'); require_once(HTML2PS_DIR.'css.property.sub.field.class.php'); require_once(HTML2PS_DIR.'css.utils.inc.php'); require_once(HTML2PS_DIR.'css.parse.inc.php'); require_once(HTML2PS_DIR.'css.parse.media.inc.php'); require_once(HTML2PS_DIR.'css.background.attachment.inc.php'); require_once(HTML2PS_DIR.'css.background.color.inc.php'); require_once(HTML2PS_DIR.'css.background.image.inc.php'); require_once(HTML2PS_DIR.'css.background.repeat.inc.php'); require_once(HTML2PS_DIR.'css.background.position.inc.php'); require_once(HTML2PS_DIR.'css.background.inc.php'); require_once(HTML2PS_DIR.'css.border.inc.php'); require_once(HTML2PS_DIR.'css.border.style.inc.php'); require_once(HTML2PS_DIR.'css.border.collapse.inc.php'); require_once(HTML2PS_DIR.'css.bottom.inc.php'); require_once(HTML2PS_DIR.'css.clear.inc.php'); require_once(HTML2PS_DIR.'css.color.inc.php'); require_once(HTML2PS_DIR.'css.direction.inc.php'); require_once(HTML2PS_DIR.'css.html2ps.html.content.inc.php'); require_once(HTML2PS_DIR.'css.html2ps.pseudoelements.inc.php'); require_once(HTML2PS_DIR.'css.html2ps.pixels.php'); require_once(HTML2PS_DIR.'css.content.inc.php'); require_once(HTML2PS_DIR.'css.display.inc.php'); require_once(HTML2PS_DIR.'css.float.inc.php'); require_once(HTML2PS_DIR.'css.font.inc.php'); require_once(HTML2PS_DIR.'css.height.inc.php'); require_once(HTML2PS_DIR.'css.min-height.inc.php'); require_once(HTML2PS_DIR.'css.max-height.inc.php'); require_once(HTML2PS_DIR.'css.left.inc.php'); require_once(HTML2PS_DIR.'css.letter-spacing.inc.php'); require_once(HTML2PS_DIR.'css.list-style-image.inc.php'); require_once(HTML2PS_DIR.'css.list-style-position.inc.php'); require_once(HTML2PS_DIR.'css.list-style-type.inc.php'); require_once(HTML2PS_DIR.'css.list-style.inc.php'); require_once(HTML2PS_DIR.'css.margin.inc.php'); require_once(HTML2PS_DIR.'css.overflow.inc.php'); require_once(HTML2PS_DIR.'css.padding.inc.php'); require_once(HTML2PS_DIR.'css.page.inc.php'); require_once(HTML2PS_DIR.'css.page-break.inc.php'); require_once(HTML2PS_DIR.'css.page-break-after.inc.php'); require_once(HTML2PS_DIR.'css.page-break-before.inc.php'); require_once(HTML2PS_DIR.'css.page-break-inside.inc.php'); require_once(HTML2PS_DIR.'css.orphans.inc.php'); require_once(HTML2PS_DIR.'css.size.inc.php'); require_once(HTML2PS_DIR.'css.widows.inc.php'); require_once(HTML2PS_DIR.'css.position.inc.php'); require_once(HTML2PS_DIR.'css.right.inc.php'); require_once(HTML2PS_DIR.'css.property.declaration.php'); require_once(HTML2PS_DIR.'css.rules.inc.php'); require_once(HTML2PS_DIR.'css.ruleset.class.php'); require_once(HTML2PS_DIR.'css.selectors.inc.php'); require_once(HTML2PS_DIR.'css.table-layout.inc.php'); require_once(HTML2PS_DIR.'css.text-align.inc.php'); require_once(HTML2PS_DIR.'css.text-decoration.inc.php'); require_once(HTML2PS_DIR.'css.text-transform.inc.php'); require_once(HTML2PS_DIR.'css.text-indent.inc.php'); require_once(HTML2PS_DIR.'css.top.inc.php'); require_once(HTML2PS_DIR.'css.vertical-align.inc.php'); require_once(HTML2PS_DIR.'css.visibility.inc.php'); require_once(HTML2PS_DIR.'css.white-space.inc.php'); require_once(HTML2PS_DIR.'css.width.inc.php'); require_once(HTML2PS_DIR.'css.word-spacing.inc.php'); require_once(HTML2PS_DIR.'css.z-index.inc.php'); require_once(HTML2PS_DIR.'css.pseudo.add.margin.inc.php'); require_once(HTML2PS_DIR.'css.pseudo.align.inc.php'); require_once(HTML2PS_DIR.'css.pseudo.cellspacing.inc.php'); require_once(HTML2PS_DIR.'css.pseudo.cellpadding.inc.php'); require_once(HTML2PS_DIR.'css.pseudo.form.action.inc.php'); require_once(HTML2PS_DIR.'css.pseudo.form.radiogroup.inc.php'); require_once(HTML2PS_DIR.'css.pseudo.link.destination.inc.php'); require_once(HTML2PS_DIR.'css.pseudo.link.target.inc.php'); require_once(HTML2PS_DIR.'css.pseudo.listcounter.inc.php'); require_once(HTML2PS_DIR.'css.pseudo.localalign.inc.php'); require_once(HTML2PS_DIR.'css.pseudo.nowrap.inc.php'); require_once(HTML2PS_DIR.'css.pseudo.table.border.inc.php'); // After all CSS utilities and constants have been initialized, load the default (precomiled) CSS stylesheet require_once(HTML2PS_DIR.'converter.class.php'); require_once(HTML2PS_DIR.'treebuilder.class.php'); require_once(HTML2PS_DIR.'image.class.php'); require_once(HTML2PS_DIR.'fetched_data._interface.class.php'); require_once(HTML2PS_DIR.'fetched_data._html.class.php'); require_once(HTML2PS_DIR.'fetched_data.url.class.php'); require_once(HTML2PS_DIR.'fetched_data.file.class.php'); require_once(HTML2PS_DIR.'filter.data._interface.class.php'); require_once(HTML2PS_DIR.'filter.data.doctype.class.php'); require_once(HTML2PS_DIR.'filter.data.utf8.class.php'); require_once(HTML2PS_DIR.'filter.data.ucs2.class.php'); require_once(HTML2PS_DIR.'filter.data.html2xhtml.class.php'); require_once(HTML2PS_DIR.'filter.data.xhtml2xhtml.class.php'); require_once(HTML2PS_DIR.'parser._interface.class.php'); require_once(HTML2PS_DIR.'parser.xhtml.class.php'); require_once(HTML2PS_DIR.'filter.pre._interface.class.php'); require_once(HTML2PS_DIR.'filter.pre.fields.class.php'); require_once(HTML2PS_DIR.'filter.pre.headfoot.class.php'); require_once(HTML2PS_DIR.'filter.pre.footnotes.class.php'); require_once(HTML2PS_DIR.'filter.pre.height-constraint.class.php'); require_once(HTML2PS_DIR.'layout._interface.class.php'); require_once(HTML2PS_DIR.'layout.default.class.php'); require_once(HTML2PS_DIR.'layout.page.breaks.php'); require_once(HTML2PS_DIR.'filter.post._interface.class.php'); require_once(HTML2PS_DIR.'filter.post.positioned.class.php'); require_once(HTML2PS_DIR.'filter.post.postponed.class.php'); require_once(HTML2PS_DIR.'filter.output._interface.class.php'); require_once(HTML2PS_DIR.'filter.output.ps2pdf.class.php'); require_once(HTML2PS_DIR.'filter.output.gzip.class.php'); require_once(HTML2PS_DIR.'destination._interface.class.php'); require_once(HTML2PS_DIR.'destination._http.class.php'); require_once(HTML2PS_DIR.'destination.browser.class.php'); require_once(HTML2PS_DIR.'destination.download.class.php'); require_once(HTML2PS_DIR.'destination.file.class.php'); require_once(HTML2PS_DIR.'xml.validation.inc.php'); require_once(HTML2PS_DIR.'content_type.class.php'); require_once(HTML2PS_DIR.'dispatcher.class.php'); require_once(HTML2PS_DIR.'observer.class.php'); require_once(HTML2PS_DIR.'strategy.page.break.simple.php'); require_once(HTML2PS_DIR.'strategy.page.break.smart.php'); require_once(HTML2PS_DIR.'strategy.link.rendering.normal.php'); require_once(HTML2PS_DIR.'strategy.position.absolute.php'); require_once(HTML2PS_DIR.'strategy.width.absolute.positioned.php'); require_once(HTML2PS_DIR.'autofix.url.php'); require_once(HTML2PS_DIR.'fetcher._interface.class.php'); require_once(HTML2PS_DIR.'features/_factory.php'); require_once(HTML2PS_DIR.'fetcher.url.class.php'); class Pipeline { var $fetchers; var $data_filters; var $error_message; var $parser; var $pre_tree_filters; var $layout_engine; var $post_tree_filters; var $output_driver; var $output_filters; var $destination; var $_base_url; var $_page_at_rules; var $_counters; var $_footnotes; var $_cssState; var $_css; var $_defaultCSS; var $_dispatcher; var $_current_page_name; var $_page_break_strategy; function Pipeline() { $this->_css = array(); $this->_counters = array(); $this->_footnotes = array(); $this->_base_url = array(''); $this->_reset_page_at_rules(); $this->pre_tree_filters = array(); $this->_dispatcher =& new Dispatcher(); $this->_dispatcher->add_event('before-page-heights'); $this->_dispatcher->add_event('before-page'); $this->_dispatcher->add_event('after-page'); $this->_dispatcher->add_event('before-batch-item'); $this->_dispatcher->add_event('after-batch-item'); $this->_dispatcher->add_event('after-parse'); $this->_dispatcher->add_event('before-document'); $this->_dispatcher->add_event('after-document'); $this->_dispatcher->add_event('before-batch'); $this->_dispatcher->add_event('after-batch'); $this->_page_break_strategy = new StrategyPageBreakSimple(); } function add_feature($feature_name, $params = array()) { $feature_object =& FeatureFactory::get($feature_name); if (is_null($feature_object)) { die(sprintf('No feature "%s" found', $feature_name)); }; $feature_object->install($this, $params); } function add_fetcher(&$fetcher) { array_unshift($this->fetchers, $fetcher); } function calculate_page_heights(&$media, &$box) { return $this->_page_break_strategy->run($this, $media, $box); } function clear_box_id_map() { $GLOBALS['__html_box_id_map'] = array(); } function close() { $this->_dispatcher->fire('after-batch', array('pipeline' => &$this)); $this->output_driver->close(); $this->_output(); $this->output_driver->release(); // Non HTML-specific cleanup // ImageFactory::clear_cache(); } function configure($options) { $defaults = array('compress' => false, 'cssmedia' => 'screen', 'debugbox' => false, 'debugnoclip' => false, 'draw_page_border' => false, 'encoding' => '', 'html2xhtml' => true, 'imagequality_workaround' => false, 'landscape' => false, 'margins' => array('left' => 30, 'right' => 15, 'top' => 15, 'bottom' => 15), 'media' => 'A4', 'method' => 'fpdf', 'mode' => 'html', 'output' => 0, 'pagewidth' => 800, 'pdfversion' => "1.2", 'ps2pdf' => false, 'pslevel' => 3, 'renderfields' => false, 'renderforms' => false, 'renderimages' => true, 'renderlinks' => false, 'scalepoints' => true, 'smartpagebreak' => true, 'transparency_workaround' => false ); // As a reminder: If the input arrays have the same string keys, then the later value for that key will overwrite the previous one. $GLOBALS['g_config'] = array_merge($defaults, $options); // Note that CSS media names should be case-insensitive $GLOBALS['g_config']['cssmedia'] = strtolower($GLOBALS['g_config']['cssmedia']); if ($GLOBALS['g_config']['smartpagebreak']) { $this->_page_break_strategy = new StrategyPageBreakSmart(); } else { $this->_page_break_strategy = new StrategyPageBreakSimple(); }; } function _addFootnote(&$note_call) { $this->_footnotes[] =& $note_call; } // function _fillContent($content) { // $filled = ""; // while (preg_match("/^.*?('.*?'|\".*?\"|counter\(.*?\))(.*)$/", $content, $matches)) { // $data = $matches[1]; // $content = $matches[2]; // if ($data{0} != '\'' && $data{0} != '"') { // $filled .= $this->_fillContentCounter($data); // } else { // $filled .= $this->_fillContentString($data); // }; // }; // return $filled; // } // function _fillContentString($content) { // $unescaped_content = css_process_escapes($content); // $unquoted_content = css_remove_value_quotes($unescaped_content); // return $unquoted_content; // } // function _fillContentCounter($content) { // preg_match("/counter\((.*?)\)/", $content, $matches); // return $this->_getCounter($matches[1]); // } function &get_counters() { $counter_collection =& new CSSCounterCollection(); foreach ($this->_counters as $counter_name => $counter_value) { $counter =& new CSSCounter($counter_name); $counter->set($counter_value); $counter_collection->add($counter); }; return $counter_collection; } function &get_dispatcher() { return $this->_dispatcher; } function get_counter($counter) { if (isset($this->_counters[$counter])) { return $this->_counters[$counter]; }; /** * CSS 2.1: Counters that are not in the scope of any * 'counter-reset', are assumed to have been reset to 0 by a * 'counter-reset' on the root element. */ return 0; } function reset_counter($counter, $value) { $this->_counters[$counter] = $value; } function increment_counter($counter, $value) { $this->_counters[$counter] += $value; } function add_at_rule_page($at_rule) { $selector =& $at_rule->getSelector(); $type = $selector->get_type(); $this->_page_at_rules[$type][] = $at_rule; } function _reset_page_at_rules() { $this->_page_at_rules = array(CSS_PAGE_SELECTOR_ALL => array(), CSS_PAGE_SELECTOR_FIRST => array(), CSS_PAGE_SELECTOR_LEFT => array(), CSS_PAGE_SELECTOR_RIGHT => array(), CSS_PAGE_SELECTOR_NAMED => array()); } function &get_default_css() { return $this->_defaultCSS; } function &get_current_css() { return $this->_css[0]; } function &get_current_css_state() { return $this->_cssState[0]; } function push_css() { array_unshift($this->_css, new CSSRuleset()); } function pop_css() { array_shift($this->_css); } /** * Note that different pages may define different margin boxes (for * example, left and right pages may have different headers). In * this case, we should process @page rules in order of their * specificity (no selector < :left / :right < :first) and extract * margin boxes to be drawn * * @param $page_no Integer current page index (1-based) * @param $media */ function render_margin_boxes($page_no, &$media) { $boxes =& $this->reflow_margin_boxes($page_no, $media); foreach ($boxes as $selector => $box) { $boxes[$selector]->show($this->output_driver); }; // Memleak fix for ($i=0, $size = count($boxes); $i < $size; $i++) { $boxes[$i]->destroy(); }; unset($boxes); } function get_page_media($page_no, &$media) { $page_rules =& $this->get_page_rules($page_no); $size_landscape = $page_rules->get_property_value(CSS_SIZE); if (!is_null($size_landscape)) { $media->set_width($size_landscape['size']['width']); $media->set_height($size_landscape['size']['height']); $media->set_landscape($size_landscape['landscape']); }; $margins = $page_rules->get_property_value(CSS_MARGIN); if (!is_null($margins)) { $media->margins['left'] = $margins->left->calc(mm2pt($media->get_width())) / mm2pt(1) / pt2pt(1); $media->margins['right'] = $margins->right->calc(mm2pt($media->get_width())) / mm2pt(1) / pt2pt(1); $media->margins['top'] = $margins->top->calc(mm2pt($media->get_height())) / mm2pt(1) / pt2pt(1); $media->margins['bottom'] = $margins->bottom->calc(mm2pt($media->get_height())) / mm2pt(1) / pt2pt(1); }; $left_margin = $page_rules->get_property_value(CSS_MARGIN_LEFT); if (!is_null($left_margin)) { $media->margins['left'] = $left_margin->calc(mm2pt($media->get_width())) / mm2pt(1) / pt2pt(1); }; $right_margin = $page_rules->get_property_value(CSS_MARGIN_RIGHT); if (!is_null($right_margin)) { $media->margins['right'] = $right_margin->calc(mm2pt($media->get_width())) / mm2pt(1) / pt2pt(1); }; $top_margin = $page_rules->get_property_value(CSS_MARGIN_TOP); if (!is_null($top_margin)) { $media->margins['top'] = $top_margin->calc(mm2pt($media->get_height())) / mm2pt(1) / pt2pt(1); }; $bottom_margin = $page_rules->get_property_value(CSS_MARGIN_BOTTOM); if (!is_null($bottom_margin)) { $media->margins['bottom'] = $bottom_margin->calc(mm2pt($media->get_height())) / mm2pt(1) / pt2pt(1); }; $pixels = $page_rules->get_property_value(CSS_HTML2PS_PIXELS); if (!is_null($pixels)) { $media->set_pixels($pixels); }; } function &get_page_rules($page_no) { $collection =& new CSSPropertyCollection(); foreach ($this->_page_at_rules[CSS_PAGE_SELECTOR_ALL] as $rule) { $collection->merge($rule->css); }; /** * Check which one of :right/:left selector is applicable (assuming that first page matches :right) */ if ($page_no % 2 == 0) { foreach ($this->_page_at_rules[CSS_PAGE_SELECTOR_LEFT] as $rule) { $collection->merge($rule->css); }; } else { foreach ($this->_page_at_rules[CSS_PAGE_SELECTOR_RIGHT] as $rule) { $collection->merge($rule->css); }; }; if ($page_no == 1) { foreach ($this->_page_at_rules[CSS_PAGE_SELECTOR_FIRST] as $rule) { $collection->merge($rule->css); }; }; return $collection; } function &reflow_page_box($page_no, &$media) { $rules =& $this->get_page_rules($page_no); $box =& BoxPage::create($this, $rules); $box->reflow($media); return $box; } function render_page_box($page_no, &$media) { $box =& $this->reflow_page_box($page_no, $media); $box->show($this->output_driver); $box->destroy(); unset($box); } function &reflow_margin_boxes($page_no, &$media) { $at_rules = $this->_getMarginBoxes($page_no, $media); $boxes = array(); foreach ($at_rules as $at_rule) { $selector = $at_rule->getSelector(); $boxes[$selector] =& BoxPageMargin::create($this, $at_rule); }; foreach ($boxes as $selector => $box) { $linebox_started = false; $previous_whitespace = false; $boxes[$selector]->reflow_whitespace($linebox_started, $previous_whitespace); $boxes[$selector]->reflow_text($this->output_driver); }; foreach ($boxes as $selector => $box) { $boxes[$selector]->reflow($this->output_driver, $media, $boxes); }; return $boxes; } /** * Note that "+" operation on arrays will preserve existing elements; thus * we need to process @page rules in order of decreasing specificity * */ function _getMarginBoxes($page_no, $media) { $applicable_margin_boxes = array(); /** * Check if :first selector is applicable */ if ($page_no == 1) { foreach ($this->_page_at_rules[CSS_PAGE_SELECTOR_FIRST] as $rule) { $applicable_margin_boxes = $applicable_margin_boxes + $rule->getAtRuleMarginBoxes(); }; }; /** * Check which one of :right/:left selector is applicable (assuming that first page matches :right) */ if ($page_no % 2 == 0) { foreach ($this->_page_at_rules[CSS_PAGE_SELECTOR_LEFT] as $rule) { $applicable_margin_boxes = $applicable_margin_boxes + $rule->getAtRuleMarginBoxes(); }; } else { foreach ($this->_page_at_rules[CSS_PAGE_SELECTOR_RIGHT] as $rule) { $applicable_margin_boxes = $applicable_margin_boxes + $rule->getAtRuleMarginBoxes(); }; }; /** * Extract margin boxes from plain @page rules */ foreach ($this->_page_at_rules[CSS_PAGE_SELECTOR_ALL] as $rule) { $applicable_margin_boxes = $applicable_margin_boxes + $rule->getAtRuleMarginBoxes(); }; if (!isset($applicable_margin_boxes[CSS_MARGIN_BOX_SELECTOR_TOP])) { $applicable_margin_boxes[CSS_MARGIN_BOX_SELECTOR_TOP] =& new CSSAtRuleMarginBox(CSS_MARGIN_BOX_SELECTOR_TOP,$this); }; if (!isset($applicable_margin_boxes[CSS_MARGIN_BOX_SELECTOR_TOP_LEFT_CORNER])) { $applicable_margin_boxes[CSS_MARGIN_BOX_SELECTOR_TOP_LEFT_CORNER] =& new CSSAtRuleMarginBox(CSS_MARGIN_BOX_SELECTOR_TOP_LEFT_CORNER,$this); }; if (!isset($applicable_margin_boxes[CSS_MARGIN_BOX_SELECTOR_TOP_LEFT])) { $applicable_margin_boxes[CSS_MARGIN_BOX_SELECTOR_TOP_LEFT] =& new CSSAtRuleMarginBox(CSS_MARGIN_BOX_SELECTOR_TOP_LEFT,$this); }; if (!isset($applicable_margin_boxes[CSS_MARGIN_BOX_SELECTOR_TOP_CENTER])) { $applicable_margin_boxes[CSS_MARGIN_BOX_SELECTOR_TOP_CENTER] =& new CSSAtRuleMarginBox(CSS_MARGIN_BOX_SELECTOR_TOP_CENTER,$this); }; if (!isset($applicable_margin_boxes[CSS_MARGIN_BOX_SELECTOR_TOP_RIGHT])) { $applicable_margin_boxes[CSS_MARGIN_BOX_SELECTOR_TOP_RIGHT] =& new CSSAtRuleMarginBox(CSS_MARGIN_BOX_SELECTOR_TOP_RIGHT,$this); }; if (!isset($applicable_margin_boxes[CSS_MARGIN_BOX_SELECTOR_TOP_RIGHT_CORNER])) { $applicable_margin_boxes[CSS_MARGIN_BOX_SELECTOR_TOP_RIGHT_CORNER] =& new CSSAtRuleMarginBox(CSS_MARGIN_BOX_SELECTOR_TOP_RIGHT_CORNER,$this); }; if (!isset($applicable_margin_boxes[CSS_MARGIN_BOX_SELECTOR_BOTTOM])) { $applicable_margin_boxes[CSS_MARGIN_BOX_SELECTOR_BOTTOM] =& new CSSAtRuleMarginBox(CSS_MARGIN_BOX_SELECTOR_BOTTOM,$this); }; if (!isset($applicable_margin_boxes[CSS_MARGIN_BOX_SELECTOR_BOTTOM_LEFT_CORNER])) { $applicable_margin_boxes[CSS_MARGIN_BOX_SELECTOR_BOTTOM_LEFT_CORNER] =& new CSSAtRuleMarginBox(CSS_MARGIN_BOX_SELECTOR_BOTTOM_LEFT_CORNER,$this); }; if (!isset($applicable_margin_boxes[CSS_MARGIN_BOX_SELECTOR_BOTTOM_LEFT])) { $applicable_margin_boxes[CSS_MARGIN_BOX_SELECTOR_BOTTOM_LEFT] =& new CSSAtRuleMarginBox(CSS_MARGIN_BOX_SELECTOR_BOTTOM_LEFT,$this); }; if (!isset($applicable_margin_boxes[CSS_MARGIN_BOX_SELECTOR_BOTTOM_CENTER])) { $applicable_margin_boxes[CSS_MARGIN_BOX_SELECTOR_BOTTOM_CENTER] =& new CSSAtRuleMarginBox(CSS_MARGIN_BOX_SELECTOR_BOTTOM_CENTER,$this); }; if (!isset($applicable_margin_boxes[CSS_MARGIN_BOX_SELECTOR_BOTTOM_RIGHT])) { $applicable_margin_boxes[CSS_MARGIN_BOX_SELECTOR_BOTTOM_RIGHT] =& new CSSAtRuleMarginBox(CSS_MARGIN_BOX_SELECTOR_BOTTOM_RIGHT,$this); }; if (!isset($applicable_margin_boxes[CSS_MARGIN_BOX_SELECTOR_BOTTOM_RIGHT_CORNER])) { $applicable_margin_boxes[CSS_MARGIN_BOX_SELECTOR_BOTTOM_RIGHT_CORNER] =& new CSSAtRuleMarginBox(CSS_MARGIN_BOX_SELECTOR_BOTTOM_RIGHT_CORNER,$this); }; if (!isset($applicable_margin_boxes[CSS_MARGIN_BOX_SELECTOR_LEFT_TOP])) { $applicable_margin_boxes[CSS_MARGIN_BOX_SELECTOR_LEFT_TOP] =& new CSSAtRuleMarginBox(CSS_MARGIN_BOX_SELECTOR_LEFT_TOP,$this); }; if (!isset($applicable_margin_boxes[CSS_MARGIN_BOX_SELECTOR_LEFT_MIDDLE])) { $applicable_margin_boxes[CSS_MARGIN_BOX_SELECTOR_LEFT_MIDDLE] =& new CSSAtRuleMarginBox(CSS_MARGIN_BOX_SELECTOR_LEFT_MIDDLE,$this); }; if (!isset($applicable_margin_boxes[CSS_MARGIN_BOX_SELECTOR_LEFT_BOTTOM])) { $applicable_margin_boxes[CSS_MARGIN_BOX_SELECTOR_LEFT_BOTTOM] =& new CSSAtRuleMarginBox(CSS_MARGIN_BOX_SELECTOR_LEFT_BOTTOM,$this); }; if (!isset($applicable_margin_boxes[CSS_MARGIN_BOX_SELECTOR_RIGHT_TOP])) { $applicable_margin_boxes[CSS_MARGIN_BOX_SELECTOR_RIGHT_TOP] =& new CSSAtRuleMarginBox(CSS_MARGIN_BOX_SELECTOR_RIGHT_TOP,$this); }; if (!isset($applicable_margin_boxes[CSS_MARGIN_BOX_SELECTOR_RIGHT_MIDDLE])) { $applicable_margin_boxes[CSS_MARGIN_BOX_SELECTOR_RIGHT_MIDDLE] =& new CSSAtRuleMarginBox(CSS_MARGIN_BOX_SELECTOR_RIGHT_MIDDLE,$this); }; if (!isset($applicable_margin_boxes[CSS_MARGIN_BOX_SELECTOR_RIGHT_BOTTOM])) { $applicable_margin_boxes[CSS_MARGIN_BOX_SELECTOR_RIGHT_BOTTOM] =& new CSSAtRuleMarginBox(CSS_MARGIN_BOX_SELECTOR_RIGHT_BOTTOM,$this); }; return $applicable_margin_boxes; } function _process_item($data_id, &$media, $offset=0) { $this->_dispatcher->fire('before-batch-item', array('pipeline' => &$this)); $box =& $this->_layout_item($data_id, $media, $offset, $context, $postponed_filter); if (is_null($box)) { error_log(sprintf(_('Could not fetch: %s'), (string)$data_id)); return true; }; $this->_show_item($box, $offset, $context, $media, $postponed_filter); // Clear CSS for this item $this->pop_css(); $this->_defaultCSS = null; // Memory leak fix: caused by circular references? $box->destroy(); $this->_dispatcher->fire('after-batch-item', array('pipeline' => &$this)); return true; } function _show_item(&$box, $offset, &$context, &$media, &$postponed_filter) { $context->sort_absolute_positioned_by_z_index(); $this->_dispatcher->fire('before-page-heights', array('pipeline' => &$this, 'document' => &$box, 'media' => &$media)); // Make batch-processing offset $page_heights = $this->calculate_page_heights($media, $box); $box->offset(0, $offset); $box->reflow_anchors($this->output_driver, $this->output_driver->anchors, $page_heights); $this->_dispatcher->fire('before-document', array('pipeline' => &$this, 'document' => &$box, 'page-heights' => &$page_heights, 'media' => &$media)); $expected_pages = count($page_heights); $this->output_driver->set_expected_pages($expected_pages); $this->reset_counter('pages', $expected_pages); $this->reset_counter('page', 0); // Output PDF pages using chosen PDF driver for ($i = 0; $i < $expected_pages; $i++) { $this->get_page_media(1, $media); $this->output_driver->update_media($media); $this->_setupScales($media); $current_page_offset = $i == 0 ? 0 : $page_heights[$i-1]; $current_page_height = $page_heights[$i]; $this->output_driver->next_page($current_page_offset); // Preparen list of postponed (floating and relative-positioned) boxes for the current page $postponed_filter->process($box, null, $this); $this->reset_counter('footnote', 0); $this->increment_counter('page', 1); $this->output_driver->save(); /** * Note that margin boxes should be rendered before 'setup_clip', as it will trim all * content rendered outside the 'main' page area */ $this->render_margin_boxes($i+1, $media); $this->render_page_box($i+1, $media); $this->output_driver->setPageHeight($current_page_height); $this->output_driver->setup_clip(); $this->_dispatcher->fire('before-page', array('pipeline' => &$this, 'document' => &$box, 'pageno' => $i)); if (is_null($box->show($this->output_driver))) { error_log('Pipeline::_process_item: output routine failed'); return null; }; /** * Show postponed boxes - relative and floating boxes, as they should be * shown over boxes on the same layer */ $this->output_driver->show_postponed(); $this->renderAbsolutePositioned($context); $this->output_driver->restore(); $this->renderFixedPositioned($context); $this->renderFootnotes(); global $g_config; if ($g_config['draw_page_border']) { $this->output_driver->draw_page_border(); }; $this->_dispatcher->fire('after-page', array('pipeline' => &$this, 'document' => &$box, 'pageno' => $i)); }; $this->_dispatcher->fire('after-document', array('pipeline' => &$this, 'document' => &$box)); } function _output() { $temporary_output_filename = $this->output_driver->get_filename(); for ($i=0; $i<count($this->output_filters); $i++) { $temporary_output_filename = $this->output_filters[$i]->process($temporary_output_filename); }; // Determine the content type of the result $content_type = null; $i = count($this->output_filters)-1; while (($i >= 0) && (is_null($content_type))) { $content_type = $this->output_filters[$i]->content_type(); $i--; }; if (is_null($content_type)) { $content_type = $this->output_driver->content_type(); }; $this->destination->process($temporary_output_filename, $content_type); unlink($temporary_output_filename); } function set_destination(&$destination) { $this->destination =& $destination; } function set_output_driver(&$output_driver) { $this->output_driver =& $output_driver; } function &fetch($data_id) { if (count($this->fetchers) == 0) { ob_start(); include(HTML2PS_DIR.'templates/error._no_fetchers.tpl'); $this->error_message = ob_get_contents(); ob_end_clean(); $null = null; return $null; }; // Fetch data for ($i=0; $i<count($this->fetchers); $i++) { $data = $this->fetchers[$i]->get_data($data_id); if ($data != null) { $this->push_base_url($this->fetchers[$i]->get_base_url()); return $data; }; }; if (defined('DEBUG_MODE')) { error_log(sprintf('Could not fetch %s', $data_id)); }; $null = null; return $null; } function process($data_id, &$media) { return $this->process_batch(array($data_id), $media); } function _setupScales(&$media) { global $g_config; global $g_px_scale; global $g_pt_scale; $g_px_scale = floor(mm2pt($media->width() - $media->margins['left'] - $media->margins['right'])) / $media->pixels; if ($g_config['scalepoints']) { $g_pt_scale = $g_px_scale * 1.33; // This is a magic number, just don't touch it, or everything will explode! } else { $g_pt_scale = 1.0; }; } /** * Processes an set of URLs ot once; every URL is rendered on the separate page and * merged to one PDF file. * * Note: to reduce peak memory requirement, URLs are processed one-after-one. * * @param Array $data_id_array Array of page identifiers to be processed (usually URLs or files paths) * @param Media $media Object describing the media to render for (size, margins, orientaiton & resolution) */ function process_batch($data_id_array, &$media) { $this->clear_box_id_map(); // Save and disable magic_quotes_runtime $mq_runtime = get_magic_quotes_runtime(); set_magic_quotes_runtime(0); $this->_prepare($media); $this->_dispatcher->fire('before-batch', array('pipeline' => &$this)); $i = 0; $offset = 0; foreach ($data_id_array as $data_id) { $this->_process_item($data_id, $media, $offset); $i++; $offset = $this->output_driver->offset; }; $this->close(); // Restore magic_quotes_runtime setting set_magic_quotes_runtime($mq_runtime); return true; } function error_message() { $message = file_get_contents(HTML2PS_DIR.'templates/error._header.tpl'); $message .= $this->error_message; for ($i=0; $i<count($this->fetchers); $i++) { $message .= $this->fetchers[$i]->error_message(); }; $message .= $this->output_driver->error_message(); $message .= file_get_contents(HTML2PS_DIR.'templates/error._footer.tpl'); return $message; } function push_base_url($url) { array_unshift($this->_base_url, $url); } function pop_base_url() { array_shift($this->_base_url); } function get_base_url() { return $this->_base_url[0]; } function &get_output_driver() { return $this->output_driver; } function guess_url($src) { return guess_url($src, $this->get_base_url()); } function renderFootnotes() { /** * Render every footnote defined (note-call element is visible) on a current page */ $footnote_y = $this->output_driver->getFootnoteTop() - FOOTNOTE_LINE_TOP_GAP - FOOTNOTE_LINE_BOTTOM_GAP; $footnote_x = $this->output_driver->getPageLeft(); $footnotes_found = false; foreach ($this->_footnotes as $footnote) { // Note that footnote area for current page have been already defined, // as show_foonote is called after note-call boxes were placed. if ($this->output_driver->contains($footnote->_note_call_box)) { $footnotes_found = true; $footnote_y = $footnote->show_footnote($this->output_driver, $footnote_x, $footnote_y); $footnote_y -= FOOTNOTE_GAP; }; }; /** * Draw thin line separating footnotes from page content */ if ($footnotes_found) { $this->output_driver->setrgbcolor(0,0,0); $this->output_driver->moveto($this->output_driver->getPageLeft(), $this->output_driver->getFootnoteTop() - FOOTNOTE_LINE_TOP_GAP); $this->output_driver->lineto($this->output_driver->getPageLeft() + $this->output_driver->getPageWidth()*FOOTNOTE_LINE_PERCENT/100, $this->output_driver->getFootnoteTop() - FOOTNOTE_LINE_TOP_GAP); $this->output_driver->stroke(); }; } function renderAbsolutePositioned(&$context) { for ($j=0, $size = count($context->absolute_positioned); $j<$size; $j++) { $current_box =& $context->absolute_positioned[$j]; if ($current_box->get_css_property(CSS_VISIBILITY) === VISIBILITY_VISIBLE) { $this->output_driver->save(); $current_box->_setupClip($this->output_driver); if (is_null($current_box->show($this->output_driver))) { return null; }; $this->output_driver->restore(); }; }; $this->output_driver->show_postponed_in_absolute(); } function renderFixedPositioned(&$context) { for ($j=0, $size = count($context->fixed_positioned); $j<$size; $j++) { $current_box =& $context->fixed_positioned[$j]; if ($current_box->get_css_property(CSS_VISIBILITY) === VISIBILITY_VISIBLE) { $this->output_driver->save(); $current_box->_setupClip($this->output_driver); if (is_null($current_box->show_fixed($this->output_driver))) { return null; }; $this->output_driver->restore(); }; }; $this->output_driver->show_postponed_in_fixed(); } function _prepare(&$media) { $this->_setupScales($media); $GLOBALS['g_media'] =& $media; $this->output_driver->reset($media); } function reset_css() { $css_cache = CSSCache::get(); $this->_defaultCSS = $css_cache->compile('resource://default.css', file_get_contents(HTML2PS_DIR.'default.css'), $this); $this->_css = array(); $this->push_css(); $this->_cssState = array(new CSSState(CSS::get())); } function &_layout_item($data_id, &$media, $offset, &$context, &$postponed_filter) { $this->_reset_page_at_rules(); $this->reset_css(); $font = $this->_cssState[0]->get_property(CSS_FONT); $font->units2pt(0); $this->_cssState[0]->set_property(CSS_FONT, $font); $data = $this->fetch($data_id); if (is_null($data)) { $dummy = null; return $dummy; }; // Run raw data filters for ($i = 0; $i < count($this->data_filters); $i++) { $data = $this->data_filters[$i]->process($data); }; // Parse the raw data $box =& $this->parser->process($data->get_content(), $this, $media); $this->_dispatcher->fire('after-parse', array('pipeline' => &$this, 'document' => &$box, 'media' => $media)); /** * Run obligatory tree filters */ /** * height-constraint processing filter; */ $filter = new PreTreeFilterHeightConstraint(); $filter->process($box, $data, $this); /** * Footnote support filter */ $filter = new PreTreeFilterFootnotes(); $filter->process($box, $data, $this); // Run pre-layout tree filters for ($i=0, $size = count($this->pre_tree_filters); $i < $size; $i++) { $this->pre_tree_filters[$i]->process($box, $data, $this); }; $context = new FlowContext; /** * Extract absolute/fixed positioned boxes */ $positioned_filter = new PostTreeFilterPositioned($context); $positioned_filter->process($box, null, $this); $postponed_filter = new PostTreeFilterPostponed($this->output_driver); $postponed_filter->process($box, null, $this); $this->output_driver->prepare(); // Force generation of custom characters for margin boxes for ($i = 0; $i <= 1; $i++) { $this->get_page_media(1, $media); $at_rules = $this->_getMarginBoxes($i, $media); $boxes = array(); foreach ($at_rules as $at_rule) { $selector = $at_rule->getSelector(); $boxes[$selector] =& BoxPageMargin::create($this, $at_rule); }; }; $status = $this->layout_engine->process($box, $media, $this->output_driver, $context); if (is_null($status)) { error_log('Pipeline::_process_item: layout routine failed'); $dummy = null; return $dummy; }; // Run post-layout tree filters for ($i=0; $i<count($this->post_tree_filters); $i++) { $this->post_tree_filters[$i]->process($box); }; return $box; } function &getDispatcher() { return $this->_dispatcher; } function get_current_page_name() { return $this->_current_page_name; } function set_current_page_name($name) { $this->_current_page_name = $name; } } ?>