/usr/bin/fillpdffields 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 | #!/usr/bin/perl -w
eval 'exec /usr/bin/perl -w -S $0 ${1+"$@"}'
if 0; # not running under some shell
package main;
use warnings;
use strict;
use CAM::PDF;
use Getopt::Long;
use Pod::Usage;
our $VERSION = '1.60';
my %opts = (
triggerclear => 0,
background => '1',
verbose => 0,
order => 0,
help => 0,
version => 0,
);
Getopt::Long::Configure('bundling');
GetOptions('t|triggerclear' => \$opts{triggerclear},
'b|background=s' => \$opts{background},
'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;
my $outfile = shift;
if ($opts{background} =~ m/\s/xms)
{
# Separate r,g,b
$opts{background} = [split m/\s+/xms, $opts{background}];
}
my $doc = CAM::PDF->new($infile) || die "$CAM::PDF::errstr\n";
my @list = (@ARGV);
$doc->fillFormFields({background_color => $opts{background}}, @list);
if ($opts{triggerclear})
{
# get even-numbered-index elemented (i.e. fieldnames)
my @names = map {$_ % 2 ? $list[$_] : ()} 0 .. $#list;
for my $name (@names)
{
my $objnode = $doc->getFormField($name);
if ($objnode)
{
delete $objnode->{value}->{value}->{AA};
}
}
}
if ($opts{order})
{
$doc->preserveOrder();
}
if (!$doc->canModify())
{
die "This PDF forbids modification\n";
}
$doc->cleanoutput($outfile);
__END__
=for stopwords fillpdffields.pl
=head1 NAME
fillpdffields.pl - Replace PDF form fields with specified values
=head1 SYNOPSIS
fillpdffields.pl [options] infile.pdf outfile.pdf field value [field value ...]
Options:
-b --background=val specify a background color behind the filled text field
Options are: 'none', gray or 'r g b'. Default: '1'
-t --triggerclear remove all of the form triggers after replacing values
-o --order preserve the internal PDF ordering for output
-v --verbose print diagnostic messages
-h --help verbose help message
-V --version print CAM::PDF version
Examples of C<--background> values are:
--background=none
--background=1 # white
--background=0.5 # gray
--background=0 # black
--background="1 0 0" # red
=head1 DESCRIPTION
Fill in the forms in the PDF with the specified values, identified by
their field names. See F<listpdffields.pl> for a the names of the form
fields.
=head1 SEE ALSO
CAM::PDF
F<listpdffields.pl>
=head1 AUTHOR
See L<CAM::PDF>
=cut
|