1616'''
1717
1818PROGNAME = 'CropperTktoPDF'
19- VERSION = '0.20210218 '
19+ VERSION = '0.20210423 '
2020
2121import os
2222import sys
23+ import argparse
2324import re
2425from PIL import Image , ImageTk , ImageFilter , ImageChops
2526from reportlab .pdfgen .canvas import Canvas
2930if py_version [0 ] == "2" :
3031 # for Python2
3132 reload (sys )
32- sys .setdefaultencoding (sys .stdout .encoding )
33+ sysenc = sys .stdout .encoding
34+ if sysenc :
35+ sys .setdefaultencoding (sysenc )
3336
3437 import Tkinter as tk
3538 import tkFileDialog as tkfd
5154default_div = 1
5255
5356class Application (tk .Frame ):
54- def __init__ (self , master = None , filename = None ):
57+ def __init__ (self , master = None , filename = None , dpi = default_dpi , iformat = default_format , pdfname = None ):
5558
5659 tk .Frame .__init__ (self , master )
5760 self .grid ()
61+ self .dpi = dpi
62+ self .ext = iformat
5863 self .createWidgets ()
5964 self .croprect_start = None
6065 self .croprect_end = None
@@ -70,8 +75,6 @@ def __init__(self, master=None, filename=None):
7075 self .h = 1
7176 self .x0 = 0
7277 self .y0 = 0
73- self .dpi = default_dpi
74- self .ext = default_format
7578 self .div = default_div
7679 self .cleanmargin = default_cleanmargin
7780 self .scale = None
@@ -95,9 +98,13 @@ def __init__(self, master=None, filename=None):
9598 if filenames :
9699 filename = filenames [0 ]
97100
101+ if pdfname :
102+ self .outfile = pdfname
103+ else :
104+ if filename :
105+ self .outfile = filename + '.pdf'
98106 if filename :
99107 self .filename = filename
100- self .outfile = self .filename + '.pdf'
101108 self .loadimage ()
102109
103110 def createWidgets (self ):
@@ -118,11 +125,11 @@ def createWidgets(self):
118125
119126 self .dpiLabel = tk .Label (self .outputFrame , text = 'DPI' )
120127 self .dpiBox = tk .Text (self .outputFrame , height = 1 , width = 4 )
121- self .dpiBox .insert (1.0 , str (default_dpi ))
128+ self .dpiBox .insert (1.0 , str (self . dpi ))
122129
123130 self .formatLabel = tk .Label (self .outputFrame , text = 'F' )
124131 self .formatBox = tk .Text (self .outputFrame , height = 1 , width = 4 )
125- self .formatBox .insert (1.0 , default_format )
132+ self .formatBox .insert (1.0 , self . ext )
126133
127134 self .divLabel = tk .Label (self .outputFrame , text = 'div' )
128135 self .divBox = tk .Text (self .outputFrame , height = 1 , width = 2 )
@@ -609,18 +616,36 @@ def __repr__(self):
609616 return '(%d,%d)-(%d,%d)' % (self .left ,
610617 self .top , self .right , self .bottom )
611618
612- def main ():
613- filename = None
614- if len (sys .argv ) > 1 :
615- filename = sys .argv [1 ]
616- # else:
617- # print ("Need a filename")
618- # return
619-
620- app = Application (filename = filename )
619+ def main (filename , dpi , iformat , pdfname ):
620+ app = Application (filename = filename , dpi = dpi , iformat = iformat , pdfname = pdfname )
621621 app .master .title (PROGNAME )
622622 app .mainloop ()
623623
624624
625625if __name__ == '__main__' :
626- main ()
626+ parser = argparse .ArgumentParser (
627+ description = 'Cropper Image to PDF' )
628+ parser .add_argument (
629+ '-d' ,
630+ '--dpi' ,
631+ metavar = 'dpi' ,
632+ type = int ,
633+ default = default_dpi ,
634+ help = 'dpi for pdf output, default is 300' )
635+ parser .add_argument (
636+ '-f' ,
637+ '--format' ,
638+ metavar = 'format' ,
639+ type = str ,
640+ default = default_format ,
641+ help = 'format trim image, default png' )
642+ parser .add_argument (
643+ '-o' ,
644+ '--outfile' ,
645+ metavar = 'outfile' ,
646+ type = str ,
647+ default = None ,
648+ help = 'output pdf name, default None' )
649+ parser .add_argument ('filename' , nargs = '?' , default = None , help = 'image file name' )
650+ args = parser .parse_args ()
651+ main (args .filename , args .dpi , args .format , args .outfile )
0 commit comments