c# view pdf web browser : Extract one page from pdf reader control software platform web page windows html web browser elec_figures0-part1088

Graphics for Inclusion in Electronic Documents
Ian Hutchinson
February 6, 2005
Abstract
How does one produce portable graphics files that can be imported into other
documents, especially TeX documents? Ways that images become unportable are
discussed aswellasgood-practiceguidelines. Theadviceisaimedmostlyatlinuxor
similaroperatingsystemswhichhaveawealthofopen-sourcecommand-linetools.
Contents
1 The Problem
2
2 Postscript
2
2.1 EncapsulatedPostscript . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
2.2 BoundingBoxes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
2.3 Binary Garbage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5
2.4 LineEnds . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5
2.5 Orientation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6
3 Portable Document Format (PDF)
6
3.1 ConvertingfromPDFtoPS . . . . . . . . . . . . . . . . . . . . . . . . . . .
6
3.2 ConvertingfromPStoPDF . . . . . . . . . . . . . . . . . . . . . . . . . . .
7
3.3 Fonts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7
4 Using pstoedit and xfig
8
5 Bitmap Formats
9
5.1 PNMtoPS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9
5.2 JPEG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
5.3 GIF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
5.4 PNG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
5.5 CombinedVectorandBitmapGraphics . . . . . . . . . . . . . . . . . . . . . 10
6 Scanned Images ofLine Drawings
11
7 LaTeX Desperation Tweaks
11
1
Extract one page from pdf reader - copy, paste, cut PDF pages in C#.net, ASP.NET, MVC, Ajax, WinForms, WPF
Easy to Use C# Code to Extract PDF Pages, Copy Pages from One PDF File and Paste into Others
cut paste pdf pages; delete pages of pdf online
Extract one page from pdf reader - VB.NET PDF Page Extract Library: copy, paste, cut PDF pages in vb.net, ASP.NET, MVC, Ajax, WinForms, WPF
Detailed VB.NET Guide for Extracting Pages from Microsoft PDF Doc
copy pages from pdf to word; copy pages from pdf to another pdf
8 Summaries
12
8.1 Problemdiagnosis. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
8.2 Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
8.3 Instructions tographicsauthors . . . . . . . . . . . . . . . . . . . . . . . . . 13
9 Conclusion
14
1 The Problem
Inproducingmoderndocuments,imagesareoftenessential. Theabilityofcomputerviewing
toprovidegraphicinformation,andthebandwidthofmostmodernnetworksmakesgraphic
presentation truly feasible. However, graphics have many different incompatible formats.
Many formats areinappropriate for highquality graphics. Many arenotportable between
operatingsystemsorevendifferentcomputers. Thereforemanyembarrassments occurfrom
presentations that have not paid sufficient attention to portability, and endless hours are
spent tryingtocorrectweaknessesandportabilityproblemsingraphics.
Iwasmotivatedtowritethisdocumentbyexperienceproducingahigh-qualitypublica-
tion of some 200 pages withinput from a dozen people,allusing different computers and
software tools. LaTeX was the ultimatelayout engine. It is anextremely powerfulway of
producingaproperlystructureddocument,andcanhandlegraphicsintheformofpostscript
(PS)orPDF(whenproducingPSorPDFoutputrespectively). Inprincipletherequirement
thatwasplacedonauthors,toprovidePSfileswithproperboundingboxes,ought tohave
beensufficienttoenabletheprocesstogosmoothly. Thatwasfarfromthecase. SoIwrote
downsomeofthelessonslearnedfromthisandotherrelatedexperience.
This document is not intended to explain how to do graphics importation in TeX or
LaTeX. It is assumed the reader knows how to do that, or doesn’t need to know. Many
webresourcesexistthataddresstheseimportationtechniquesaswellasfilesinthelocaltex
installation, available onlinux as /usr/share/texmf/doc/latex/graphics/epslatex.ps.
Theemphasishereisongettingfiguresintoaformthatwillimportproperly. Evenseriously
brokenfigurescansometimesbefixedwithinternaltweaksoftheTeXimportation,butthat
is verytroublesome,andwithcarecanbeavoided.
2 Postscript
Postscriptis,ofcoursecapableofrepresentingtheentirespectrumofgraphicobjects:vector
graphics (lines,regions,fills etc),bitmaps,and fonts. But its bitmap capabilities arecum-
bersome insome cases. Vector graphics are by far the best way to represent high quality
linedrawings,thestapleofmuchtechnicalpublishing. For professionalpurposesthelossof
resolution and visual quality causedby convertingtoa bitmap shouldnever be permitted
tillthefinaldisplay.
2
VB.NET PDF Page Delete Library: remove PDF pages in vb.net, ASP.
If you are looking for a solution to conveniently delete one page from your PDF document, you can use this VB.NET PDF Library, which supports a variety of PDF
delete pages out of a pdf; delete pages of pdf
C# PDF File Merge Library: Merge, append PDF files in C#.net, ASP.
C# developers can easily merge and append one PDF document to document imaging toolkit, also offers other advanced PDF document page processing and
extract page from pdf file; extract pages from pdf on ipad
2.1 Encapsulated Postscript
Much confusion surrounds the difference between encapsulated postscript (EPS) and just
plainvanillapostscript(PS).TheEPSformatspecificationis at http://partners.adobe.
com/asn/developer/pdfs/tn/5002.EPSF_Spec.pdf. A useful summary may be found at
http://netghost.narod.ru/gff/graphics/summary/epsf.htm. Thereisnodifferencebe-
tween“EPSF”and“EPS”.
TherequirementsthatmakeaPSfile alsoanEPSare
1. EPSis asinglepage;
2. afewobscurePScommandsareforbiddeninEPS;
3. EPSmusthavecertaincomments,includingaboundingboxcomment.
Any self-respecting PSoutput ought also to have the key comments,in which case it will
generallybe anEPSfile ifitisonepage;butsomePSfilesaren’tself-respecting.
SomekindsofEPSfiles are notvalidPSfiles. Sowehavetheunpleasantsituationthat
thoughtheyintersect,neitherPSnorEPSisasubsetoftheother. PostscriptisASCII(plain
text). SomeEPSfileshavebinary dataaddedtothemrepresentingapreviewbitmap. This
possibility is unfortunately part of the EPS specification. Binary preview data is a cause
of many incompatibility problems andprevents a file containing it from being portable to
different platforms in many instances. There is therefore a more portable previewformat,
EPSI,standingforencapsulatedpostscriptinterchange,whichisASCII,andleavesafilein
the state that it is (also) a validPS file. For present purposes, EPSF binary previews are
poison;EPSIpreviewsaremorebenignbutstillunwantedforTeX.
2.2 Bounding Boxes
The main thing that a publishing program needs to knowabout a graphic it is importing
is its size and shape. Normally the program has the ability to scale the graphic to fit a
specifiedareaprovideditknowstheoriginalsize. Postscriptfilesconventionallyprovidethis
informationthroughcomments thatconformtothe“Encapsulated”postscriptconventions.
The most important such comment for present purposes is the BoundingBox comment. It
has theform:
%%BoundingBox: 0 0 520 685
whichconventionally definesthe smallest rectanglethat enclosesallthe drawnpartsofthe
graphicwithlittleornomargin.
Perhapsthemostfrequentproblemforimportinggraphicsisthatpostscriptfilesareoften
produced with anincorrect bounding box. This is the fault of the software that produced
it,or occasionally ofthe user,innot realizingthata largemarginshouldbe avoided when
preparing figuresforimportationintoanotherdocument. Frequently,PSfiles producedfor
printing use the size of the paper as the bounding box rather than the size of the drawn
area.
1
1AccordingtoScottPakin,youcansometimestellthisbythevaluesofthebox:00612792(U.S.letter)
and00596842(A4).
3
C# PDF Image Extract Library: Select, copy, paste PDF images in C#
Open a document. PDFDocument doc = new PDFDocument(inputFilePath); PDFPage page = (PDFPage)pdf.GetPage(0); // Extract all images on one pdf page.
extract pdf pages online; delete pages from pdf
VB.NET PDF File Merge Library: Merge, append PDF files in vb.net
all. This guiding page will help you merge two or more PDF documents into a single one in a Visual Basic .NET imaging application.
cut pages out of pdf online; delete pages from pdf file online
Assuming that one does not have access to the software and source files that originally
producedthefigurethereareseveralwaystofixboundingboxes.
Manual Editing Postscript files are plain text ASCII. Any decent editor can be used
to adjust thebounding box by hand. Its four parameters are the (x,y) coordinates ofthe
bottomleft andtopright corners. Totellwhereyouwant toput these points,viewthefile
inGhostview(gv)movethepointertotheplaceyouwantthecornertobe,andreadoutthe
positionfrom gv’s display. Edit thefiletochangethevalues,thenviewit againwithgvor
somesimilar postscript viewer. Ghostviewadjusts its windowtothebounding box,so you
canquicklytellwhetheritiscorrect. Trialanderrorwillgiveareasonableboundingboxin
one ortwotries. If youreditingdoesnotseem tochangethewaythefigureis rendered by
gv,makesureyouareeditingtherightboundingbox comment. Preferably editoutallbut
thefirstone.
Automatic BoundingBox Adjustment Ghostscript(gs)hasadriverbbox whosepur-
poseistodiscovertheboundingboxbydrawingtheentiregraphicsfileinternallyandkeeping
track ofwhatisdrawn. It outputs theinformation. Not allgs executables havebbox com-
piledin. Executethecommandgs -h tolistthebuilt indrivers. Onecancallgs withthe
bbox driver and edit the PSfile to replace the oldBoundingBox comment withthe values
output. Alternatively a simple script can do the work for you automatically, here is an
example:
#!/bin/bash
# bbget
# Get a bounding box and put it on the second line of the file.
if [ $# -lt 2 ] ; then
echo Usage: $0 filein fileout [extrafiles]
echo Put a bounding box on the second line of the file fileout.
else
#Remove previous bounding boxes.
echo Removing the following BoundingBox lines:
sed -n -e "/BoundingBox/!w temp.ps" -e "/BoundingBox/ p" $1
if [ $# -gt 2 ] ; then cat $3 $4 $5 >> temp.ps; fi
if [ ‘fgrep -c showpage temp.ps‘ != "0" ] ; then
echo "File has a showpage. No additions."
showpage=""
else
echo "File has no showpage. I’ll add one temporarily."
showpage=’ -c "showpage"’
fi
#Get the BBox info to bb.out
gs -sDEVICE=bbox -sNOPAUSE -q temp.ps $showpage -c quit 2> bb.out
#Read it in to the second line of the output ps file.
sed -e"1 r bb.out" temp.ps > $2
4
VB.NET PDF Annotate Library: Draw, edit PDF annotation, markups in
to display it. Thus, PDFPage, derived from REPage, is a programming abstraction for representing one PDF page. Annotating Process.
extract page from pdf online; cut pages out of pdf file
C# PDF Page Delete Library: remove PDF pages in C#.net, ASP.NET
Using RasterEdge Visual C# .NET PDF page deletion component, developers can easily select one or more PDF pages and delete it/them in both .NET web and Windows
delete pages of pdf preview; extract pdf pages for
echo "Bounding Box Information:"
cat bb.out
#Clean up.
rm -f bb.out
rm -f temp.ps
fi
This script uses sed the streameditor, as wellas gs anda few other standardlinux tools.
ApointtonoteisthatsomePSfilesdonotendwiththecommandshowpage,whichmeans
thatthey won’t print onsomeprinters,but moreimportantly herethatthey won’t output
theboundingbox forsomegsversions. Sothisscriptensuresthatshowpageiscalledatthe
end.
Theproblemwiththeautomaticapproachisthatgscan’talwaysfindtheboundingbox
correctly. Forbitmapsitoftenfails. Also,moreoftenthanonemightsupposethepostscript
filehassomesortofhiddendrawingpointsoutsidetherealvisiblearea. ManyMacprograms
seem to put spurious invisible points in strange off-canvas places. These cause difficulties
withthisapproach. Alsoifthepostscriptclipsoffvectorsoutsideacertainareabyspecifying
aclip-paththenghostviewdoesnotseemtoobservetheclippingwhentracingthebounding
box.
2.3 Binary Garbage
ThePostscriptdriversonWindowsandMacsoftenputbinarycodesatthestartofpostscript
files if you just “print-to-file”. That is because they are stillacting as if this file is going
to be sent to the particular printer that happens tobe selected,and the binary codes are
somethingthattheprinter mightknow,butarenotpostscript. Anyfilethatdoesnotstart
%!PSisnotaproperpostscriptfile. Anothercauseofbinarygarbageistheheaderforbinary
previews. If the start of your file looks something like
ˆ
AD´o followed by about a line of
garbageandthen%!PS-Adobe-3.0 EPSF-3.0,thenyouhaveabinaryheaderfile.
Somehints foravoidingthesedifficulties areforexamplehere,whereTim Love,theau-
thor,says: “Under windows whenyou’reprintingtofile,look at the PostScript properties
(orAdvancedoptions),andchoose(dependingonthedriveryouhave)either’ArchiveFor-
mat’,’EncapsulatedPS’,’OptimizeforPortability’or’PageIndependence’. Peopleseemto
havemore luck withthefree Adobe postscriptdriver thanwith the Microsoft one”. Never
‘includepreview’ifyouaregoingtoimportintoLaTeX.
Ifyouhavepostscriptfileswithbinarypreviews,itispossibletocleanthemup(insome
cases)usingthecommandps2ps,butthis mayturnsomefontsintoline-drawnshapes(see
3.3). Another way is apparently to read thefile intoGSview(theWindows PS previewer)
andusethe‘extractPSfile’option.
2.4 Line Ends
Postscript is basically an ASCIIformat. Ifyou transfer a postscript file from Windows or
Mac to Linux or vice-versa using ftp, you ought to use the ASCII rather than BINARY
setting. Thenthelineendswillbecorrectlyconvertedbetweenthesystems. However,ifyou
5
VB.NET PDF copy, paste image library: copy, paste, cut PDF images
how to copy an image from one page of PDF how to cut image from PDF file page by using doc As PDFDocument = New PDFDocument(inputFilePath) ' Extract all images
extract page from pdf document; export pages from pdf acrobat
C# PDF: C# Code to Process PDF Document Page Using C#.NET PDF
Able to separate one PDF file into two PDF documents using C#.NET programming code; Free to extract page(s) from source PDF file and combine extracted pages
delete page from pdf file online; delete pages from pdf preview
transfer as binary, or in many cases ifyou simply copy the file across filesystems, the line
endswillbeincorrectforthenewoperatingsystem. Thisisparticularlyaproblemifthefile
has abinarypreview,becausethenit isnotanASCIIfile(norPS,thoughit may beEPS)
andsoitisnotcorrecttotransferitassuch. This isonemajor reasonwhybinary preview
is disastrouslyunportable.
ThereareavailablesimpleprogramsonlinuxtoconvertfromMacorWindowslineends.
ForMactolinux,the simplestconversionprogramisaoneline script:
tr "\015" "\012" <mac.file >linux.file
However,ifyouapply suchatranslationtoafilewithbinary previewittotallybreaksit.
Ghostscriptitselfcanmostlycopewithline-endproblems,butscriptsthatcallitusually
cannot. This can cause confusion about diagnosing the problem. Inspecting the PS file
directly withe.g. less file.eps willusuallyshowtheproblem immediately.
2.5 Orientation
If a file is saved as if to print in landscape orientation, then it quite likely will import in
suchawaythatitisrotatedby90degrees. LaTeXhaswaysofrotatingsuchfilesinternally,
butthiswillsometimeshavetobedoneexplicitly,whichisannoying. Ifsavingorcreatinga
graphics file for subsequentimportation,it is bettertouseportraitprovidedthebounding
box is generatedcorrectly.
If you acquire afigurewith bad orientation,youcan use xfig to fix the orientation as
follows. 1. Open a new xfig file. 2. Place the PS file to be rotated into the xfig file as a
graphic (use the camera button). 3. Use the rotate and scale tools to orient the graphic
upright. 4.Usetheedit toolonthegraphicandexpandorcontractittotheoriginalaspect
ratio. 5.Export thexfig file as an eps file. Ifyoustarted witha decent bounding box the
resultshouldbewellboundedtoo. Whatismore,thepostscriptwillnothavebeenflattened
or converted, only encapsulated in arelatively benign wrapper that does the rotation and
scaling.
3 Portable Document Format (PDF)
PDFis increasinglypopular for producingdocuments,especially thosecontaininggraphics.
Suchgraphics canbe cut out of theirfilesusingAdobe’sAcrobat softwaretools. Therefore
graphics are increasingly coming in this format. Also, this is the format most useful for
importing into pdf[La]TeX, the TeX engine that produces PDF directly rather than DVI
andthenPS.
3.1 Converting from PDF to PS
IfyouhaveagraphicalfileinpdfformatwithadecentMediaBox(PDFspeakforBounding-
Box)aroundit,youcanconvertitdirectly intoPSusingatoolcalledpdf2ps thatexecutes
gs; modern versions of gs support PDF as well as PS. This will quite often work. But it
appears thatgs implicitlycalculatestheboundingbox thatthegraphicshave,anditwon’t
6
necessarily find one that is thesame as theMediaBox that theoriginalPDF file has. This
seemstobeaweaknessinthewaygs works. Itwouldbereallyhelpfuliftheoptionexisted
toobservethe MediaBoxofaPDFfile.
Another approachis touseacroread,theAdobeviewer andprinttofile. Unfortunately
this approachwill in most cases give a troublesome file. Do not use any of the postscript
options such as shrink orexpand tofitpages. In the mostrecentacroreader,theseoptions
produce perverse postscript that does internalscalingbased on what it thinks the current
pagesizeis. Thisdefeatsmostmethodsofimportingandscaling. Ifyoudon’tusethefitting
options,you get managable postscript but an incorrect bounding box. Moreover, the files
(often) are suchthat the boundingbox cannot beautomaticallyfixed;youhavetodoit by
hand.
3.2 Converting from PS to PDF
Sincepdflatex can’t import PSfiles,only PDF,the needoftenarises to producePDF files
fromPS.There are(at least) two utilities for this conversionps2pdf and epstopdf. They
bothmostly just callgs withthecorrect options. Unfortunately, the pdfwriter driverthat
ps2pdf uses appears to determine the MediaBox automatically and ignore the specified
boundingbox. Therefore ifyouhaveaproblematicfile,whoseboundingboxcan’tbeauto-
maticallydetermined,thenevenifyouhavepainstakinglyeditedtheBoundingBoxbyhand,
itwilllikelybetonoavailwhenyouproducethePDFfile. Inthisrespectepstopdfisbetter
thanps2pdf,becauseitpaysattentiontotheboundingbox,doessometranslationstomake
its valuesrational,andsets themediaboxaccordingly. Itis alsosometimesabletostripoff
binaryjunk at the beginning ofthefile. Unfortunately it is not foolproof. Inparticular it
can’tcopewithfilesthat havebrokenlineends(see2.4). Forthemps2pdf may bebetter.
Ihaverecently(Jan 05) discoveredthat modernversionsof ps2pdf are different. They
seem to put the bounding box by default at the paper size. However, you can add the
switch-dEPSCroptoyourps2pdfcommandandthatmakesitproducecorrectmediaboxes
by reading the boundingbox. This may enable one to cope with files that epstopdf can’t
manage. Unfortunatelyxpdf’suseofthemediabox appears tohavesomesortofround-off
errorthatclips off apixelor two.
Apparently Adobe Distiller can produce PDF files with correct MediaBoxes. It is not
freelyavailableonlinux.
3.3 Fonts
FontsinPDFandPSareoftenproblematic. Ingeneralitisimportanttoincludetheentire
font intothe file, unless it is one ofthe “standard” Adobe fonts that exist on allprinters.
Ifyoudon’t,youmay get a PDF file that can’t be printedon someprinters,or viewed on
someoperatingsystems.
IfthePDFfileisproducedfromTeX,thereare standardways toproducegoodlooking
PDF, by using Type 1 fonts rather than TeX’s original bitmapped fonts. These files will
workfine.
TheproblemisfundamentallytheuseofTrueTypefonts.Sincetheseareavailablemostly
7
onlyonWindowsmachines,usingthemwillproducePDFfilesthatareofdubiousportability.
Acroreadwillrenderthem,butotherconversiontoolswilloftenfinditdifficult. Aprocedure
(providedbyEarlMarmar)formakingpdflatexcompatiblepdffiles,startingfromillustrator
is as follows:
In Illustrator:
1) Check your fonts: pull down the "type" menu, to "find font...";
uncheck the "truetype" box
2) If any of your fonts disappeared from the second list, then they were
truetype. Replace them with type 1 (one of the ones from the list that
remained after unchecking the "truetype" box)
3) An alternative to replacing the truetype fonts, is to convert them to
type 1 during step 7 below, but this seems to create less pleasant
looking pdf
4) From the file menu, use "save as" to save the file in illustrator pdf
format
5) open the resulting pdf file with acrobat
In acrobat:
6) change the bounding box if you want to remove white space around the
figure: use the crop tool for this (double click the crop icon to get a
widget if you prefer)
7) from the file menu, export to eps without preview, using postscript
level 2; font inclusion: all embedded (although this does not seem to
help if you are using truetype fonts).
The resulting file should work with epstopdf on linux, and the pdf file you get from that
shouldwork withpdflatex onlinux.
4 Using pstoedit and xfig
OneapproachtofixingPSfiguresthatareunsatisfactoryistoconvertthemintoaneditable
format. Theprogrampstoeditdoesa remarkablygoodjobonthis for PSvectorfilesthat
are not too perverse (bitmaps are a different issue). Its forte is converting vector eps into
“fig”format,whichisthenativeformatofthelinuxeditingtoolxfig. Oncetheconversion
to fig format is complete, your xfig can open the fig file and edit it as needed. Because
xfig is so good at exporting properly bounded PS (export eps), once you have it inxfig
asvectors,youcanbeprettymuchguaranteedtogeta satisfactoryPSfile. Thepstoedit
converteralsosupportsotherformats,butmany ofthemarethroughtheuseofgs. Soifgs
has aproblem,theconversionmay have thesameproblem.
Onceinxfigyoucanusuallyfixtheproblemswiththefile. Themost frequent arethat
thereare spurious drawnlinesor points outside the proper drawing. Thiscan happenifa
8
larger drawing is unsatisfactorily cropped. Some programs do this by simply maskingout
theregion. Thewaytofixitistodeletethoseextraneousextrapoints. Sometimesit might
seemas ifyouhavedeletedthem butxfig stilldoesn’t outputa tight boundingbox. This
is almost always because there are hidden points still present. The best test for that in
xfigis todofromthemenu: view,zoomtofitcanvas. Thenyou’llusuallyseewherethose
additionalpoints are andcandeletethem.
Theconversiontofigformatwillsometimesgiveyouhorridcourierfontsinsteadofwhat
the PS file had. Believe it or not this is agoodthing! Theconversionwas unable to find
fonts on the system, so it substitutedthose courier fonts instead. Therefore youhave got
rid ofincompatiblefonts. To getback decent-lookingfonts,eitherdo the conversion again
withtheextraswitchsetting-df Helvetica,orusetheupdatetooltochangethefontface
ofthe entire figure tooneof those available inxfig,e.g. Helvetica. Dothis by combining
everythingyouwanttochangeintoagroupedobjectandthenapplyingtheupdatetoolwith
justthefontfacechecked.
Problems occasionally arise with vector drawn fonts in pstoedit conversion. The lines
that the letters, or sometimes graphical objects, are made of may have their corner styles
changed,resultinginless satisfactoryaesthetics.
5 Bitmap Formats
Bitmapsareinescapableforphotographsandarealsousedforcolorcontoursandavarietyof
colorgradients. Thereisalonglistofformats. Fortunatelythereexistcomprehensivesetsof
tools fordealingwiththem,suchas theNetPBMutilities
2
,aswellasfreelyavailableimage
editorssuchasGIMP.Ifthegraphicconsistsofnothingbutthebitmap,thenitisrelatively
easytodealwith,andthemainquestionis howtoavoidgettingaPSfilethatis enormous.
Infactit maywellbethebestpolicytoaskcoauthorsiftheyaresupplyingphotographsto
supplytheJPEGfileitself. ThenyoucanconvertittoPSinyourownrationalway,rather
thanreceivingabutcheredfilefromsomeoneelse’sattempt toconvert.
5.1 PNM to PS
ThedefactolowestcommondenominatorofbitmapsonlinuxisthePNMformat. Ifaafile
can be converted into this format,then it is easy to convert this into reasonably compact
PSandPDF.Thereis autilitypnmtops,whichworksbut givesverybulkyfiles. ThewayI
usuallydoitis touseJPEGformatinside thePSfile,whichgives goodcompressionofthe
bitmaptoreducethesizeofthePSfile. Thefollowingcommandswilldothejob:
cjpeg -qual 100 filebase.pnm >filebase.jpg
jpeg2ps filebase.jpg > filebase.eps
Herecjpegandjpeg2psarelinuxutilitiesthatarepresentinmanydistributionsoravailable
offtheweb. TheyareconvertersfromPNMtoJPEGandJPEGtoPSrespectively. Choosing
quality= 100ensures minimalimagequality loss,butproduceslarger files thanthedefault
(75). Itdependsonyour image whethertheextraqualityis needed.
2AnothersetoftoolsisImageMagick. MyexperiencewithNetPBM
hasbeenbetter.
9
5.2 JPEG
Itmayseem obvious that if you already havea JPEG bitmap,just the second of thecom-
mands above is all you needto convert it to PS.Unfortunately,that obvious fact is false.
Some JPEGs arecoded as “progressive JPEG”, which is the type that ona slowweblink
starts out blurred and chunky and gradually gets sharper as more of the datais received.
This typecannot be includedintoeps files. Insteadyouhave toconvertittothestandard
jpegfirstthroughthestep:
djpeg -pnm fileold.jpg | pnmcrop >filenew.pnm
followedby standardtreatmentoftheresultingpnmfile.
5.3 GIF
The GIF standardused tobeplaguedby a patent that UNISYSwas grantedon the com-
pressionmethodGIFuses. Thatpatenthaslapsednow,butitstillleavesasourtaste. Still
therearelotsofGIFs outthere. TheutilitytoconverttoPNMis:
giftopnm file.pnm | pnmcrop | pnmmargin 10 >file.pnm
Notice the optional use of pipes through the utility pnmcrop which ensures that uniform
colorregions arecroppedofftheoutside,andpnmmargin whichputsback asmallmarginof
10pixels here.
5.4 PNG
Portable Network Graphics (PNG) is a standard designed to replace GIF.It is supported
by modernbrowsers. Asmightbe expected,there’s aconverter. Itiscalledpngtopnm,and
worksjustthesameastheothers.
There areactually acoupleofotherconverters that soundinteresting,but Idon’thave
experience with. imgtops is available at http://imgtops.sourceforge.net/. “It takes
bitmapimages(inalmostanycommonformat)andturnsthemintoEncapsulatedPostScript
files. ItusesPostScriptLevel2and3featuresinordertominimizethesizeoftheoutputfiles
without reducing image quality.” It requires Python to be installed. The other, bmeps, is
athttp://www.e-technik.fh-schmalkalden.de/personen/dhp/krause(clicktoSoftware
(english),bmeps + dvips-add-on). It works onPNG andPNMfiles (aswellas JPEG,but
forJPEGs,jpeg2psissaidtobebetter). Theseuseloss-less compression.
5.5 Combined Vector and Bitmap Graphics
Theharder situationiswhenagraphicalobject has bothbitmapsandvectors and fonts in
it. Theoptionsfordealingwithit,ifitissomehowbrokenareeithertoedititusingthetool
thatoriginallyproduceditoranalternativesufficientlypowerfuldrawingtool,ortoconvert
it completelyintoabitmapandeditit from there.
If all you need to do is to rotate it, then follow the steps using xfig described under
orientation (2.5). Whenthatis done,theresultingPSfilewillhaveasimpleboundingbox
linesuchas
10
Documents you may be interested
Documents you may be interested