我正在LuaLaTex 中给我们写一个小程序。它的目的是生成具有给定 uuid 的 qr 码,qr 码打印在页面上,uuid 存储在 pdf 的元数据中。
尽管如此,我认为最好在texmf
文件夹中包含一个可执行文件,以便由我的文档中的类文件调用。要生成我使用qrencode & convert
此 lua 脚本(Linux)的二维码uuidqrcode.lua
:
#!/usr/bin/env lua
function gen_qr_uuid ()
local uuid = require 'uuid'
-- uuid.seed(math.randomseed(os.time()))
local encode = uuid()
local name = encode
local format = 'pdf'
local qrencode = string.format(
[[qrencode \
--type=EPS \
--output=%s.eps \
--size=10 \
--level=H \
--margin=0 \
--casesensitive \
%s \
]],
name,
encode)
local convert = string.format(
[[convert \
%s.eps \
%s.%s \
]],
name,
name,
format)
local rmeps = string.format("rm %s.eps", name)
os.execute(qrencode)
os.execute(convert)
os.execute(rmeps)
end
for i=1, (arg[1] or 1) do
gen_qr_uuid ()
end
要将这个脚本转换为独立的可执行文件,我luastatic
与该脚本一起使用makeluaexec
:
#!/bin/sh
luastatic $1 `pkg-config --libs --cflags lua`
有了这个,我就有了一个可执行文件,但它仍然依赖于qrencode & convert
,所以当我移动到另一台 Linux 机器时,必须安装这些工具。有没有办法将这些工具打包到我自己生成的可执行文件中?
答案1
是的。该qrencode
程序只是一个包装libqrencode,并且该convert
命令只是一个包装器图像魔术师。不要调用这些命令,而是直接从代码中调用库函数。绑定如https://github.com/isage/lua-imagick和https://github.com/vincascm/qrencode对此很有用。然后调用时luastatic
,传入相关的静态库即可。