File: png.t

package info (click to toggle)
libpdf-builder-perl 3.027-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 23,992 kB
  • sloc: perl: 107,532; makefile: 10
file content (95 lines) | stat: -rw-r--r-- 2,695 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
#!/usr/bin/perl
use warnings;
use strict;

use Test::More tests => 9;

use PDF::Builder;

# tests 1 and 7 will mention PNG_IPL if Image::PNG::Libpng is installed
# and usable, otherwise they will display just PNG. you can use this
# information if you are not sure about the status of Image::PNG::Libpng.

# (1,2,3) Filename 

my $pdf = PDF::Builder->new('compress' => 'none');

# silent shuts off one-time warning for rest of run
my $png = $pdf->image_png('t/resources/1x1.png', 'silent' => 1);
if ($png->usesLib() == 1) {
    isa_ok($png, 'PDF::Builder::Resource::XObject::Image::PNG_IPL',
        q{$pdf->image_png(filename)});
} else {
    isa_ok($png, 'PDF::Builder::Resource::XObject::Image::PNG',
        q{$pdf->image_png(filename)});
}

is($png->width(), 1,
   q{Image from filename has a width});

my $gfx = $pdf->page()->gfx();
$gfx->image($png, 72, 144, 216, 288);
like($pdf->to_string(), qr/q 216 0 0 288 72 144 cm \S+ Do Q/,
     q{Add PNG to PDF});

# (4) RGBA PNG file

$pdf = PDF::Builder->new();

$png = $pdf->image_png('t/resources/test-rgba.png');
if ($png->usesLib() == 1) {
    isa_ok($png, 'PDF::Builder::Resource::XObject::Image::PNG_IPL',
           q{$pdf->image_png(filename)});
} else {
    isa_ok($png, 'PDF::Builder::Resource::XObject::Image::PNG',
           q{$pdf->image_png(filename)});
}

my $page = $pdf->page();
$page->mediabox(840,600);
$gfx=$page->gfx();
$gfx->image($png,134,106,510,281);
my $rgba1_pdf_string = $pdf->to_string();

# (5,6) RGBA PNG file Pure Perl

$pdf = PDF::Builder->new();
my $png2 = $pdf->image_png('t/resources/test-rgba.png', 'nouseIPL'=>1);
isa_ok($png2, 'PDF::Builder::Resource::XObject::Image::PNG',
       q{$pdf->image_png(filename), pure Perl});

my $page2 = $pdf->page();
$page2->mediabox(840,600);
my $gfx2 = $page2->gfx();
$gfx2->image($png2,134,106,510,281);
my $rgba2_pdf_string = $pdf->to_string();

is(substr($rgba1_pdf_string, 0, 512), substr($rgba2_pdf_string, 0, 512),
     q{XS and pure perl PDFs are the same});

# (7,8) Filehandle

$pdf = PDF::Builder->new();
open my $fh, '<', 't/resources/1x1.png' or
    die "Can't open file t/resources/1x1.png";
$png = $pdf->image($fh);  # use convenience function on this one
if ($png->usesLib() == 1) {
    isa_ok($png, 'PDF::Builder::Resource::XObject::Image::PNG_IPL',
        q{$pdf->image(filehandle)});
} else {
    isa_ok($png, 'PDF::Builder::Resource::XObject::Image::PNG',
        q{$pdf->image(filehandle)});
}

is($png->width(), 1,
   q{Image from filehandle has a width});

close $fh;

# (9) Missing file

$pdf = PDF::Builder->new();
eval { $pdf->image_png('t/resources/this.file.does.not.exist') };
ok($@, q{Fail fast if the requested file doesn't exist});

1;