zjg121 发表于 2024-3-25 20:41

svg到jpg,jpg插入word,word转pdf

from docx import Document
from docx.shared import Inches
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT
import comtypes.client
import cairosvg
from PIL import Image
import io


def svg_to_white_bg_jpg(svg_file, output_jpg_file):
    # 将SVG文件转换为PNG格式
    png_data = cairosvg.svg2png(url=svg_file)

    # 使用PIL库打开PNG文件
    img = Image.open(io.BytesIO(png_data))

    # 将图像背景设置为白色
    white_bg_img = Image.new("RGBA", img.size, "white")
    white_bg_img.paste(img, mask=img.split())# 使用alpha通道作为mask

    # 将修改后的图像保存为JPG格式
    white_bg_img.convert("RGB").save(output_jpg_file)


def word_to_pdf(word_path, pdf_path):
    # 创建Word应用程序的实例
    word = comtypes.client.CreateObject('Word.Application')
    word.Visible = False# 不显示Word界面

    # 打开Word文档
    doc = word.Documents.Open(word_path)

    # 将Word文档保存为PDF
    doc.SaveAs(pdf_path, FileFormat=17)# 17代表PDF格式

    # 关闭Word文档并退出Word应用程序
    doc.Close()
    word.Quit()


# 创建一个新的Word文档
doc = Document()

# 设置页边距
section = doc.sections
section.top_margin = Inches(0)
section.bottom_margin = Inches(0)
section.left_margin = Inches(0)
section.right_margin = Inches(0)

# 移除页眉页脚
header = section.header
if header:
    p = header.paragraphs
    p._element.getparent().remove(p._element)
footer = section.footer
if footer:
    p = footer.paragraphs
    p._element.getparent().remove(p._element)

# 移除页眉页脚中的默认段落(如果有的话)
if doc.sections.header:
    for paragraph in doc.sections.header.paragraphs:
      p = paragraph._element
      p.getparent().remove(p)

if doc.sections.footer:
    for paragraph in doc.sections.footer.paragraphs:
      p = paragraph._element
      p.getparent().remove(p)

    # 添加一个段落并设置其对齐方式(如果需要)

# 使用示例
svg_file = "d:/1.svg"
output_jpg_file = "d:/1.jpg"
svg_to_white_bg_jpg(svg_file, output_jpg_file)

# 插入图片(假设你已经将SVG转换为PNG,并命名为'image.png')
doc.add_picture('D:/1.jpg', width=Inches(8))

# 设置所有段落居中
for paragraph in doc.paragraphs:
    paragraph.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER

# 保存文档
doc.save('d:/1.docx')

# 使用函数
word_to_pdf('d:/1.docx', 'd:/111.pdf')

zjg121 发表于 2024-3-25 22:15

licandy 发表于 2024-3-25 21:37
小白提问,有啥用?

挣钱。学会编程能提高收入。从干啥啥不行,到干啥都能干成,就自由了。

zjg121 发表于 2024-3-26 12:56

耿梦莹123 发表于 2024-3-26 12:31
html里面有很多

这样的svg的话,怎么办

<svg xmlns="http://www.w3.org/2000/svg" role="img" focusable="false" viewBox="0 -661 345 672" aria-hidden="true" style="vertical-align: -0.025ex;width: 0.781ex;height: 1.52ex;"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="matrix(1 0 0 -1 0 0)"><g data-mml-node="math"><g data-mml-node="mi"><path data-c="69" d="M184 600Q184 624 203 642T247 661Q265 661 277 649T290 619Q290 596 270 577T226 557Q211 557 198 567T184 600ZM21 287Q21 295 30 318T54 369T98 420T158 442Q197 442 223 419T250 357Q250 340 236 301T196 196T154 83Q149 61 149 51Q149 26 166 26Q175 26 185 29T208 43T235 78T260 137Q263 149 265 151T282 153Q302 153 302 143Q302 135 293 112T268 61T223 11T161 -11Q129 -11 102 10T74 74Q74 91 79 106T122 220Q160 321 166 341T173 380Q173 404 156 404H154Q124 404 99 371T61 287Q60 286 59 284T58 281T56 279T53 278T49 278T41 278H27Q21 284 21 287Z"></path></g></g></g></svg> 把这段代码先提取出来,写入空白的txt文件,然后把扩展名改为svg,就成了一个svg图片。上面这段代码就就个小写手写英语字母i,其它格式相同的,按方法处理即可。

hhy668 发表于 2024-3-25 21:02

赞赞赞赞赞

siluozi 发表于 2024-3-25 21:08

&#128077;赞赞赞

sai609 发表于 2024-3-25 21:11

wps有自带的啊

JackyLam 发表于 2024-3-25 21:14

牛牛的!已学习!

swwdd 发表于 2024-3-25 21:31

学习学习,努力进步

licandy 发表于 2024-3-25 21:37

小白提问,有啥用?

ghoob321 发表于 2024-3-25 21:40


学习了,很棒

jdwangyanlong 发表于 2024-3-25 22:04

没太看懂,这是什么意思,有明白的说一下么?这是宏命令么?
页: [1] 2 3
查看完整版本: svg到jpg,jpg插入word,word转pdf