#!/usr/bin/perl -w # # Written by Travis Kent Beste # Tue Aug 29 23:08:05 CDT 2006 # # $Id: extract_pdf_pages.pl,v 1.2 2007/08/16 21:57:49 travis Exp $ # $Source: /cvs_repository/pdf/extract_pdf_pages.pl,v $ use strict; use IPC::Open3; use Getopt::Std; use File::Path; #----------------------------------------# # configuration #----------------------------------------# my %opts; getopt('f:', \%opts); my $filename = $opts{'f'}; my $base_filename = $filename; my $acroread = '/usr/local/Adobe/Acrobat7.0/bin/acroread'; my $psselect = '/usr/bin/psselect'; my $ps2pdf = '/usr/bin/ps2pdf'; my $ps = $filename; $ps =~ s/\.pdf/\.ps/; $base_filename =~ s/\.pdf//; #----------------------------------------# # main #----------------------------------------# # Convert from pdf to ps print "Converting pdf to ps (this takes some time)..."; system("$acroread -toPostScript $filename > $ps"); print "Done\n"; # Create a directory mkpath([$base_filename], 0, 0755); my $done = 0; my $index = 1; while(! $done) { my $newfile = $base_filename . '/' . $ps; $newfile =~ s/\.ps/sprintf("_%08d.ps", $index)/e; my $newfile_pdf = $newfile; $newfile_pdf =~ s/\.ps/\.pdf/; my $cmd = "$psselect -p$index $ps > $newfile"; #print "\$cmd: $cmd\n"; my $pid = open3(\*CHLD_IN, \*CHLD_OUT, \*CHLD_ERR, $cmd); while() { if ($_ =~ /^Wrote 0 pages/) { $done = 1; } } close(CHLD_IN); close(CHLD_OUT); close(CHLD_ERR); if ($done == 1) { unlink $newfile; } else { print "Extracted page $index...\n"; my $cmd = "$ps2pdf $newfile $newfile_pdf"; #print "$cmd\n"; system($cmd); unlink $newfile; } $index++; } unlink $ps;