Beefy Boxes and Bandwidth Generously Provided by pair Networks DiBona
Just another Perl shrine
 
PerlMonks

Cropping a postscript file

by ZZamboni (Curate)
 | Log in | Create a new user | The Monastery Gates | Super Search | 
 | Seekers of Perl Wisdom | Meditations | PerlMonks Discussion | 
 | Obfuscation | Reviews | Cool Uses For Perl | Perl News | Q&A | Tutorials | 
 | Poetry | Recent Threads | Newest Nodes | Donate | What's New | 

on May 08, 2000 at 21:40 UTC ( #10635=sourcecode: print w/ replies, xml ) Need Help??

Category: Utility scripts
Author/Contact Info Diego Zamboni
Description: This script allows you to select a portion of a postscript file and crop it. The whole file is included in the result, but the appropriate commands are included to crop it to the section you select. Instructions for use are included in the script.
#!/usr/local/perl/bin/perl
#
# Cropping a portion of a postscript file
# Postscript magic and instructions provided by Chapman Flack.
# Script implemented by Diego Zamboni <zamboni@cerias.purdue.edu>
#
# 1.  View the page in gv.  If it's a multipage document, mark the pag
+e and
#     hit "save marked" so you have a small file to deal with.
# 2.  Move the mouse pointer to the lower left corner of the area you 
+want.
#     Record the gv displayed coordinates as X1 and Y1.
# 3.  Point to the upper right corner and record X2 and Y2.
# 4.  Run "crop-ps X1 Y1 X2 Y2 file.ps > cropped_file.ps"
#
# This will not work for postscript files that do not have the appropr
+iate
# structuring comments (%%EndSetup, %%Page, etc.)

$usage="Usage: $0 x1 y1 x2 y2 file.ps";

$x1=shift @ARGV;
$y1=shift @ARGV;
$x2=shift @ARGV;
$y2=shift @ARGV;

($x1 && $y2 && $x2 && $y2 ) or
        die "$usage\n";

$w=$x2-$x1;
$h=$y2-$y1;

$flag=0;

while (<>) {
  if (/^%%BoundingBox:/) {
    print "%%BoundingBox: 0 0 $w $h\n";
  }
  elsif (!$flag && (/^%%EndSetup/ || /^%%Page:/)) {
    print;
    print "-$x1 -$y1 translate\n";
    print "$x1 $y1 moveto $x1 $y2 lineto $x2 $y2 lineto $x2 $y1 lineto
+ closepath\n";
    print "clip\n";
    $flag=1;
  }
  else {
    print;
  }
}

Comment on Cropping a postscript file
Download Code
Re: Cropping a postscript file
by Anonymous Monk on May 28, 2008 at 15:56 UTC
    This seems to work even without the structuring comments (%%EndSetup, %%Page). The following worked for me:
    #!/usr/bin/perl $usage="Usage: $0 x1 y1 x2 y2 file.ps"; $x1=shift @ARGV; $y1=shift @ARGV; $x2=shift @ARGV; $y2=shift @ARGV; ($x1 && $y2 && $x2 && $y2 ) or die "$usage\n"; $w=$x2-$x1; $h=$y2-$y1; $flag=0; while (<>) { if (/^%%BoundingBox:/) { print "%%BoundingBox: 0 0 $w $h\n"; print "-$x1 -$y1 translate\n"; print "$x1 $y1 moveto $x1 $y2 lineto $x2 $y2 lineto $x2 $y1 li +neto closepath\n"; print "clip\n"; $flag=1; } else { print; } }

Back to Code Catacombs

Login:
Password
remember me
What's my password?
Create A New User

Node Status?
node history
Node Type: sourcecode [id://10635]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others contemplating the Monastery: (17)
bart
jdporter
Your Mother
holli
Gavin
atcroft
CardinalNumber
kennethk
thezip
Eyck
Perlbotics
LanX
crashtest
eff_i_g
ssandv
MikeDexter
TerribleD
As of 2010-02-09 22:12 GMT
Sections?
The Monastery Gates
Seekers of Perl Wisdom
Meditations
PerlMonks Discussion
Categorized Q&A
Tutorials
Obfuscated Code
Perl Poetry
Cool Uses for Perl
Perl News
Information?
PerlMonks FAQ
Guide to the Monastery
What's New at PerlMonks
Voting/Experience System
Tutorials
Reviews
Library
Perl FAQs
Other Info Sources
Find Nodes?
Nodes You Wrote
Super Search
List Nodes By Users
Newest Nodes
Recently Active Threads
Selected Best Nodes
Best Nodes
Worst Nodes
Saints in our Book
Leftovers?
The St. Larry Wall Shrine
Offering Plate
Awards
Craft
Snippets Section
Code Catacombs
Quests
Editor Requests
Buy PerlMonks Gear
PerlMonks Merchandise
Planet Perl
Perlsphere
Use Perl
Perl.com
Perl 5 Wiki
Perl Jobs
Perl Mongers
Perl Directory
Perl documentation
CPAN
Random Node
Voting Booth?

What level of existential comfort do you require?

Palace
Executive suite at the best hotel
Regular hotel in a decent part of town
Motel
Boarding house
Sleeping Bag on Couch in Basement
Any port in a storm
Camping under the freeway overpass
Jail
Other

Results (283 votes), past polls