BEGIN { plan
tests
=> 128 };
ok(1);
{
my
$htmldoc
= new HTML::HTMLDoc();
ok(
ref
(
$htmldoc
),
qr/HTML::HTMLDoc/
);
ok(
$htmldoc
->_config(
'mode'
),
'ipc'
);
ok(
$htmldoc
->_test_params(
'asdf'
, [
'jhgjhg'
,
'trztr'
,
'asdf'
,
'jhkjh'
]), 1 );
ok(
$htmldoc
->_test_params(
'asdf'
, [
'jhgjhg'
,
'trztr'
,
'1asdf'
,
'jhkjh'
]), 0 );
$htmldoc
->_set_doc_config(
'testkey'
,
'testvalue'
);
ok(
$htmldoc
->_get_doc_config(
'testkey'
),
'testvalue'
);
$htmldoc
->_delete_doc_config(
'testkey'
);
ok(
$htmldoc
->_get_doc_config(
'testkey'
),
undef
);
$htmldoc
->_set_doc_config(
'testkey'
, [
'one'
,
'two'
,
'tree'
]);
ok(
$htmldoc
->_get_doc_config(
'testkey'
)->[1],
'two'
);
$htmldoc
->_delete_doc_config(
'testkey'
);
ok(
$htmldoc
->_get_doc_config(
'testkey'
),
undef
);
$htmldoc
->set_page_size(
'a4'
);
ok(
$htmldoc
->get_page_size(),
'a4'
);
$htmldoc
->set_page_size(
'letter'
);
ok(
$htmldoc
->get_page_size(),
'letter'
);
$htmldoc
->set_page_size(
'10x10cm'
);
ok(
$htmldoc
->get_page_size(),
'10x10cm'
);
$htmldoc
->set_owner_password(
'secure'
);
ok(
$htmldoc
->_get_doc_config(
'owner-password'
),
'secure'
);
$htmldoc
->set_user_password(
'secure'
);
ok(
$htmldoc
->_get_doc_config(
'user-password'
),
'secure'
);
$htmldoc
->set_permissions(
'all'
);
ok(
$htmldoc
->_get_doc_config(
'permissions'
)->[0],
'all'
);
$htmldoc
->set_permissions(
'none'
);
ok(
$htmldoc
->_get_doc_config(
'permissions'
)->[0],
'none'
);
$htmldoc
->_delete_doc_config(
'permissions'
);
$htmldoc
->set_jpeg_compression();
ok(
$htmldoc
->_get_doc_config(
'jpeg'
),
"75"
);
$htmldoc
->set_jpeg_compression(0);
ok(
$htmldoc
->_get_doc_config(
'jpeg'
), 0);
$htmldoc
->set_jpeg_compression(100);
ok(
$htmldoc
->_get_doc_config(
'jpeg'
), 100);
$htmldoc
->_delete_doc_config(
'jpeg'
);
$htmldoc
->best_image_quality();
ok(
$htmldoc
->_get_doc_config(
'jpeg'
), 100);
$htmldoc
->_delete_doc_config(
'jpeg'
);
$htmldoc
->low_image_quality();
ok(
$htmldoc
->_get_doc_config(
'jpeg'
), 25);
my
$okcounter
= 0;
my
@noperms
= (
'no-annotate'
,
'no-copy'
,
'no-modify'
,
'no-print'
);
foreach
my
$perm
(
@noperms
) {
$htmldoc
->set_permissions(
$perm
);
}
my
$stored
=
$htmldoc
->_get_doc_config(
'permissions'
);
for
(
my
$i
=0;
$i
<
@$stored
;
$i
++) {
$okcounter
++
if
(
$stored
->[
$i
] eq
@noperms
[
$i
]);
}
ok(
$okcounter
, 4);
$htmldoc
->_delete_doc_config(
'permissions'
);
my
$okcounter
= 0;
my
@noperms
= (
'annotate'
,
'copy'
,
'modify'
,
'print'
);
foreach
my
$perm
(
@noperms
) {
$htmldoc
->set_permissions(
$perm
);
}
my
$stored
=
$htmldoc
->_get_doc_config(
'permissions'
);
for
(
my
$i
=0;
$i
<
@$stored
;
$i
++) {
$okcounter
++
if
(
$stored
->[
$i
] eq
@noperms
[
$i
]);
}
ok(
$okcounter
, 4);
$htmldoc
->set_permissions(
'none'
);
ok(
$htmldoc
->_get_doc_config(
'permissions'
)->[0],
'none'
);
$htmldoc
->_delete_doc_config(
'permissions'
);
$htmldoc
->set_permissions(
'copy'
);
$htmldoc
->set_permissions(
'no-copy'
);
my
$set
=
$htmldoc
->_get_doc_config(
'permissions'
);
my
$found
= 0;
foreach
(
@$set
) {
$found
= 1
if
(
$_
eq
'copy'
);
}
ok(
$found
, 0);
$htmldoc
->_delete_doc_config(
'permissions'
);
$htmldoc
->set_permissions(
'no-copy'
);
$htmldoc
->set_permissions(
'copy'
);
my
$set
=
$htmldoc
->_get_doc_config(
'permissions'
);
my
$found
= 0;
foreach
(
@$set
) {
$found
= 1
if
(
$_
eq
'no-copy'
);
}
ok(
$found
, 0);
$htmldoc
->landscape();
my
@keys
=
$htmldoc
->_get_doc_config_keys();
ok(array_contains(\
@keys
,
'landscape'
), 1 );
ok(array_contains(\
@keys
,
'portrait'
), 0 );
$htmldoc
->portrait();
my
@keys
=
$htmldoc
->_get_doc_config_keys();
ok(array_contains(\
@keys
,
'portrait'
), 1 );
ok(array_contains(\
@keys
,
'landscape'
), 0 );
my
$ret
=
$htmldoc
->set_right_margin(2);
ok(
$ret
, 1);
ok(
$htmldoc
->_get_doc_config(
'right'
),
'2cm'
);
my
$ret
=
$htmldoc
->set_right_margin(2.1);
ok(
$ret
, 1);
ok(
$htmldoc
->_get_doc_config(
'right'
),
'2.1cm'
);
my
$ret
=
$htmldoc
->set_right_margin(2,
'mm'
);
ok(
$ret
, 1);
ok(
$htmldoc
->_get_doc_config(
'right'
),
'2mm'
);
my
$ret
=
$htmldoc
->set_right_margin(2,
'in'
);
ok(
$ret
, 1);
ok(
$htmldoc
->_get_doc_config(
'right'
),
'2in'
);
my
$ret
=
$htmldoc
->set_right_margin(2,
'mc'
);
ok( (!
$ret
&&
$htmldoc
->error()=~/wrong arguments/ &&
$htmldoc
->error()=~/right-margin/), 1 );
$htmldoc
->set_left_margin(2);
ok(
$htmldoc
->_get_doc_config(
'left'
),
'2cm'
);
$htmldoc
->set_top_margin(2);
ok(
$htmldoc
->_get_doc_config(
'top'
),
'2cm'
);
$htmldoc
->set_bottom_margin(2);
ok(
$htmldoc
->_get_doc_config(
'bottom'
),
'2cm'
);
$htmldoc
->set_bottom_margin(2);
ok(
$htmldoc
->_get_doc_config(
'bottom'
),
'2cm'
);
my
$c
=
$htmldoc
->_test_color(
'#FF00DD'
);
ok(
$c
,
'#FF00DD'
);
my
$c
=
$htmldoc
->_test_color(
'#FJ00DD'
);
ok(
$c
,
undef
);
my
$c
=
$htmldoc
->_test_color(0,0,0);
ok(
$c
,
'#000000'
);
my
$c
=
$htmldoc
->_test_color(255,255,255);
ok(
$c
,
'#ffffff'
);
my
$c
=
$htmldoc
->_test_color(256,255,255);
ok(
$c
,
undef
);
my
$c
=
$htmldoc
->_test_color(
'red'
);
ok(
$c
,
'red'
);
my
$c
=
$htmldoc
->_test_color(
'violette'
);
ok(
$c
,
undef
);
ok(
$htmldoc
->set_bodycolor(
'red'
), 1);
ok(
$htmldoc
->set_bodycolor(
'#010101'
), 1);
ok(
$htmldoc
->set_bodycolor(
'#0101011'
), 0);
ok(
$htmldoc
->set_bodycolor(0,0,0), 1);
ok(
$htmldoc
->set_bodyfont(
'Arial'
), 1);
ok(
$htmldoc
->_get_doc_config(
'bodyfont'
),
'Arial'
);
ok(
$htmldoc
->set_bodyfont(
'arial'
), 1);
ok(
$htmldoc
->set_bodyfont(
'sans-serif'
), 1);
ok(
$htmldoc
->set_bodyfont(
'arialx'
), 0);
$htmldoc
->set_browserwidth(100);
ok(
$htmldoc
->_get_doc_config(
'browserwidth'
), 100);
ok(
$htmldoc
->set_browserwidth(
"sad"
), 0);
$htmldoc
->embed_fonts();
my
@keys
=
$htmldoc
->_get_doc_config_keys();
ok(array_contains(\
@keys
,
'embedfonts'
), 1);
$htmldoc
->no_embed_fonts();
my
@keys
=
$htmldoc
->_get_doc_config_keys();
ok(array_contains(\
@keys
,
'embedfonts'
), 0);
ok(
$htmldoc
->_get_doc_config(
'header'
),
'.t.'
);
ok(
$htmldoc
->_get_doc_config(
'footer'
),
'.1.'
);
ok(
$htmldoc
->set_footer(
'/'
,
'a'
,
'A'
), 1);
ok(
$htmldoc
->_get_doc_config(
'footer'
),
'/aA'
);
ok(
$htmldoc
->set_footer(
'7'
,
'&'
,
'x'
), 0);
ok(
$htmldoc
->set_header(
'/'
,
'a'
,
'A'
), 1);
ok(
$htmldoc
->_get_doc_config(
'header'
),
'/aA'
);
ok(
$htmldoc
->set_header(
'7'
,
'&'
,
'x'
), 0);
ok(
$htmldoc
->_get_doc_config(
'format'
),
'pdf'
);
ok(
$htmldoc
->set_output_format(
'html'
), 1);
ok(
$htmldoc
->_get_doc_config(
'format'
),
'html'
);
$htmldoc
->set_output_format(
'pdf'
);
ok(
$htmldoc
->set_output_format(
'asdasd'
), 0);
ok(
$htmldoc
->_get_doc_config(
'format'
),
'pdf'
);
my
$content
=
'<html>test</html>'
;
ok(
$htmldoc
->set_html_content(
$content
), 1);
ok(
$htmldoc
->get_html_content(),
$content
);
my
$content
=
'<html>test</html>'
;
ok(
$htmldoc
->set_html_content(\
$content
), 1);
ok(
$htmldoc
->get_html_content(),
$content
);
ok(
$htmldoc
->links(), 1);
ok(
$htmldoc
->_get_doc_config(
'links'
),
''
);
ok(
$htmldoc
->_get_doc_config(
'no-links'
),
undef
);
ok(
$htmldoc
->color_off());
ok(
$htmldoc
->_get_doc_config(
'gray'
),
''
);
ok(
$htmldoc
->_get_doc_config(
'color'
),
undef
);
ok(
$htmldoc
->color_on());
ok(
$htmldoc
->_get_doc_config(
'color'
),
''
);
ok(
$htmldoc
->_get_doc_config(
'gray'
),
undef
);
ok(
$htmldoc
->set_headfootsize(10));
ok(
$htmldoc
->_get_doc_config(
'headfootsize'
), 10);
ok(
$htmldoc
->get_headfootsize(), 10);
ok(
$htmldoc
->no_links(), 1);
ok(
$htmldoc
->_get_doc_config(
'no-links'
),
''
);
ok(
$htmldoc
->_get_doc_config(
'links'
),
undef
);
ok(
$htmldoc
->path(
'/tmp'
), 1);
ok(
$htmldoc
->_get_doc_config(
'path'
),
'/tmp'
);
ok(
$htmldoc
->set_fontsize(2), 1);
ok(
$htmldoc
->_get_doc_config(
'fontsize'
), 2);
ok(
$htmldoc
->set_fontsize(2.5), 1);
ok(
$htmldoc
->_get_doc_config(
'fontsize'
), 2.5);
ok(
$htmldoc
->set_fontsize(
"x"
), 0);
$htmldoc
= new HTML::HTMLDoc();
my
$setimage
=
$htmldoc
->set_logoimage(
'./testdata/missingimage.gif'
);
ok(
$setimage
, 0);
ok(
$htmldoc
->error(),
"Logoimage ./testdata/missingimage.gif could not be found"
);
my
$logoimg
=
'./testdata/testimage.gif'
;
my
$setimage
=
$htmldoc
->set_logoimage(
$logoimg
);
ok(
$setimage
, 1);
ok(
$htmldoc
->get_logoimage(),
$logoimg
);
$htmldoc
= new HTML::HTMLDoc(
bindir
=>
'/home'
);
$htmldoc
->generate_pdf;
}
{
my
$htmldoc
= new HTML::HTMLDoc();
my
$t
=
$htmldoc
->_build_parameters();
my
$ok
= 1;
my
@cont
= (
'--header .t.'
,
'--format pdf'
,
'--charset iso-8859-1'
,
'--quiet'
,
'--portrait'
,
'--size a4'
,
'--footer .1.'
);
foreach
(
@cont
) {
if
(
$t
!~ /
$_
/ ) {
$ok
=0;
last
;
}
}
ok(
$ok
, 1);
$htmldoc
->set_html_content(
'test'
);
my
$pdf
=
$htmldoc
->generate_pdf();
ok(
ref
(
$pdf
),
'HTML::HTMLDoc::PDF'
);
ok(
substr
(
$pdf
->to_string(),0,10),
qr/^\Q%PDF-1.3\E/
);
my
$htmldoc
= new HTML::HTMLDoc();
$htmldoc
->set_output_format(
'pdf11'
);
$htmldoc
->set_html_content(
'test'
);
my
$pdf
=
$htmldoc
->generate_pdf();
ok(
ref
(
$pdf
),
'HTML::HTMLDoc::PDF'
);
ok(
substr
(
$pdf
->to_string(),0,10),
qr/^\Q%PDF-1.1\E/
);
my
$htmldoc
= new HTML::HTMLDoc();
$htmldoc
->set_output_format(
'pdf12'
);
$htmldoc
->set_html_content(
'test'
);
my
$pdf
=
$htmldoc
->generate_pdf();
ok(
ref
(
$pdf
),
'HTML::HTMLDoc::PDF'
);
ok(
substr
(
$pdf
->to_string(),0,10),
qr/^\Q%PDF-1.2\E/
);
my
$htmldoc
= new HTML::HTMLDoc();
$htmldoc
->set_output_format(
'pdf13'
);
$htmldoc
->set_html_content(
'test'
);
my
$pdf
=
$htmldoc
->generate_pdf();
ok(
ref
(
$pdf
),
'HTML::HTMLDoc::PDF'
);
ok(
substr
(
$pdf
->to_string(),0,10),
qr/^\Q%PDF-1.3\E/
);
my
$htmldoc
= new HTML::HTMLDoc();
$htmldoc
->set_output_format(
'pdf14'
);
$htmldoc
->set_html_content(
'test'
);
my
$pdf
=
$htmldoc
->generate_pdf();
ok(
ref
(
$pdf
),
'HTML::HTMLDoc::PDF'
);
ok(
substr
(
$pdf
->to_string(),0,10),
qr/^\Q%PDF-1.4\E/
);
my
$htmldoc
= new HTML::HTMLDoc();
$htmldoc
->set_output_format(
'ps'
);
$htmldoc
->set_html_content(
'test'
);
my
$pdf
=
$htmldoc
->generate_pdf();
ok(
ref
(
$pdf
),
'HTML::HTMLDoc::PDF'
);
ok(
substr
(
$pdf
->to_string(),0,20),
qr/^\Q%!PS-Adobe-3.0\E/
);
my
$htmldoc
= new HTML::HTMLDoc();
$htmldoc
->set_output_format(
'ps1'
);
$htmldoc
->set_html_content(
'test'
);
my
$pdf
=
$htmldoc
->generate_pdf();
ok(
ref
(
$pdf
),
'HTML::HTMLDoc::PDF'
);
ok(
substr
(
$pdf
->to_string(),0,20),
qr/^\Q%!PS-Adobe-3.0\E/
);
my
$htmldoc
= new HTML::HTMLDoc();
$htmldoc
->set_output_format(
'ps2'
);
$htmldoc
->set_html_content(
'test'
);
my
$pdf
=
$htmldoc
->generate_pdf();
ok(
ref
(
$pdf
),
'HTML::HTMLDoc::PDF'
);
ok(
substr
(
$pdf
->to_string(),0,20),
qr/^\Q%!PS-Adobe-3.0\E/
);
my
$htmldoc
= new HTML::HTMLDoc();
$htmldoc
->set_output_format(
'ps3'
);
$htmldoc
->set_html_content(
'test'
);
my
$pdf
=
$htmldoc
->generate_pdf();
ok(
ref
(
$pdf
),
'HTML::HTMLDoc::PDF'
);
ok(
substr
(
$pdf
->to_string(),0,20),
qr/^\Q%!PS-Adobe-3.0\E/
);
my
$htmldoc
= new HTML::HTMLDoc();
$htmldoc
->set_output_format(
'html'
);
$htmldoc
->set_html_content(
'<html><body>lkjlkjlkj</body></html>'
);
my
$pdf
=
$htmldoc
->generate_pdf();
ok(
ref
(
$pdf
),
'HTML::HTMLDoc::PDF'
);
ok(
substr
(
$pdf
->to_string(),0,100),
qr|\Q<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"\E|
);
ok(
$pdf
->to_string(),
qr|\Qlkjlkjlkj\E|
);
my
$htmldoc
= new HTML::HTMLDoc();
$htmldoc
->set_output_format(
'html'
);
my
$pdf
=
$htmldoc
->generate_pdf();
ok(
ref
(
$pdf
),
'HTML::HTMLDoc::PDF'
);
my
$htmldoc
= new HTML::HTMLDoc(
'mode'
=>
'file'
,
'tmpdir'
=>
'/tmp/hshshshd/sdasd/'
);
$htmldoc
->set_html_content(
'<html><body>lkjlkjlkj</body></html>'
);
my
$pdf
=
$htmldoc
->generate_pdf();
ok(
ref
(
$pdf
),
'HTML::HTMLDoc::PDF'
);
ok(
substr
(
$pdf
->to_string(),0,10),
qr/^\Q%PDF-1.3\E/
);
}
sub
test_writefile {
my
$htmldoc
= new HTML::HTMLDoc(
mode
=>
'file'
);
$htmldoc
->set_headfootsize(10);
$htmldoc
->_set_doc_config(
'firstpage'
,
'toc'
);
$htmldoc
->set_html_content(
'<html><body><h1>lkjlkjlkj</h1><!-- PAGE BREAK --><h1>sfdsdfsdfdsf</h1></body></html>'
);
my
$pdf
=
$htmldoc
->generate_pdf();
$pdf
->to_file(
'testfile.pdf'
);
}
sub
array_contains {
my
$array
=
shift
;
my
$key
=
shift
;
my
$contains
= 0;
foreach
(
@$array
) {
$contains
= 1
if
(
$_
eq
$key
);
}
return
$contains
;
}