在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) {
			
		}
	}	
}