D
Domenico Discepola
Hello. My goal is to print Adobe PDF files from a Perl script without any
user intervention. I have been experimenting with various methods and am
now trying to use Win32::OLE to control Adobe Acrobat Exchange (v5.0.5).
Please refer to the code below. I can create the acrobat object, open the
document and retrieve some information from the document. My problems are:
1. Although I make acrobat visible using the show method, only the
application becomes visible, not the document. How do I fix this?
2. What is the method to print the document once it has been opened? The
"PrintPagesEx" method produces an error "Win32::OLE 0.1701) error
0x80020003: "Member not found" in METHOD/PROPERTYGET "" at jps2.pl line 30".
I then tried to loop through the hash referenced by the $doc variable but no
output from the hash was printed.
3. As an aside, if someone can provide me with the class name for Acrobat
Reader (not Acrobat exchange, as I have coded below) that would be great (or
inform me how to find it). I am relatively inexperienced in the world of
OLE Automation so any hints would be helpful.
##############
#!perl
use strict;
use warnings;
use diagnostics;
use Win32::OLE;
use Win32::OLE::Const "Acrobat";
our $g_file_input = shift @ARGV;
die "Usage: $0 filename\n" unless $g_file_input;
sub process_main {
my $acrobat = Win32::OLE->new("AcroExch.App","Quit");
my $doc = Win32::OLE->new("AcroExch.PDDoc");
$doc->Open( ${g_file_input} ) or die("Could not open $g_file_input: $!\n");
$acrobat->show;
print "Title=",$doc->GetInfo("Title"),"\n\n";
#This does not work
#$doc->PrintPagesEx(1,5,2,'True','True','False','True','True','PDAllPages');
}
sub main {
print "PDF program\n";
&process_main();
print "Ending now\n";
}
&main();
exit 0;
###############
user intervention. I have been experimenting with various methods and am
now trying to use Win32::OLE to control Adobe Acrobat Exchange (v5.0.5).
Please refer to the code below. I can create the acrobat object, open the
document and retrieve some information from the document. My problems are:
1. Although I make acrobat visible using the show method, only the
application becomes visible, not the document. How do I fix this?
2. What is the method to print the document once it has been opened? The
"PrintPagesEx" method produces an error "Win32::OLE 0.1701) error
0x80020003: "Member not found" in METHOD/PROPERTYGET "" at jps2.pl line 30".
I then tried to loop through the hash referenced by the $doc variable but no
output from the hash was printed.
3. As an aside, if someone can provide me with the class name for Acrobat
Reader (not Acrobat exchange, as I have coded below) that would be great (or
inform me how to find it). I am relatively inexperienced in the world of
OLE Automation so any hints would be helpful.
##############
#!perl
use strict;
use warnings;
use diagnostics;
use Win32::OLE;
use Win32::OLE::Const "Acrobat";
our $g_file_input = shift @ARGV;
die "Usage: $0 filename\n" unless $g_file_input;
sub process_main {
my $acrobat = Win32::OLE->new("AcroExch.App","Quit");
my $doc = Win32::OLE->new("AcroExch.PDDoc");
$doc->Open( ${g_file_input} ) or die("Could not open $g_file_input: $!\n");
$acrobat->show;
print "Title=",$doc->GetInfo("Title"),"\n\n";
#This does not work
#$doc->PrintPagesEx(1,5,2,'True','True','False','True','True','PDAllPages');
}
sub main {
print "PDF program\n";
&process_main();
print "Ending now\n";
}
&main();
exit 0;
###############