This file is indexed.

/usr/bin/setpdfbackground is in libcam-pdf-perl 1.60-1.

This file is owned by root:root, with mode 0o755.

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
#!/usr/bin/perl 

eval 'exec /usr/bin/perl  -S $0 ${1+"$@"}'
    if 0; # not running under some shell

use warnings;
use strict;
use CAM::PDF;
use Getopt::Long;
use Pod::Usage;

our $VERSION = '1.60';

my %opts = (
   order      => 0,
   verbose    => 0,
   help       => 0,
   version    => 0,
);

Getopt::Long::Configure('bundling');
GetOptions('v|verbose'  => \$opts{verbose},
           'o|order'    => \$opts{order},
           'h|help'     => \$opts{help},
           'V|version'  => \$opts{version},
           ) or pod2usage(1);
if ($opts{help})
{
   pod2usage(-exitstatus => 0, -verbose => 2);
}
if ($opts{version})
{
   print "CAM::PDF v$CAM::PDF::VERSION\n";
   exit 0;
}
if (@ARGV < 3)
{
   pod2usage(1);
}

my $infile = shift || q{-};
my $pagenum  = shift || 1;
my $bgcolor  = shift || 'ffffff';
my $outfile  = shift || q{-};

my ($red, $blue, $green);

if ($bgcolor =~ m/ \A [\da-fA-F]{3} \z /xms)
{
   # For example, "f60" becomes "ff6600"
   my $rd = substr $bgcolor, 0, 1;
   my $gr = substr $bgcolor, 1, 1;
   my $bl = substr $bgcolor, 2, 1;
   $bgcolor = "$rd$rd$gr$gr$bl$bl";
}
if ($bgcolor =~ m/ \A [\da-fA-F]{6} \z /xms)
{
   $red   = hex substr $bgcolor, 0, 2;
   $green = hex substr $bgcolor, 2, 2;
   $blue  = hex substr $bgcolor, 4, 2;

   $red   /= 256.0;
   $green /= 256.0;
   $blue  /= 256.0;
}
else
{
   die 'Invalid color specified.  Should be "rrggbb" or "rgb"';
}

my $doc = CAM::PDF->new($infile) || die "$CAM::PDF::errstr\n";
my ($x,$y,$w,$h) = $doc->getPageDimensions($pagenum);

my $bg =
    'q ' .                    # Start a new graphics state
    "$red $blue $green rg " . # Set the fill color
    "$x $y $w $h re " .       # Mark a rectangle the size of the page
    'f ' .                    # Fill the rectangle
    'Q ';                     # End the graphics state

# Prepend the background fill
$doc->setPageContent($pagenum, $bg . $doc->getPageContent($pagenum));
if ($opts{order})
{
   $doc->preserveOrder();
}
if (!$doc->canModify())
{
   die "This PDF forbids modification\n";
}
$doc->cleanoutput($outfile);


__END__

=for stopwords setpdfbackground.pl Cowgill RGB

=head1 NAME

setpdfbackground.pl - Apply a background color to a PDF page

=head1 SYNOPSIS

 setpdfbackground.pl [options] file.pdf pagenum color [outfile]

 Options:
   -o --order          preserve the internal PDF ordering for output
   -v --verbose        print the internal representation of the PDF
   -h --help           verbose help message
   -V --version        print CAM::PDF version

The C<color> is specified as 3 or 6 character hexadecimal RGB.  For
example, C<f00> and C<ff0000> both mean pure red while C<999> and
C<999999> both mean medium gray.

=head1 DESCRIPTION

This program alters a PDF document to add a solid background color
behind the page contents.

=head1 CAVEATS

Some PDF creation programs assume a white background and draw bogus
white rectangles all over the screen that you usually cannot see.  If
your PDF has such rectangles, you I<can> sometimes fix it, but it is a
pain.  The best recommendation is to recreate the original PDF using a
smarter library, if possible.  Alternatively, you can contact Clotho
Advanced Media for a commercial solution to this problem.

=head1 CREDIT

This feature was originally requested by Brent Cowgill.

=head1 SEE ALSO

CAM::PDF

F<rewritepdf.pl>

=head1 AUTHOR

See L<CAM::PDF>

=cut