[reportlab-users] Future of py2pdf

Dave Kuhlman dkuhlman at rexx.com
Wed Dec 3 18:08:12 EST 2008


On Wed, Nov 19, 2008 at 11:50:48AM +0100, Dinu Gherman wrote:

> Hi,

>

> I've just looked again at a tool named py2pdf, that I wrote

> and that was included in the ReportLab distribution in 2001

> I think (with reportlab 0.92 or so!). AFAIK, the Python Wing

> IDE used this module and maybe still does.


Dinu -

Thank you for a very useful and useable tool. I use pypdf.py
frequently to produce displayable sample code for students to whom
I'm teaching Python. I hope you will continue to support it.

I've made a couple of changes to my copy of py2pdf.py. I'd like to
suggest that you consider including these changes. The changes
are:

1. I'd like to be able to add the ".pdf" extension to file names
rather than replace the ".py" with ".pdf". So I added command
line flags to control that.

2. I'd like line numbering to start with 1 rather than 0. I
hard-wired that into py2pdf.py. Maybe, if you choose to support
this, you would want to add a command line flag, for example,
something like --initial-line-number, along with a default of
0 or 1, whichever.

I've attached a patch file and the original to which I made my
changes. Needless to say, you know py2pdf.py better than I and are
likely to know better ways to make these changes. Still, I'm
hoping that a patch file will save you some work.

Thanks again for a really good tool.

- Dave



--
Dave Kuhlman
http://www.rexx.com/~dkuhlman
-------------- next part --------------
*** orig/py2pdf.py Fri Nov 21 16:08:26 2008
--- py2pdf.py Fri Nov 21 16:51:55 2008
***************
*** 42,47 ****
--- 42,50 ----
--multiPage generate one file per page (with filenames
tagged by 1, 2...), disables PDF outline
--noOutline don't generate PDF outline (default: unset)
+ --outExt output file extension (default: '.pdf')
+ --appendOutExt append rather than replace output file extension
+ (default: replace)
-v or --verbose set verbose mode

Takes the input, assuming it is Python source code and formats
***************
*** 356,362 ****
'paperFormat': 'A4',
'landscape' : 0,
'title' : None,
! 'multiPage' : 0})

# Default colors (for color mode), mostly taken from py2html.
self.pool.update({'commCol' : HexColor('#1111CC'),
--- 359,368 ----
'paperFormat': 'A4',
'landscape' : 0,
'title' : None,
! 'multiPage' : 0,
! 'outExt': '.pdf',
! 'appendOutExt' : False,
! })

# Default colors (for color mode), mostly taken from py2html.
self.pool.update({'commCol' : HexColor('#1111CC'),
***************
*** 438,443 ****
--- 444,450 ----
lo = 'tabSize= paperFormat= paperSize= landscape stdout title= fontName= fontSize='
lo = lo + ' bgCol= verbose lineNum marcs help multiPage noOutline config= input= mode='
lo = lo + ' commCol= identCol= kwCol= strngCol= paramCol= restCol='
+ lo = lo + ' outExt= appendOutExt'
longOpts = string.split(lo, ' ')

try:
***************
*** 509,514 ****
--- 516,527 ----
elif name == 'files':
self.pool['files'] = value

+ elif name == 'outExt':
+ self.pool['outExt'] = value
+
+ elif name == 'appendOutExt':
+ self.pool['appendOutExt'] = True
+
else:
# Set the value found or 1 for options without values.
self.pool[name] = value or 1
***************
*** 542,553 ****
self.options = options
self.canvas = None
self.multiLineStringStarted = 0
! self.lineNum = 0

# Set a default color and font.
o = self.options
self.currColor = o.restCol
self.currFont = (o.fontName, o.fontSize)


### Helper methods.
--- 555,568 ----
self.options = options
self.canvas = None
self.multiLineStringStarted = 0
! self.lineNum = 1

# Set a default color and font.
o = self.options
self.currColor = o.restCol
self.currFont = (o.fontName, o.fontSize)
+ self.outExt = o.outExt
+ self.appendOutExt = o.appendOutExt


### Helper methods.
***************
*** 605,611 ****
def begin(self, srcPath, numLines):
"Things to do before doing anything else."

! self.lineNum = 0
self.pageNum = 0
self.numLines = numLines
self.srcPath = srcPath
--- 620,626 ----
def begin(self, srcPath, numLines):
"Things to do before doing anything else."

! self.lineNum = 1
self.pageNum = 0
self.numLines = numLines
self.srcPath = srcPath
***************
*** 616,622 ****
self.pdfPath = sys.stdout
else:
if srcPath != sys.stdin:
! self.pdfPath = os.path.splitext(srcPath)[0] + '.pdf'
else:
self.pdfPath = sys.stdout

--- 631,641 ----
self.pdfPath = sys.stdout
else:
if srcPath != sys.stdin:
! self.pdfPath, ext = os.path.splitext(srcPath)
! if self.appendOutExt:
! self.pdfPath = '%s%s%s' % (self.pdfPath, ext, self.outExt, )
! else:
! self.pdfPath = '%s%s' % (self.pdfPath, self.outExt, )
else:
self.pdfPath = sys.stdout

-------------- next part --------------
A non-text attachment was scrubbed...
Name: py2pdf.py
Type: text/x-python
Size: 45666 bytes
Desc: not available
Url : <http://two.pairlist.net/pipermail/reportlab-users/attachments/20081203/f8ff6480/attachment-0001.py>


More information about the reportlab-users mailing list