/usr/share/perl5/Text/PDF/Utils.pm is in libtext-pdf-perl 0.29a-2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
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 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 | package Text::PDF::Utils;
=head1 NAME
Text::PDF::Utils - Utility functions for PDF library
=head1 DESCRIPTION
A set of utility functions to save the fingers of the PDF library users!
=head1 FUNCTIONS
=cut
use strict;
use Text::PDF::Array;
use Text::PDF::Bool;
use Text::PDF::Dict;
use Text::PDF::Name;
use Text::PDF::Number;
use Text::PDF::String;
use Exporter;
use vars qw(@EXPORT @ISA);
@ISA = qw(Exporter);
@EXPORT = qw(PDFBool PDFArray PDFDict PDFName PDFNum PDFStr
asPDFBool asPDFName asPDFNum asPDFStr);
# no warnings qw(uninitialized);
=head2 PDFBool
Creates a Bool via Text::PDF::Bool->new
=cut
sub PDFBool
{ Text::PDF::Bool->new(@_); }
=head2 PDFArray
Creates an array via Text::PDF::Array->new
=cut
sub PDFArray
{ Text::PDF::Array->new(@_); }
=head2 PDFDict
Creates a dict via Text::PDF::Dict->new
=cut
sub PDFDict
{ Text::PDF::Dict->new(@_); }
=head2 PDFName
Creates a name via Text::PDF::Name->new
=cut
sub PDFName
{ Text::PDF::Name->new(@_); }
=head2 PDFNum
Creates a number via Text::PDF::Number->new
=cut
sub PDFNum
{ Text::PDF::Number->new(@_); }
=head2 PDFStr
Creates a string via Text::PDF::String->new
=cut
sub PDFStr
{ Text::PDF::String->new(@_); }
=head2 asPDFBool
Returns a boolean value in PDF output form
=cut
sub asPDFBool
{ Text::PDF::Bool->new(@_)->as_pdf; }
=head2 asPDFStr
Returns a string in PDF output form (including () or <>)
=cut
sub asPDFStr
{ Text::PDF::String->new(@_)->as_pdf; }
=head2 asPDFName
Returns a Name in PDF Output form (including /)
=cut
sub asPDFName
{ Text::PDF::Name->new(@_)->as_pdf (@_); }
=head2 asPDFNum
Returns a number in PDF output form
=cut
sub asPDFNum
{ $_[0]; } # no translation needed
=head2 unpacku($str)
Returns a list of unicode values for the given UTF8 string
=cut
sub unpacku
{
my ($str) = @_;
my (@res);
# return (unpack("U*", $str)) if ($^V && $^V ge v5.6.0);
return (unpack("U*", $str)) if ($] >= 5.006); # so much for $^V!
$str = "$str"; # copy $str
while (length($str)) # Thanks to Gisle Aas for some of his old code
{
$str =~ s/^[\x80-\xBF]+//o;
if ($str =~ s/^([\x00-\x7F]+)//o)
{ push(@res, unpack("C*", $1)); }
elsif ($str =~ s/^([\xC0-\xDF])([\x80-\xBF])//o)
{ push(@res, ((ord($1) & 0x1F) << 6) | (ord($2) & 0x3F)); }
elsif ($str =~ s/^([\0xE0-\xEF])([\x80-\xBF])([\x80-\xBF])//o)
{ push(@res, ((ord($1) & 0x0F) << 12)
| ((ord($2) & 0x3F) << 6)
| (ord($3) & 0x3F)); }
elsif ($str =~ s/^([\xF0-\xF7])([\x80-\xBF])([\x80-\xBF])([\x80-\xBF])//o)
{
my ($b1, $b2, $b3, $b4) = (ord($1), ord($2), ord($3), ord($4));
push(@res, ((($b1 & 0x07) << 8) | (($b2 & 0x3F) << 2)
| (($b3 & 0x30) >> 4)) + 0xD600); # account for offset
push(@res, ((($b3 & 0x0F) << 6) | ($b4 & 0x3F)) + 0xDC00);
}
elsif ($str =~ s/^[\xF8-\xFF][\x80-\xBF]*//o)
{ }
}
@res;
}
1;
|