diff --git a/examples/PASSSEAL-000001.png b/examples/PASSSEAL-000001.png new file mode 100644 index 0000000..6b8f32b --- /dev/null +++ b/examples/PASSSEAL-000001.png Binary files differ diff --git a/examples/PASSSEAL-000002.png b/examples/PASSSEAL-000002.png new file mode 100644 index 0000000..71676a5 --- /dev/null +++ b/examples/PASSSEAL-000002.png Binary files differ diff --git a/passwordseal.tex b/passwordseal.tex new file mode 100644 index 0000000..c8224c6 --- /dev/null +++ b/passwordseal.tex @@ -0,0 +1,43 @@ +%%! TEX program = xelatex +%\documentclass{minimal} +%\usepackage[UTF8]{ctex} +%\usepackage{hyperref} +%\usepackage{graphicx} +%\usepackage{tikz} +%\usepackage{svg} +%\usepackage[papersize={164.6mm,3in}]{geometry} +%\usetikzlibrary{fit,calc} +%\usepackage{qrcode} +%\begin{document} +%\begin{tikzpicture}[remember picture, overlay, shift=(current page.north west)] + %\tikzset{every node/.style={draw}} + \node [fit={(0,-2cm) ($(current page.south east) - (0,-5mm)$)}, fill=gray,inner sep=0pt, minimum width=3in] (sealarea) {}; + \path (current page.north) -- (sealarea.north) + node[midway,align=left,text width=3in] (title) {% + {\centering\sffamily\Large{天空工场新人密码封} \\ + \rmfamily\tiny SKYWORKS NEW MEMBER'S PASSWORD SEAL \par} + {\textbf{姓名:}realname} + }; + \node [anchor=north west] (logo) at (current page.north west |- title.north) {\includegraphics[width=1.3in]{20110623skyworkslogo.eps}}; + \node [draw,align=center,font=\sffamily,xshift=2in] (inperson) at (title) {本人\\亲启}; + \node [anchor=south east] (id) at (title.south east) {\textbf{学号:}\texttt{studentid}}; + \node [anchor=north west,yshift=-5mm] (un) at (title.south west) {\textbf{用户名:}\texttt{username}}; + \node [anchor=west] (pw) at (id.west |- un.east) {\textbf{密码:}\texttt{password}}; + \node [anchor=north east] (qr) at (sealarea.north east) {\qrcode[height=2.048cm]{https://thu-skyworks.org/reset}}; + \path (un.south west) -- (id.east |- un.south) node[midway,anchor=north,font=\footnotesize] + {请扫右侧二维码进入帐号激活页面,在“域\textbackslash 用户名:”中填入\texttt{thu-skyworks\textbackslash username}}; + \node [anchor=south,font=\small] (wifi) at (sealarea.south) {% + \textbf{WiFi SSID:} \texttt{skyworks\_cisco\{,\_2.4\}}\hspace{1in} + \textbf{密码:} \texttt{wifipw} + }; + \node [anchor=south,font=\small] (ads) at (wifi.north) + {% + \begin{tabular}{l l} + \textbf{工场百科:} & \texttt{https://wiki.thu-skyworks.org}\\ + \textbf{工场内参:} & \texttt{https://i.thu-skyworks.org/wiki}\\ + \textbf{工场云盘:} & \texttt{https://nas.thu-skyworks.org:5001}\\ + & \texttt{\{ftp,sftp,smb\}://nas.thu-skyworks.org} + \end{tabular} + }; +%\end{tikzpicture} +%\end{document} diff --git a/skylabel.py b/skylabel.py index 9305fe4..2fd216a 100755 --- a/skylabel.py +++ b/skylabel.py @@ -20,6 +20,8 @@ \\usepackage{graphicx} \\usepackage{tikz} \\usepackage{svg} +\\usetikzlibrary{fit,calc} +\\usepackage{qrcode} ''' texEnd = '\\end{tikzpicture}\n\\end{document}' @@ -61,7 +63,7 @@ def __init__( self, pagesize, qrsize, layout, logowidth, logooffset, textoffset, textsize, defaultPara, labelsize, matrix=(1, 1), - cellsep=(0, 0)): + cellsep=(0, 0), example=False): self.pagesize = pagesize self.qrsize = qrsize self.layout = layout @@ -73,6 +75,7 @@ self.cellsep = cellsep self.defaultPara = defaultPara self.labelsize = labelsize + self.example = example self.counter = 0 self.currentrow = 0 self.currentcol = 0 @@ -81,15 +84,18 @@ if not self.noenc: qrstr = urllib.parse.quote(qrstr) if not self.noUrlPrefix: - qrstr = urlPrefix + urllib.parse.quote(qrstr) + qrstr = urlPrefix + qrstr factory = qrcode.image.svg.SvgPathImage qrcode.make(qrstr, image_factory=factory).save( './temp/qr{}.svg'.format(self.counter)) def genTexPreamable(self): + if self.layout == 'B': + linespread = '\\linespread{0.9}\n' + else: + linespread = '' return texPreamable + '''\\usepackage[papersize={{{s[0]}mm, {s[1]}mm\ -}}]{{geometry}}\n'''.format(s=self.pagesize) + '''\\linespread{0.9} -\\begin{document} +}}]{{geometry}}\n'''.format(s=self.pagesize) + linespread + '''\\begin{document} \\begin{tikzpicture}[remember picture, overlay, shift=(current page.north west)] ''' @@ -133,7 +139,7 @@ (self.currentrow-1)*self.cellsep[1] ) ret += '{{\\includesvg[width={}mm]{{./temp/qr{}}}}};\n'.\ - format(self.qrsize, self.counter) + '\\baselineskip=2mm\n' + format(self.qrsize, self.counter) ret += '''\\path (qrcode{c}.south west) -- \ node[inner sep=0,midway,anchor=west,align=center,font=\\sffamily\\{size}] \ (logo{c}) {{{logoText}}} (qrcode{c}.south west |- (0mm,-{s}mm); @@ -148,6 +154,15 @@ size=self.textsize, text=para[0]) pass + elif self.layout == 'PASSSEAL': + with open('./passwordseal.tex', 'r') as f: + ret += f.read().\ + replace('realname', para[0]).\ + replace('studentid', para[1]).\ + replace('username', para[2]).\ + replace('password', para[3]).\ + replace('wifipw', para[4]) + pass return ret pass @@ -173,7 +188,16 @@ textsize='tiny', textoffset=(0, 0), matrix=(1, 3), labelsize=(15, 20), cellsep=(0, 22), defaultPara=[['天空工场', 'Skyworks1'], ['天空工场', 'Skyworks2'], - ['天空工场', 'Skyworks3']]) + ['天空工场', 'Skyworks3']]), + 'PASSSEAL': # New member's password seal + skylabel( + pagesize=(164.6, 76.2), + qrsize=None, layout='PASSSEAL', logowidth=None, logooffset=None, + textsize=None, textoffset=None, labelsize=(164.6, 76.2), + defaultPara=[['李超进', '2015365829', 'licao\\_j', '7uzpLDTP', + '9woofiJ5M4TL'], + ['高亦驰', '2016384732', 'gy-chuan92', 'p6wh6Grq', + 'xYdoRZU4QUcm']]) } if __name__ == '__main__': @@ -219,12 +243,12 @@ if args.generate_examples: os.makedirs('./examples', exist_ok=True) for k, v in types.items(): - v.logoText=args.logoText - v.noenc=args.noenc - v.noUrlPrefix=args.no_url_prefix + v.logoText = args.logoText + v.noenc = args.noenc + v.noUrlPrefix = args.no_url_prefix tex = v.genTexPreamable() - for i in range(v.matrix[0] * v.matrix[1]): - tex += v.genCell(v.defaultPara[i]) + for i in v.defaultPara: + tex += v.genCell(i) pass tex += texEnd with open('./temp/' + k + '.tex', 'w') as f: @@ -237,9 +261,9 @@ assert(p.returncode == 0) else: v = types[args.typeSelected] - v.logoText=args.logoText - v.noenc=args.noenc - v.noUrlPrefix=args.no_url_prefix + v.logoText = args.logoText + v.noenc = args.noenc + v.noUrlPrefix = args.no_url_prefix tex = v.genTexPreamable() with open(args.infile, 'r') as f: r = csv.reader(filter(lambda row: row[0] != '#', f))