Technicalflight转换工具使用Python对pdf,svg,png等进行转换
代码开源在Github:/Technicalflight/Python-Transformation
感谢你们的小星星!!!!
上手指南
将Python文件下载后,先将requirements.txt文件中的依赖进行下载
开发前的配置要求
Python3
安装步骤
在 Window 平台上安装 Python 的简单步骤:打开 WEB 浏览器访问:/downloads/windows/
在下载列表中选择Window平台安装包,包格式为:python-XYZ.msi 文件 , XYZ 为你要安装的版本号。
要使用安装程序 python-XYZ.msi, Windows 系统必须支持 Microsoft Installer 2.0 搭配使用。只要保存安装文件到本地计算机,然后运行它,看看你的机器支持 MSI。Windows XP 和更高版本已经有 MSI,很多老机器也可以安装 MSI。
下载后,双击下载包,进入 Python 安装向导,安装非常简单,你只需要使用默认的设置一直点击"下一步"直到安装完成即可。
配置环境变量
运行zhuanghuan.py
python zhuanghuan.py
#!/usr/bin/python# -*- coding:utf-8 -*-# @AuThor : Technicalflight# @Time : .7# @version :# V1#from svglib.svglib import svg2rlgfrom reportlab.graphics import renderPMimport cv2import execjsimport aspose.words as awimport js2pyfrom svglib.svglib import svg2rlgfrom reportlab.graphics import renderPDF#svg to pngdef svg_to_png():svg = input("请输入svg文件的路径:")png = input("请输入保存为png格式的文件名:")pic = svg2rlg(svg)renderPM.drawToFile(pic,png + '.png')#png to svgdef png_to_svg():png = input("请输入png文件的路径:")fileNames = [png]svg = input("请输入保存为svg格式的文件名:")doc = aw.Document()builder = aw.DocumentBuilder(doc)shapes = [builder.insert_image(fileName) for fileName in fileNames]pageSetup = builder.page_setuppageSetup.page_width = max(shape.width for shape in shapes)pageSetup.page_height = sum(shape.height for shape in shapes)pageSetup.top_margin = 0pageSetup.left_margin = 0pageSetup.bottom_margin = 0pageSetup.right_margin = 0doc.save(svg + ".svg")#svg to jpgdef svg_to_jpg():svg = input("请输入svg文件的路径:")jpg = input("请输入保存为jpg格式的文件名:")doc = aw.Document()builder = aw.DocumentBuilder(doc)shape = builder.insert_image(svg)shape.image_data.save(jpg + ".jpg")#jpg to svgdef jpg_to_svg():jpg = input("请输入jpg文件的路径:")fileNames = [jpg]svg = input("请输入保存为svg格式的文件名:")doc = aw.Document()builder = aw.DocumentBuilder(doc)shapes = [builder.insert_image(fileName) for fileName in fileNames]pageSetup = builder.page_setuppageSetup.page_width = max(shape.width for shape in shapes)pageSetup.page_height = sum(shape.height for shape in shapes)pageSetup.top_margin = 0pageSetup.left_margin = 0pageSetup.bottom_margin = 0pageSetup.right_margin = 0doc.save(svg + ".svg")#pdf to svgdef pdf_to_svg():pdf = input("请输入pdf文件的路径:")svg = input("请输入保存为svg格式的文件名:")doc = aw.Document(pdf)for page in range(0, doc.page_count):extractedPage = doc.extract_pages(page, 1)extractedPage.save(f"Output_{page + 1}" + svg +".svg")#从1开始遍历所有文件print("按任意键继续...")input()for i in range(1, doc.page_count):#打开文件并读取代码with open(f"Output_{i}" + svg +".svg", "r",encoding='utf-8') as f:code = f.read()#删除标签内的内容code = code.replace("<image", "<text")#保存文件with open(f"Output_{i}" + svg +".svg", "w",encoding='utf-8') as f:f.write(code)print("如果想删除2段红色的文字,请在浏览器内F12打开控制台,输入以下命令:")print('''document.querySelector("svg > g > g:nth-child(5) > g > g:nth-child(1)").remove();document.querySelector("svg > g > g:nth-child(4) > g:nth-child(1)").remove();如果有残留的水印,请删除svg文件中的水印<image>标签''')#svg to pdfdef svg_to_pdf():svg = input("请输入svg文件的路径:")pdf = input("请输入保存为pdf格式的文件名:")drawing = svg2rlg(svg)renderPDF.drawToFile(drawing, pdf + '.pdf')if __name__ == '__main__':#死循环while True:cz = input("""\033[1;32mTechnicalflightyyds--------------1.svg to png2.png to svg3.svg to jpg4.jpg to svg5.pdf to svg6.svg to pdf7.exit.-~~~~~~~~~-._ _.-~~~~~~~~~-.__.' ~. .~ `.__.'// \./ \\`..'// | \\`..'// .-~"""""""~~~~-._|_,-~~~~"""""""~-. \\`..'//.-" `-. | .-' "-.\\`..'//______.============-.. \ | / ..-============.______\\`..'______________________________\|/______________________________`.\033[0m""")if cz == '1':svg_to_png()print("图片已保存")print('按任意键返回操作菜单')input()elif cz == '2':png_to_svg()print("svg已保存")print('按任意键返回操作菜单')input()elif cz == '3':svg_to_jpg()print("jpg已保存")print('按任意键返回操作菜单')input()elif cz == '4':jpg_to_svg()print("svg已保存")print('按任意键返回操作菜单')input()elif cz == '5':pdf_to_svg()print("svg已保存")print('按任意键返回操作菜单')input()elif cz == '6':svg_to_pdf()print("pdf已保存")print('按任意键返回操作菜单')input()elif cz == '7':print("退出") break
v2 新加pdf to word 和word to pdf功能
运行截图: