本文摘要(由AI生成):
文章主要介绍了两种解决pdz格式用虚拟打印机转换pdf文件出现空白页的方法。第一种方法是使用XPS打印,将pdz文件转换为xps文件,再将xps文件转换为pdf文件。第二种方法是使用按键精灵软件进行自动化保存图片,将pdz文件转换为bmp文件,再将bmp文件转换为pdf文件。文章还介绍了如何使用FastStone_Image_Viewer软件进行批量重命名和批量转换,以及如何使用Python进行图片合并处理。
本期过冷水会给大家分享最最最实用的解决pdz格式用虚拟打印机转换pdf文件方法出现空白页,另外一种pdz转换pdf的方法。
过冷水一直有在超星学习通上搜索资料的习惯,很多实用的中文教材书籍都能够在这上面找到,是非常实用的网址,http://erya.mooc.chaoxing.com/
前段时间遇到了一个很简单的问题,超星上下载的书籍是pdz格式的,只能用超星阅读器打开,需要转成pdf。
正常情况下用阅读器看也还好,如果有打印需求就有点麻烦,需要转成pdf。所以网上就有大量的关于pdz转pdf的方法总结,过冷水尝试了常见方法,发现有弊端,为了和大家一起避雷,就总结出来了最最最合理实用的转换教程。
1 pdz→xps→pdf
该方法是网上流传最广的方法,过冷水刚开始也是实用该方法进行pdf转换,具体实现方法是:
在阅读器中打开一本书,单击鼠标左键选择打印:
选择打印页数:
选择XPS打印,然后将其保存成xps格式的文件
打开生成的.xps文件,重复上述操作,打印保存,不同的是这次选择pdf打印,保存的自然就是pdf文件。
这个方案是网上搜索出来最多的方法。当时过冷水一直有一个疑问,为什么要选择.xps文件文件作为中间文件,而不能直接生成pdf文件?过冷水尝试过很多次都失败了。参看搜索了很多,很多案例都终于找到解决办法。
打印的时候可以选择pdf虚拟打印机,可是需要对虚拟打印机改名字,比如154,如果不改名字,超星是不能识别打印保存的 。
上述方法很实用。可是有一天过冷水发现该方法失效了,它不能做到全文打印,一本书数前几页可以打印,后面的都是空白。
常见方法行不通了,需要摸索新方法
这是网上流传的另外一种方法,首先说明该方法不实用。过冷水当时是拒绝安装虚拟打印机的,可是又没有办法,于是只能用安装了,可是安装好后还是不可以。
这个方法也是行不通的,出来后也是白页很多。过冷水总结发现其实是超星对虚拟打印的方法有可能有限制,没有办法成功保存文档。经过大量摸索过冷水测试出来了第二种绝对绝对有效的方法.
2 pdz→bmp→pdf 不使用虚拟打印机
所需要的全部文件由于仿真秀附件大小限制,已经全部上传至仿真秀QQ群文件。
首先用超星阅读器打开我们需要的文章,选择合适的大小(影响文件清晰度)、选择连续页模式:
然后使用按键精灵软件进行自动化保存图片
这里需要在按键精灵中建立一个固定脚本(亲测可用)。
//纯后台代码,挂着就行,不影响鼠标键盘使用 //F5启动调试 //F10运行,你将在【超星阅读器】内看到文档在不断向下滚动 //F12停止 // Hwnd = Plugin.Window.Find("ssReader", 0) // TracePrint Hwnd // Call Plugin.Bkgnd.LeftClick(Hwnd,0,0) // Do // Call Plugin.Bkgnd.KeyPress(Hwnd, 40) // Delay 1 Loop
你就会发现在C:\Users\当前登录的windows账户名\AppData\Local\Temp\buffer 会有一系列图片。我们这个时候就完成了 内容转图片的过程,接下来就是 bmp→pdf
这个时候需要再使用一个软件FastStone_Image_Viewer,用于实现pdf的转换。
Ctrl A全选,任意图上右键->工具:
先做一次【批量重命名】,再做一次【批量转换】(bmp转pdf)
至此我们完成了bmp→pdf的过程。可是我们不可能一个一个文件打开看啊!还需做合并处理,在此过冷水推荐使用python做图片合并处理。这里需要说明一下因为生成的pdfw文件名排序有问题,不能一次性合并,合并后1_2文件会排在1_19后面,这样就会乱,所以需要分开合并
1-9页合并程序
import PyPDF2 import os pdfFiles=[] for filename in os.listdir('.'): if filename.endswith('.pdf'): pdfFiles.append(filename) #pdfFiles.sort(key=str.lower) pdfWriter=PyPDF2.PdfFileWriter() for filename in pdfFiles: pdfFileobj=open(filename,'rb') pdfReader=PyPDF2.PdfFileReader(pdfFileobj) for pageNum in range(0,pdfReader.numPages): pageobj=pdfReader.getPage(pageNum) pdfWriter.addPage(pageobj) pdfout=open('1.pdf','wb') pdfWriter.write(pdfout) pdfout.close()
10-186页合并
import PyPDF2 import os pdfFiles=[] for filename in os.listdir('.'): if filename.endswith('.pdf'): pdfFiles.append(filename) #pdfFiles.sort(key=str.lower) pdfWriter=PyPDF2.PdfFileWriter() for filename in pdfFiles: pdfFileobj=open(filename,'rb') pdfReader=PyPDF2.PdfFileReader(pdfFileobj) for pageNum in range(0,pdfReader.numPages): pageobj=pdfReader.getPage(pageNum) pdfWriter.addPage(pageobj) pdfout=open('2.pdf','wb') pdfWriter.write(pdfout) pdfout.close()
完整合并程序
import PyPDF2 import os pdfFiles=[] for filename in os.listdir('.'): if filename.endswith('.pdf'): pdfFiles.append(filename) #pdfFiles.sort(key=str.lower) pdfWriter=PyPDF2.PdfFileWriter() for filename in pdfFiles: pdfFileobj=open(filename,'rb') pdfReader=PyPDF2.PdfFileReader(pdfFileobj) for pageNum in range(0,pdfReader.numPages): pageobj=pdfReader.getPage(pageNum) pdfWriter.addPage(pageobj) pdfout=open('当世界还小.pdf','wb') pdfWriter.write(pdfout) pdfout.close()
过冷水尝试了无数遍才实现该方法的完整转换,想在有可能有很多人有和我同样的困惑,特整理出该教程为大家提供方便。有实际需求的可以尝试。