跟着aardio助手学代码:自动调整页面缩放设施将Web页面导出为一页PDF文件

xy506 11天前 303

代码如下:

//导入相关库
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();


最新回复 (13)
  • jerry2cool 11天前
    0 2
    学习了,感谢。。。。
  • 光庆 11天前
    0 3
    学习了,感谢。。。。
  • shzhbook 11天前
    0 4
    学习了,感谢。倒是经常碰到网页的内容打印成PDF时,没办法把内容刚好铺满A4大小的(超出或是太小,就是缩放比例要调来调去的),让它能自动铺满A4页面打印的有什么好的办法呢?
  • xy506 10天前
    0 5
    shzhbook 学习了,感谢。倒是经常碰到网页的内容打印成PDF时,没办法把内容刚好铺满A4大小的(超出或是太小,就是缩放比例要调来调去的),让它能自动铺满A4页面打印的有什么好的办法呢?
    这个就是解决自动调整大小的啊
  • helloaar 10天前
    0 6
    pdf是什么库?标准库和扩展库里都没有。
  • jerry2cool 9天前
    0 7
    helloaar pdf是什么库?标准库和扩展库里都没有。

    你看看是不是这个库

  • 近我者赤 9天前
    0 8
    我用了上面的库也不行,没有41行的pdf函数
  • 近我者赤 9天前
    0 9
    楼主发下pdf库吧
  • xy506 7天前
    0 10

    此PDF库为风行者制作版本为v2.2,感谢 展飞 参与修改


    上传的附件:
    • pdf.7z (大小:18.01M,下载次数:28)
  • xy506 7天前
    0 11
    近我者赤 楼主发下pdf库吧
    看回复
  • 近我者赤 7天前
    0 12
    xy506 看回复

    感谢,我试试 另外用pdffium库,按以下改动貌似也行(底下两行也这样改)   

               // 使用pdf插件获取PDF的页面数量
               import fsys.pdfium;
               pdffile = fsys.pdfium(filename)
               pdfCount = pageNum;

    但这样改动后能显示却不能缩放

  • xy506 7天前
    0 13
    近我者赤 感谢,我试试 另外用pdffium库,按以下改动貌似也行(底下两行也这样改)      &nbs ...
    你这个代码明显有问题,pageNum没有任何定义,这个是哪里来的?,盲猜貌似应该是pdffile.pageNum吧。
  • 近我者赤 7天前
    0 14
    xy506 你这个代码明显有问题,pageNum没有任何定义,这个是哪里来的?,盲猜貌似应该是pdffile.pageNum吧。

    是的,删多了,连pdffile删掉了

    用了你才发的pdf库就没问题了.

返回