代码如下:
//导入相关库
import win.ui;
import web.view;
import pdf;
import crypt;
// 创建窗口
var winform = win.form(text="PDF页面调整")
winform.show();
// 创建web.view对象
var wb = web.view(winform);
// 加载网页
wb.go("https://aar.chengxu.online/thread-100.htm")
// 等待页面加载完成
wb.waitDoc()
// 发送CDP命令打印Web页面为PDF文件
var printToPDF = function(winform,wb,filename){
var scal = 1 // 初始化缩放比例为100%
var result = wb.cdp("Page.printToPDF", {
landscape: false, // 是否横向
displayHeaderFooter: false, // 是否显示页眉和页脚
printBackground: true, // 是否打印背景图形
scale: scal, // 缩放比例
paperWidth: 8.5, // 纸张宽度(英寸)
paperHeight: 11, // 纸张高度(英寸)
marginTop: 0, // 顶部边距(英寸)
marginBottom: 0, // 底部边距(英寸)
marginLeft: 0, // 左侧边距(英寸)
marginRight: 0 // 右侧边距(英寸)
})
// 检查是否成功生成PDF
if(result[["data"]]){
// 解码PDF数据
var bin = crypt.decodeBin(result[["data"]])
// 保存PDF文件
string.save(filename, bin)
// 使用pdf插件获取PDF的页面数量
pdffile = pdf(filename)
pdfCount = pdffile.pdfDocument.Pages.Count
//循环获取页面数量直到页面数量不符合条件退出
while(pdfCount>1){
scal = scal - 0.05
result = wb.cdp("Page.printToPDF", {
landscape: false, // 是否横向
displayHeaderFooter: false, // 是否显示页眉和页脚
printBackground: true, // 是否打印背景图形
scale: scal, // 缩放比例
paperWidth: 8.5, // 纸张宽度(英寸)
paperHeight: 11, // 纸张高度(英寸)
marginTop: 0, // 顶部边距(英寸)
marginBottom: 0, // 底部边距(英寸)
marginLeft: 0, // 左侧边距(英寸)
marginRight: 0 // 右侧边距(英寸)
})
string.save(filename, crypt.decodeBin(result[["data"]]))
// 调整后重新生成文件,获取PDF的页面数量
pdffile = pdf(filename)
pdfCount = pdffile.pdfDocument.Pages.Count
winform.text = "PDF页数:"++pdfCount
}
// 提示用户
winform.text = "PDF已保存:"++filename
}else{
// 提示用户失败
winform.text = "生成PDF失败"
}
}
filename = "D:/文件名.pdf"
printToPDF(winform,wb,filename)
win.loopMessage();