0

我需要一个 QR 码生成器,它可以生成 21500 个带有 QR 印章的唯一序列号,并将每 1000 个代码导出一个 PDF 文件,因此我们将有 22 个 PDF 文件。我怎样才能做到这一点?

4

2 回答 2

0

您可以使用您选择的语言编写脚本,循环使用Google 的 QR 码生成器来生成您需要的所有代码并将它们保存为 pdf。如果您需要更具体的答案,则需要提供更多详细信息。

于 2012-08-10T14:45:28.643 回答
0

前段时间我使用 Python、qrencode和 LaTeX 做过类似的事情。我已经修改了旧代码以满足您的需求。我假设你想要 A4 页面。二维码的内容是 PMY00001 到 PMY22000 ASCII 字符串。

#!/usr/bin/env python
import random, base64, string, os, sys

width=7.7
height=7

print "\\documentclass[a4paper,10pt]{report}"
print "\\usepackage[absolute]{textpos}"
print "\\usepackage{nopageno}"
print "\\usepackage{graphicx}"
print "\\setlength{\\TPHorizModule}{1mm}"
print "\\setlength{\\TPVertModule}{1mm}"
print "\\textblockorigin{10mm}{10mm}"
print "\\setlength{\\parskip}{0pt}"
print "\\setlength{\\parindent}{0pt}"
print "\\setlength{\\fboxsep}{0pt}"
print "\\setlength{\\tabcolsep}{0pt}"
print "\\renewcommand{\\baselinestretch}{0.8}"
print ""
print "\\begin{document}"

idx=int(sys.argv[1])

for i in range(0,25):
    for j in range(0,40):
        b = 'PMY%05d' % idx
        f = os.path.join("codes", b + ".png")
        ff = os.popen("qrencode -lH -o " + f, "w")
        ff.write(b)
        ff.close()
        print "\\begin{textblock}{" + str(width) + "}(" + str(width * i) + "," + str(height * j) + ")"
        print "\\includegraphics[height="+str(height)+"mm]{" + f + "}"
        print "\\end{textblock}"
        idx=idx+1
print "\\end{document}"

要使用它,把它写成eg qrgen.py,添加执行权限chmod +x qrgen.py,创建codes目录:mkdir codes并运行./qrgen.py 0 >codes.tex以生成codes.tex文档,然后pdflatex codes.tex生成codes.pdf文件。0 参数是起始序列号。

要获得 22 张这样的表格,最好使用循环:

for ((i=0;i<22;i++)); do ../qrgen.py $((i*1000+1)) >$i.tex; pdflatex $i.tex; done

当然,这不是最佳解决方案——你可能会得到一个更快的解决方案,使用 Python qrencode 库绑定而不是启动外部qrencode程序和一些用于直接从 Python 生成 PDF 而不是使用pdflatex.

于 2012-08-10T15:25:15.520 回答