吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3327|回复: 8
收起左侧

[Python 转载] 使用Python对pdf,svg,png等进行转换

 关闭 [复制链接]
薛之谦6666 发表于 2022-7-15 11:42
本帖最后由 薛之谦6666 于 2022-7-16 01:03 编辑

代码开源在Github:https://github.com/Technicalflight/Python-Transformation
感谢你们的小星星!!!!

[Python] 纯文本查看 复制代码
#!/usr/bin/python
# -*- coding:utf-8 -*-
# @AuThor  : Technicalflight
# @Time    : 2022.7
# @version :
#   V1
#
from svglib.svglib import svg2rlg
from reportlab.graphics import renderPM
import cv2
import execjs
import aspose.words as aw
import js2py
from svglib.svglib import svg2rlg
from reportlab.graphics import renderPDF
#svg to png
def svg_to_png():
    svg = input("请输入svg文件的路径:")
    png = input("请输入保存为png格式的文件名:")
    pic = svg2rlg(svg)
    renderPM.drawToFile(pic,png + '.png')
#png to svg
def 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_setup
    pageSetup.page_width = max(shape.width for shape in shapes)
    pageSetup.page_height = sum(shape.height for shape in shapes)
    pageSetup.top_margin = 0
    pageSetup.left_margin = 0
    pageSetup.bottom_margin = 0
    pageSetup.right_margin = 0
    doc.save(svg + ".svg")
#svg to jpg
def 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 svg
def 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_setup
    pageSetup.page_width = max(shape.width for shape in shapes)
    pageSetup.page_height = sum(shape.height for shape in shapes)
    pageSetup.top_margin = 0
    pageSetup.left_margin = 0
    pageSetup.bottom_margin = 0
    pageSetup.right_margin = 0
    doc.save(svg + ".svg")
#pdf to svg
def 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 pdf
def 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;32m
                            Technicalflight
                                yyds
                            --------------
                            1.svg to png
                            2.png to svg
                            3.svg to jpg
                            4.jpg to svg
                            5.pdf to svg
                            6.svg to pdf
                            7.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功能

4

4



----------------------------------------------------------------------------------------------------------
运行截图:

1

1


2

2


3

3

免费评分

参与人数 8吾爱币 +14 热心值 +8 收起 理由
tiffanyu + 1 + 1 谢谢@Thanks!
苏紫方璇 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
yzmb8456 + 1 + 1 谢谢@Thanks!
yong123 + 1 + 1 我很赞同!
c7128 + 1 + 1 谢谢@Thanks!
caileimeng + 1 + 1 用心讨论,共获提升!
zz1181 + 1 + 1 热心回复!
zyh666 + 1 + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| 薛之谦6666 发表于 2022-7-15 13:49
后续可能会继续加入pdf转word等功能!!!如果觉得好用,那就去GitHub给个星星呗!!!!
zz1181 发表于 2022-7-15 12:44
wang919 发表于 2022-7-15 14:42
yzmb8456 发表于 2022-7-15 22:04
感谢分享
ssqhmmm 发表于 2022-7-17 17:56
不错不错,楼主
haoqixin 发表于 2022-9-7 12:01
啊啊啊  能问一下要保存成什么格式吗
tiffanyu 发表于 2022-11-20 16:54
感谢分享  
horsebojack 发表于 2024-5-15 23:54
本帖最后由 horsebojack 于 2024-5-16 00:02 编辑

这个工具很好用!
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 14:54

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表