Thursday, September 15, 2011

Removing pdf margins

 Today I was working under ESO proposals and I would include two  figure side by side, as esoform does not accept minipage I generate a pdf with the figures. But, then the problem start. It was necessary to remove the borders of the PDF file (figure I would insert). So I found the following text,  at: http://www.mobileread.com/forums/showthread.php?t=25331

By using the first example I was able to remove the borders of my figures page.

*********
Many pdf files come for the printing, thus usually some large margins. But to read on Cybook you don't want margin, or do you? For me I just want as much space to display the text as possible.

I found one tool under linux. Very simple:

PDFCROP 1.5, 2004/06/24 - Copyright (c) 2002, 2004 by Heiko Oberdiek.
Syntax: pdfcrop [options] [output file]
Function: Margins are calculated and removed for each page in the file.
Options: (defaults)
--help print usage
--(no)verbose verbose printing (false)
--(no)debug debug informations (false)
--gscmd call of ghostscript (gs)
--pdftexcmd call of pdfTeX (pdftex)
--margins " " (0 0 0 0)
add extra margins, unit is bp. If only one number is
given, then it is used for all margins, in the case
of two numbers they are also used for right and bottom.
--(no)clip clipping support, if margins are set (false)
--(no)hires using `%%HiResBoundingBox' (false)
instead of `%%BoundingBox'
--papersize parameter for gs's -sPAPERSIZE=,
use only with older gs versions <7.32 ()
Examples:
pdfcrop --margins 10 input.pdf output.pdf
pdfcrop --margins '5 10 5 20' --clip input.pdf output.pdf


Sunday, September 4, 2011

See declared variables in python

For those using python for some time, you might miss some tricks that are present in many other script languages such as Perl and Bash.

One that I miss very much in dynamical naming of variables. You can easily overcome this problem using dictionaries:
d = {}

d['foo'] = 'bar'

But python names its variables by storing them on a global dictionary named vars(). So you can create a variable by naming it after a string

vars()['foo'] = 'bar'

print foo

I don't know when one might need this, but it is doable.
 
Locations of visitors to this page