在wps上使用宏打印文件
昨天,wps mac 支持宏了
今天尝试下,有些坑
准备
安装虚拟打印机
下载安装 RWTS-PDFwriter.pkg 2.4M左右
安装 pdfkit
用于合并多个pdf
brew install pdfkit
wps js宏需要注意的
let fn = `一个空格 测试.pdf`; // 目标名字
let pn = 'PDFwriter' // 打印机的名字
ActiveWindow.SelectedSheets.PrintOut(1, 20001, 1, 0, pn, 1, 1, fileNamePath, 0)
文件保存的地址是沙盒目录 直接使用Documents目录会有一些权限问题, 注意授权,这里坑了我好久,已知打印失败
通过进程管理器查看文件打开的文件和端口发现端倪 ~
~/Library/Containers/com.kingsoft.wpsoffice.mac/Data
写文件,打印的pdfkit
function MyWriteFile(name,content){
let f = FreeFile()
let fpath = `${dirpath}/${name}`
Open(fpath,f,jsBinary,jsWrite,jsLockWrite,content.length * 3)
Put(f,content) // write 会多一对“”引号
Close(f)
return fpath
}
合并打印的pdf
#!/bin/zsh
FILENAME=""
TXTNAME=""
if [ "$1" = "1" ]; then
FILENAME="Pickup.pdf"
TXTNAME="Pickup.txt"
elif [ "$1" = "2" ]; then
FILENAME="Delivery.pdf"
TXTNAME="Delivery.txt"
else
echo "参数1 提货Pickup 2 发货Delivery"
exit 1
fi
CurrentDir=$(dirname "$0")
cd $CurrentDir
rm cat "$FILENAME" 2> /dev/null
echo "合并 $TXTNAME"
echo "$(cat $TXTNAME)"
cat $TXTNAME | xargs -J {} pdftk {} cat output ${FILENAME} verbose
初始化,生成相应文件夹
const dirpath = 'DocumentsA/PDF'
function init() {
let arr = dirpath.split('/')
for(let i = 0 ,j = 1;i < arr.length; j ++ ,i ++){
let s = arr.slice(0,j)
let dirname = s.join('/')
try {
MkDir(dirname)
} catch (e) {
}
}
}