- Fix shebangs
- Switch to options helpers - Simplify by converting a patch which creates file to a plain file
This commit is contained in:
parent
9079cda0f9
commit
604f862f74
Notes:
svn2git
2021-03-31 03:12:20 +00:00
svn path=/head/; revision=439043
3 changed files with 310 additions and 309 deletions
|
@ -3,7 +3,7 @@
|
|||
|
||||
PORTNAME= bg5pdf
|
||||
PORTVERSION= 1.0.0
|
||||
PORTREVISION= 6
|
||||
PORTREVISION= 7
|
||||
CATEGORIES= chinese print
|
||||
MASTER_SITES= ftp://freebsd.sinica.edu.tw/pub/statue/bg5pdf/ \
|
||||
LOCAL/chinsan
|
||||
|
@ -15,26 +15,30 @@ LICENSE= GPLv2
|
|||
|
||||
LIB_DEPENDS= libpdf.so:print/pdflib
|
||||
|
||||
USES= python:2
|
||||
USES= python:2 shebangfix
|
||||
SHEBANG_FILES= bg5pdf gbpdf
|
||||
python_OLD_CMD= "/usr/bin/env /usr/bin/python"
|
||||
|
||||
CFLAGS+= -fPIC
|
||||
WRKSRC= ${WRKDIR}/${PORTNAME}
|
||||
|
||||
OPTIONS_DEFINE= EXAMPLES
|
||||
|
||||
post-patch:
|
||||
${REINPLACE_CMD} -e 's,/usr/bin/python,python,g' ${WRKSRC}/bg5pdf
|
||||
post-extract:
|
||||
@${CP} ${FILESDIR}/gbpdf ${WRKSRC}
|
||||
|
||||
do-build:
|
||||
${CC} ${CFLAGS} -shared ${WRKSRC}/bg5pdflib.c -I${PREFIX}/include \
|
||||
-I${PYTHON_INCLUDEDIR} -L${PREFIX}/lib -lpdf -o ${WRKSRC}/bg5pdflib.so
|
||||
|
||||
do-install:
|
||||
@${MKDIR} ${STAGEDIR}${EXAMPLESDIR}
|
||||
@${MKDIR} ${STAGEDIR}${PYTHON_SITELIBDIR}
|
||||
${INSTALL_LIB} ${WRKSRC}/bg5pdflib.so ${STAGEDIR}${PYTHON_SITELIBDIR}
|
||||
${INSTALL_SCRIPT} ${WRKSRC}/bg5pdf ${STAGEDIR}${PREFIX}/bin
|
||||
${INSTALL_SCRIPT} ${WRKSRC}/gbpdf ${STAGEDIR}${PREFIX}/bin
|
||||
@${MKDIR} ${STAGEDIR}${PYTHON_SITELIBDIR}
|
||||
${INSTALL_PROGRAM} ${WRKSRC}/bg5pdflib.so ${STAGEDIR}${PYTHON_SITELIBDIR}
|
||||
|
||||
do-install-EXAMPLES-on:
|
||||
@${MKDIR} ${STAGEDIR}${EXAMPLESDIR}
|
||||
${INSTALL_DATA} ${WRKSRC}/test.big5 ${STAGEDIR}${EXAMPLESDIR}
|
||||
${INSTALL_DATA} ${WRKSRC}/test.big5.pdf ${STAGEDIR}${EXAMPLESDIR}
|
||||
${INSTALL_SCRIPT} ${WRKSRC}/genTest.py ${STAGEDIR}${EXAMPLESDIR}
|
||||
|
|
299
chinese/bg5pdf/files/gbpdf
Normal file
299
chinese/bg5pdf/files/gbpdf
Normal file
|
@ -0,0 +1,299 @@
|
|||
#!/usr/bin/env python
|
||||
|
||||
"""
|
||||
Bg5pdf is a simple wrapper for wrapping big5 encoding text file into
|
||||
PDF file by using PDFlib. The output of this program does not contain
|
||||
embedding fonts. You have to download Acrobat Acroread Asianfont pack
|
||||
to view and print the output file. This wrapper does not provide any
|
||||
formatting function except simple line wrapping. If you need
|
||||
sophisticated formatting, you should try CJK-LaTex or other equivalent
|
||||
tools.
|
||||
|
||||
Information about PDFlib can be found at http://www.pdflib.com.
|
||||
You might need it if you need to compile bg5pdflib module which
|
||||
is used by gbpdf.
|
||||
|
||||
You can download Acrobat Acroread Asianfont Pack at
|
||||
http://www.adobe.com/products/acrobat/acrrasianfontpack.html
|
||||
|
||||
============================================================================
|
||||
|
||||
Copyright (C) 2001 by Chen-Shan Chin
|
||||
gbpdf ver. 1.0 Date:Jun 3 2001
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or any
|
||||
later version. This program is distributed in the hope that it will
|
||||
be useful, but WITHOUT ANY WARRANTY; without even implied warranty of
|
||||
MERCHANTABILITY of FITTNESS
|
||||
|
||||
FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
|
||||
details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Sofeware
|
||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA
|
||||
|
||||
"""
|
||||
|
||||
import getopt
|
||||
from string import *
|
||||
from sys import *
|
||||
from bg5pdflib import *
|
||||
#If you want to use python binding (pdflib_py.so) coming with PDFlib,
|
||||
#remark the above line and unmark the next line.
|
||||
#from pdflib_py import *
|
||||
|
||||
|
||||
False = 0
|
||||
True = 1
|
||||
|
||||
ASCII = 0
|
||||
GB2312 = 1
|
||||
|
||||
|
||||
def renderer(doc, fn):
|
||||
p = PDF_new()
|
||||
if PDF_open_file(p, fn) == -1:
|
||||
print "Couldn't open PDF file '%s'\n" % fn
|
||||
exit(2)
|
||||
PDF_set_info(p, "Author", "gbpdf")
|
||||
PDF_set_info(p, "Creator", "gbpdf")
|
||||
PDF_set_info(p, "Title", "%s" % fn)
|
||||
cfname = doc.fontName
|
||||
cEncoding = doc.encoding
|
||||
fontSize = doc.fontSize
|
||||
topM = 792.0 / 11.0
|
||||
leftM = 792.0 / 11.0
|
||||
|
||||
PDF_begin_page(p, 612, 792)
|
||||
font = PDF_findfont(p, cfname, cEncoding, 0)
|
||||
PDF_setfont(p, font, fontSize)
|
||||
mode = GB2312
|
||||
y = 0
|
||||
pageN = 1
|
||||
for l in doc.parsedLines:
|
||||
if len(l) == 0:
|
||||
y = y + fontSize
|
||||
continue
|
||||
x = 0.0
|
||||
PDF_set_text_pos(p, leftM + x, 792 - topM -y)
|
||||
curStr = ""
|
||||
for pos in range(len(l)):
|
||||
ch = l[pos]
|
||||
if ch[0] != mode:
|
||||
if len(curStr) != 0:
|
||||
if mode == GB2312:
|
||||
font = PDF_findfont(p, cfname, cEncoding, 0)
|
||||
PDF_setfont(p, font, fontSize)
|
||||
PDF_show(p, curStr)
|
||||
else:
|
||||
font = PDF_findfont(p, "Courier", "host", 0)
|
||||
PDF_setfont(p, font, fontSize)
|
||||
PDF_show(p, curStr)
|
||||
mode = ch[0]
|
||||
curStr = ch[1]
|
||||
else:
|
||||
curStr = curStr + ch[1]
|
||||
|
||||
if len(curStr) != 0:
|
||||
if mode == 1:
|
||||
font = PDF_findfont(p, cfname, cEncoding, 0)
|
||||
PDF_setfont(p, font, fontSize)
|
||||
PDF_show(p, curStr)
|
||||
else:
|
||||
font = PDF_findfont(p, "Courier", "host", 0)
|
||||
PDF_setfont(p, font, fontSize)
|
||||
PDF_show(p, curStr)
|
||||
|
||||
y = y + fontSize + doc.lineSpacing
|
||||
if y > 792 - 2* topM:
|
||||
font = PDF_findfont(p, "Helvetica-Oblique", "host", 0)
|
||||
PDF_setfont(p, font, 12)
|
||||
PDF_show_xy(p,"Converted to PDF by gbpdf", 400, 750)
|
||||
PDF_show_xy(p,"file name: %s--Page %d" % (doc.infileName, pageN), 60,750)
|
||||
PDF_setlinewidth(p,2)
|
||||
PDF_moveto(p, 50, 740)
|
||||
PDF_lineto(p, 562, 740)
|
||||
PDF_stroke(p)
|
||||
PDF_end_page(p)
|
||||
pageN = pageN + 1
|
||||
PDF_begin_page(p, 612, 792)
|
||||
font = PDF_findfont(p, cfname, cEncoding, 0)
|
||||
PDF_setfont(p, font, fontSize)
|
||||
mode = GB2312
|
||||
y = 0
|
||||
font = PDF_findfont(p, "Helvetica-Oblique", "host", 0)
|
||||
PDF_setfont(p, font, 12)
|
||||
PDF_show_xy(p,"Converted to PDF by gbpdf", 400, 750);
|
||||
PDF_show_xy(p,"file name: %s--Page %d" % (doc.infileName, pageN), 60,750)
|
||||
PDF_setlinewidth(p,2)
|
||||
PDF_moveto(p, 50, 740)
|
||||
PDF_lineto(p, 562, 740)
|
||||
PDF_stroke(p)
|
||||
PDF_end_page(p)
|
||||
PDF_close(p)
|
||||
PDF_delete(p)
|
||||
|
||||
class document:
|
||||
infileName = ""
|
||||
fontSize = 12;
|
||||
fontNames = ["STSong-Light"]
|
||||
fontName = fontNames[0]
|
||||
encodings = ["GBK-EUC-H"]
|
||||
encoding = encodings[0]
|
||||
wrapped = False
|
||||
numOfChr = 55 #number of character per line for wrapping text
|
||||
parsedLines=[]
|
||||
lineSpacing = 2
|
||||
|
||||
def getChr(self, st, i):
|
||||
if i + 1 < len(st) and\
|
||||
(ord(st[i]) >= 161 and ord(st[i]) <= 249) and \
|
||||
((ord(st[i+1]) >=64 and ord(st[i+1]) <=126) or \
|
||||
(ord(st[i+1]) >=161 and ord(st[i+1]) <=254)) : # bg5_c
|
||||
cnchr = st[i:i+2]
|
||||
return (cnchr, 2)
|
||||
else:
|
||||
cnchr = st[i]
|
||||
return (cnchr, 1)
|
||||
|
||||
def setFontSize(self, fs):
|
||||
self.fontSize = fs
|
||||
|
||||
def setFont(self, fn):
|
||||
if not fn in self.fontNames:
|
||||
raise FontError
|
||||
else:
|
||||
self.fontName = fn
|
||||
|
||||
def setWrapped(self, yn, nc):
|
||||
if yn > 0:
|
||||
self.wrapped = True
|
||||
self.numOfChr = nc
|
||||
|
||||
def setLineSpacing(self, ls):
|
||||
self.lineSpacing = ls
|
||||
|
||||
def setFontSize(self, fs):
|
||||
self.fontSize = fs
|
||||
|
||||
def parseFile(self, filename):
|
||||
self.infileName = filename
|
||||
try:
|
||||
f = open(filename,"r");
|
||||
except IOError:
|
||||
print 'can not open file: "%s"' % filename
|
||||
exit(2)
|
||||
for line in f.readlines():
|
||||
line = rstrip(line)
|
||||
#if line[-1] == '\n':
|
||||
# line = line[:-1]
|
||||
if len(line) == 0:
|
||||
self.parsedLines.append([])
|
||||
continue
|
||||
pline = []
|
||||
pos = 0
|
||||
cpos = 0
|
||||
line_len = len(line)
|
||||
while 1:
|
||||
(chrx, inc) = self.getChr(line, pos)
|
||||
pos = pos + inc
|
||||
cpos = cpos + inc
|
||||
if inc == 2:
|
||||
pline.append([GB2312, chrx])
|
||||
else:
|
||||
pline.append([ASCII, chrx])
|
||||
if pos >= line_len:
|
||||
break
|
||||
if (self.wrapped == True) and ((cpos + 2) >= self.numOfChr):
|
||||
cpos = 0
|
||||
self.parsedLines.append(pline)
|
||||
pline = []
|
||||
self.parsedLines.append(pline)
|
||||
|
||||
def usage():
|
||||
print "usage: gbpdf [option] inputfile outfile"
|
||||
print "d: integer, s:string"
|
||||
print "-w d, --wrap=d: wrapping line up to d ASCII characters (Each GB2312 character"
|
||||
print " occupis two ASCII character spaces.)"
|
||||
print "-s d, --size=d: set the size of font (default: 11)"
|
||||
print "-f s, --font=s: set font (default: 'Msung-Light')"
|
||||
print "-l d, --linespacing=d: set spacing between line (default:2)"
|
||||
print "--inputfile=s: input file name"
|
||||
print "--outputfile=s: outfile name (default: inputfile.pdf)"
|
||||
print "--showfonts: show avaiable fonts"
|
||||
|
||||
getopt.GetoptError = getopt.error
|
||||
|
||||
def main():
|
||||
try:
|
||||
opts, args =\
|
||||
getopt.getopt(argv[1:],
|
||||
"w:s:f:l:",
|
||||
["size=",
|
||||
"font=",
|
||||
"linespacing=",
|
||||
"inputfile=",
|
||||
"outputfile=",
|
||||
"wrap=",
|
||||
"showfonts"])
|
||||
except getopt.error:
|
||||
usage()
|
||||
exit(2)
|
||||
|
||||
#print opts, args
|
||||
|
||||
doc = document()
|
||||
doc.setFont(doc.fontNames[0])
|
||||
doc.setWrapped(False, 0)
|
||||
doc.setLineSpacing(2)
|
||||
doc.setFontSize(11)
|
||||
|
||||
infile = ""
|
||||
outfile = ""
|
||||
|
||||
for opt in opts:
|
||||
if opt[0] == "--size" or opt[0] == "-s":
|
||||
doc.setFontSize(atof(opt[1]))
|
||||
continue
|
||||
if opt[0] == "--font" or opt[0] == "-f":
|
||||
doc.setFont(opt[1])
|
||||
continue
|
||||
if opt[0] == "--wrap" or opt[0] == "-w":
|
||||
doc.setWrapped(True, atoi(opt[1]))
|
||||
continue
|
||||
if opt[0] == "--linespacing" or opt[0] == "-l":
|
||||
doc.setLineSpacing(atof(opt[1]))
|
||||
if opt[0] == "--inputfile":
|
||||
infile = opt[1]
|
||||
continue
|
||||
if opt[0] == "--outfile":
|
||||
outfile = opt[1]
|
||||
continue
|
||||
if opt[0] == "--showfonts":
|
||||
print "Avaiable Fonts:"
|
||||
for f in doc.fontNames:
|
||||
print f
|
||||
exit(2)
|
||||
|
||||
if len(args) == 2:
|
||||
infile = args[0]
|
||||
outfile = args[1]
|
||||
elif len(args) == 1:
|
||||
infile = args[0]
|
||||
|
||||
if infile == "":
|
||||
print "no input file name"
|
||||
exit(2)
|
||||
|
||||
if outfile == "":
|
||||
outfile = infile+".pdf"
|
||||
|
||||
doc.parseFile(infile)
|
||||
renderer(doc,outfile)
|
||||
print "Output File is %s" % outfile
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
|
@ -1,302 +0,0 @@
|
|||
--- gbpdf.orig Fri Jul 5 01:38:22 2002
|
||||
+++ gbpdf Fri Jul 5 01:39:10 2002
|
||||
@@ -0,0 +1,299 @@
|
||||
+#!/usr/bin/env python
|
||||
+
|
||||
+"""
|
||||
+Bg5pdf is a simple wrapper for wrapping big5 encoding text file into
|
||||
+PDF file by using PDFlib. The output of this program does not contain
|
||||
+embedding fonts. You have to download Acrobat Acroread Asianfont pack
|
||||
+to view and print the output file. This wrapper does not provide any
|
||||
+formatting function except simple line wrapping. If you need
|
||||
+sophisticated formatting, you should try CJK-LaTex or other equivalent
|
||||
+tools.
|
||||
+
|
||||
+Information about PDFlib can be found at http://www.pdflib.com.
|
||||
+You might need it if you need to compile bg5pdflib module which
|
||||
+is used by gbpdf.
|
||||
+
|
||||
+You can download Acrobat Acroread Asianfont Pack at
|
||||
+http://www.adobe.com/products/acrobat/acrrasianfontpack.html
|
||||
+
|
||||
+============================================================================
|
||||
+
|
||||
+Copyright (C) 2001 by Chen-Shan Chin
|
||||
+gbpdf ver. 1.0 Date:Jun 3 2001
|
||||
+
|
||||
+ This program is free software; you can redistribute it and/or modify
|
||||
+ it under the terms of the GNU General Public License as published by
|
||||
+ the Free Software Foundation; either version 2 of the License, or any
|
||||
+ later version. This program is distributed in the hope that it will
|
||||
+ be useful, but WITHOUT ANY WARRANTY; without even implied warranty of
|
||||
+ MERCHANTABILITY of FITTNESS
|
||||
+
|
||||
+ FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
|
||||
+ details.
|
||||
+
|
||||
+ You should have received a copy of the GNU General Public License
|
||||
+ along with this program; if not, write to the Free Sofeware
|
||||
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA
|
||||
+
|
||||
+"""
|
||||
+
|
||||
+import getopt
|
||||
+from string import *
|
||||
+from sys import *
|
||||
+from bg5pdflib import *
|
||||
+#If you want to use python binding (pdflib_py.so) coming with PDFlib,
|
||||
+#remark the above line and unmark the next line.
|
||||
+#from pdflib_py import *
|
||||
+
|
||||
+
|
||||
+False = 0
|
||||
+True = 1
|
||||
+
|
||||
+ASCII = 0
|
||||
+GB2312 = 1
|
||||
+
|
||||
+
|
||||
+def renderer(doc, fn):
|
||||
+ p = PDF_new()
|
||||
+ if PDF_open_file(p, fn) == -1:
|
||||
+ print "Couldn't open PDF file '%s'\n" % fn
|
||||
+ exit(2)
|
||||
+ PDF_set_info(p, "Author", "gbpdf")
|
||||
+ PDF_set_info(p, "Creator", "gbpdf")
|
||||
+ PDF_set_info(p, "Title", "%s" % fn)
|
||||
+ cfname = doc.fontName
|
||||
+ cEncoding = doc.encoding
|
||||
+ fontSize = doc.fontSize
|
||||
+ topM = 792.0 / 11.0
|
||||
+ leftM = 792.0 / 11.0
|
||||
+
|
||||
+ PDF_begin_page(p, 612, 792)
|
||||
+ font = PDF_findfont(p, cfname, cEncoding, 0)
|
||||
+ PDF_setfont(p, font, fontSize)
|
||||
+ mode = GB2312
|
||||
+ y = 0
|
||||
+ pageN = 1
|
||||
+ for l in doc.parsedLines:
|
||||
+ if len(l) == 0:
|
||||
+ y = y + fontSize
|
||||
+ continue
|
||||
+ x = 0.0
|
||||
+ PDF_set_text_pos(p, leftM + x, 792 - topM -y)
|
||||
+ curStr = ""
|
||||
+ for pos in range(len(l)):
|
||||
+ ch = l[pos]
|
||||
+ if ch[0] != mode:
|
||||
+ if len(curStr) != 0:
|
||||
+ if mode == GB2312:
|
||||
+ font = PDF_findfont(p, cfname, cEncoding, 0)
|
||||
+ PDF_setfont(p, font, fontSize)
|
||||
+ PDF_show(p, curStr)
|
||||
+ else:
|
||||
+ font = PDF_findfont(p, "Courier", "host", 0)
|
||||
+ PDF_setfont(p, font, fontSize)
|
||||
+ PDF_show(p, curStr)
|
||||
+ mode = ch[0]
|
||||
+ curStr = ch[1]
|
||||
+ else:
|
||||
+ curStr = curStr + ch[1]
|
||||
+
|
||||
+ if len(curStr) != 0:
|
||||
+ if mode == 1:
|
||||
+ font = PDF_findfont(p, cfname, cEncoding, 0)
|
||||
+ PDF_setfont(p, font, fontSize)
|
||||
+ PDF_show(p, curStr)
|
||||
+ else:
|
||||
+ font = PDF_findfont(p, "Courier", "host", 0)
|
||||
+ PDF_setfont(p, font, fontSize)
|
||||
+ PDF_show(p, curStr)
|
||||
+
|
||||
+ y = y + fontSize + doc.lineSpacing
|
||||
+ if y > 792 - 2* topM:
|
||||
+ font = PDF_findfont(p, "Helvetica-Oblique", "host", 0)
|
||||
+ PDF_setfont(p, font, 12)
|
||||
+ PDF_show_xy(p,"Converted to PDF by gbpdf", 400, 750)
|
||||
+ PDF_show_xy(p,"file name: %s--Page %d" % (doc.infileName, pageN), 60,750)
|
||||
+ PDF_setlinewidth(p,2)
|
||||
+ PDF_moveto(p, 50, 740)
|
||||
+ PDF_lineto(p, 562, 740)
|
||||
+ PDF_stroke(p)
|
||||
+ PDF_end_page(p)
|
||||
+ pageN = pageN + 1
|
||||
+ PDF_begin_page(p, 612, 792)
|
||||
+ font = PDF_findfont(p, cfname, cEncoding, 0)
|
||||
+ PDF_setfont(p, font, fontSize)
|
||||
+ mode = GB2312
|
||||
+ y = 0
|
||||
+ font = PDF_findfont(p, "Helvetica-Oblique", "host", 0)
|
||||
+ PDF_setfont(p, font, 12)
|
||||
+ PDF_show_xy(p,"Converted to PDF by gbpdf", 400, 750);
|
||||
+ PDF_show_xy(p,"file name: %s--Page %d" % (doc.infileName, pageN), 60,750)
|
||||
+ PDF_setlinewidth(p,2)
|
||||
+ PDF_moveto(p, 50, 740)
|
||||
+ PDF_lineto(p, 562, 740)
|
||||
+ PDF_stroke(p)
|
||||
+ PDF_end_page(p)
|
||||
+ PDF_close(p)
|
||||
+ PDF_delete(p)
|
||||
+
|
||||
+class document:
|
||||
+ infileName = ""
|
||||
+ fontSize = 12;
|
||||
+ fontNames = ["STSong-Light"]
|
||||
+ fontName = fontNames[0]
|
||||
+ encodings = ["GBK-EUC-H"]
|
||||
+ encoding = encodings[0]
|
||||
+ wrapped = False
|
||||
+ numOfChr = 55 #number of character per line for wrapping text
|
||||
+ parsedLines=[]
|
||||
+ lineSpacing = 2
|
||||
+
|
||||
+ def getChr(self, st, i):
|
||||
+ if i + 1 < len(st) and\
|
||||
+ (ord(st[i]) >= 161 and ord(st[i]) <= 249) and \
|
||||
+ ((ord(st[i+1]) >=64 and ord(st[i+1]) <=126) or \
|
||||
+ (ord(st[i+1]) >=161 and ord(st[i+1]) <=254)) : # bg5_c
|
||||
+ cnchr = st[i:i+2]
|
||||
+ return (cnchr, 2)
|
||||
+ else:
|
||||
+ cnchr = st[i]
|
||||
+ return (cnchr, 1)
|
||||
+
|
||||
+ def setFontSize(self, fs):
|
||||
+ self.fontSize = fs
|
||||
+
|
||||
+ def setFont(self, fn):
|
||||
+ if not fn in self.fontNames:
|
||||
+ raise FontError
|
||||
+ else:
|
||||
+ self.fontName = fn
|
||||
+
|
||||
+ def setWrapped(self, yn, nc):
|
||||
+ if yn > 0:
|
||||
+ self.wrapped = True
|
||||
+ self.numOfChr = nc
|
||||
+
|
||||
+ def setLineSpacing(self, ls):
|
||||
+ self.lineSpacing = ls
|
||||
+
|
||||
+ def setFontSize(self, fs):
|
||||
+ self.fontSize = fs
|
||||
+
|
||||
+ def parseFile(self, filename):
|
||||
+ self.infileName = filename
|
||||
+ try:
|
||||
+ f = open(filename,"r");
|
||||
+ except IOError:
|
||||
+ print 'can not open file: "%s"' % filename
|
||||
+ exit(2)
|
||||
+ for line in f.readlines():
|
||||
+ line = rstrip(line)
|
||||
+ #if line[-1] == '\n':
|
||||
+ # line = line[:-1]
|
||||
+ if len(line) == 0:
|
||||
+ self.parsedLines.append([])
|
||||
+ continue
|
||||
+ pline = []
|
||||
+ pos = 0
|
||||
+ cpos = 0
|
||||
+ line_len = len(line)
|
||||
+ while 1:
|
||||
+ (chrx, inc) = self.getChr(line, pos)
|
||||
+ pos = pos + inc
|
||||
+ cpos = cpos + inc
|
||||
+ if inc == 2:
|
||||
+ pline.append([GB2312, chrx])
|
||||
+ else:
|
||||
+ pline.append([ASCII, chrx])
|
||||
+ if pos >= line_len:
|
||||
+ break
|
||||
+ if (self.wrapped == True) and ((cpos + 2) >= self.numOfChr):
|
||||
+ cpos = 0
|
||||
+ self.parsedLines.append(pline)
|
||||
+ pline = []
|
||||
+ self.parsedLines.append(pline)
|
||||
+
|
||||
+def usage():
|
||||
+ print "usage: gbpdf [option] inputfile outfile"
|
||||
+ print "d: integer, s:string"
|
||||
+ print "-w d, --wrap=d: wrapping line up to d ASCII characters (Each GB2312 character"
|
||||
+ print " occupis two ASCII character spaces.)"
|
||||
+ print "-s d, --size=d: set the size of font (default: 11)"
|
||||
+ print "-f s, --font=s: set font (default: 'Msung-Light')"
|
||||
+ print "-l d, --linespacing=d: set spacing between line (default:2)"
|
||||
+ print "--inputfile=s: input file name"
|
||||
+ print "--outputfile=s: outfile name (default: inputfile.pdf)"
|
||||
+ print "--showfonts: show avaiable fonts"
|
||||
+
|
||||
+getopt.GetoptError = getopt.error
|
||||
+
|
||||
+def main():
|
||||
+ try:
|
||||
+ opts, args =\
|
||||
+ getopt.getopt(argv[1:],
|
||||
+ "w:s:f:l:",
|
||||
+ ["size=",
|
||||
+ "font=",
|
||||
+ "linespacing=",
|
||||
+ "inputfile=",
|
||||
+ "outputfile=",
|
||||
+ "wrap=",
|
||||
+ "showfonts"])
|
||||
+ except getopt.error:
|
||||
+ usage()
|
||||
+ exit(2)
|
||||
+
|
||||
+ #print opts, args
|
||||
+
|
||||
+ doc = document()
|
||||
+ doc.setFont(doc.fontNames[0])
|
||||
+ doc.setWrapped(False, 0)
|
||||
+ doc.setLineSpacing(2)
|
||||
+ doc.setFontSize(11)
|
||||
+
|
||||
+ infile = ""
|
||||
+ outfile = ""
|
||||
+
|
||||
+ for opt in opts:
|
||||
+ if opt[0] == "--size" or opt[0] == "-s":
|
||||
+ doc.setFontSize(atof(opt[1]))
|
||||
+ continue
|
||||
+ if opt[0] == "--font" or opt[0] == "-f":
|
||||
+ doc.setFont(opt[1])
|
||||
+ continue
|
||||
+ if opt[0] == "--wrap" or opt[0] == "-w":
|
||||
+ doc.setWrapped(True, atoi(opt[1]))
|
||||
+ continue
|
||||
+ if opt[0] == "--linespacing" or opt[0] == "-l":
|
||||
+ doc.setLineSpacing(atof(opt[1]))
|
||||
+ if opt[0] == "--inputfile":
|
||||
+ infile = opt[1]
|
||||
+ continue
|
||||
+ if opt[0] == "--outfile":
|
||||
+ outfile = opt[1]
|
||||
+ continue
|
||||
+ if opt[0] == "--showfonts":
|
||||
+ print "Avaiable Fonts:"
|
||||
+ for f in doc.fontNames:
|
||||
+ print f
|
||||
+ exit(2)
|
||||
+
|
||||
+ if len(args) == 2:
|
||||
+ infile = args[0]
|
||||
+ outfile = args[1]
|
||||
+ elif len(args) == 1:
|
||||
+ infile = args[0]
|
||||
+
|
||||
+ if infile == "":
|
||||
+ print "no input file name"
|
||||
+ exit(2)
|
||||
+
|
||||
+ if outfile == "":
|
||||
+ outfile = infile+".pdf"
|
||||
+
|
||||
+ doc.parseFile(infile)
|
||||
+ renderer(doc,outfile)
|
||||
+ print "Output File is %s" % outfile
|
||||
+
|
||||
+if __name__ == "__main__":
|
||||
+ main()
|
Loading…
Reference in a new issue