news 2026/4/18 5:32:56

ezdxf 打印dxf为pdf 字体乱码转换

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
ezdxf 打印dxf为pdf 字体乱码转换

# 替换所有文本样式中的字体为 gbcbig.shx

for style in doc.styles:

style.dxf.font = 'gbcbig.shx'

import ezdxf from ezdxf.addons.drawing import RenderContext, Frontend from ezdxf.addons.drawing.matplotlib import MatplotlibBackend import matplotlib.pyplot as plt import tkinter as tk from tkinter import filedialog import os import subprocess import sys def dxf_to_pdf(dxf_path, pdf_path): """将DXF文件转换为PDF,并将所有字体替换为gbcbig.shx""" # 读取 DXF 文件 doc = ezdxf.readfile(dxf_path) # 替换所有文本样式中的字体为 gbcbig.shx for style in doc.styles: style.dxf.font = 'gbcbig.shx' # 创建渲染环境 fig = plt.figure() ax = fig.add_axes([0, 0, 1, 1]) # 创建后端渲染器 backend = MatplotlibBackend(ax) context = RenderContext(doc) frontend = Frontend(context, backend) # 渲染图形 frontend.draw_layout(doc.modelspace()) backend.finalize() # 保存为 PDF fig.savefig(pdf_path, format='pdf', bbox_inches='tight') plt.close(fig) def open_file(filepath): """跨平台打开文件""" if sys.platform.startswith('darwin'): # macOS subprocess.call(['open', filepath]) elif sys.platform.startswith('win'): # Windows os.startfile(filepath) elif sys.platform.startswith('linux'): # Linux subprocess.call(['xdg-open', filepath]) def convert_dxf_full_gui(): """完整的GUI交互式DXF转PDF功能""" # 创建隐藏的根窗口 root = tk.Tk() root.withdraw() # 隐藏主窗口 root.attributes('-topmost', True) # 确保对话框置顶显示 # 选择DXF文件 dxf_path = filedialog.askopenfilename( title="选择DXF文件", filetypes=[("DXF files", "*.dxf"), ("All files", "*.*")] ) if not dxf_path: print("未选择DXF文件,程序退出") root.destroy() return # 弹窗选择保存路径和文件名 pdf_path = filedialog.asksaveasfilename( title="保存PDF文件", defaultextension=".pdf", filetypes=[("PDF files", "*.pdf"), ("All files", "*.*")], initialfile=os.path.splitext(os.path.basename(dxf_path))[0] + ".pdf" # 默认文件名为DXF文件名 ) # 销毁根窗口 root.destroy() # 如果用户选择了保存路径,则执行转换 if pdf_path: try: dxf_to_pdf(dxf_path, pdf_path) print(f"转换完成: {pdf_path}") # 转换完成后打开PDF文件 open_file(pdf_path) except Exception as e: print(f"转换失败: {e}") else: print("操作已取消") # 运行完整GUI版本 if __name__ == "__main__": convert_dxf_full_gui()
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 6:04:12

13、量子退相干:从基础到复杂情境的深入剖析

量子退相干:从基础到复杂情境的深入剖析 在量子物理的研究中,退相干是一个至关重要的概念,它描述了量子系统如何从量子态转变为经典态。本文将围绕量子布朗运动(QBM)模型展开,深入探讨退相干过程中的多个关键方面,包括相干态叠加的退相干、首选态的选择以及简单模型的局…

作者头像 李华
网站建设 2026/4/18 7:29:22

FaceFusion镜像一键部署指南:Docker环境下极速启动

FaceFusion镜像一键部署指南:Docker环境下极速启动 在短视频创作、数字人生成和影视后期日益依赖AI视觉技术的今天,人脸替换已不再是实验室里的概念,而是实实在在落地到内容生产流水线中的关键环节。FaceFusion作为开源社区中表现突出的人脸交…

作者头像 李华
网站建设 2026/4/18 7:54:21

19、量子信息科学中的光子:从熵到纠缠态的深入探索

量子信息科学中的光子:从熵到纠缠态的深入探索 1. 冯诺依曼熵 在信息理论中,许多热力学概念都有了新的表述方式。比如,熵用于衡量系统的无序程度,而香农熵则用于衡量经典概率分布的不确定性。香农熵的概念可以应用于量子力学,只不过在量子力学中,经典概率分布被密度算符…

作者头像 李华
网站建设 2026/4/18 5:33:07

25、量子信息:纠缠、纯化与纠错

量子信息:纠缠、纯化与纠错 1. 量子纠错基础 在量子计算中,我们将 $k$ 个逻辑量子比特编码到 $n$ 个物理量子比特中。码字所在的子空间 $H_L$ 维度为 $2^k$,而所有量子比特的希尔伯特空间 $H$ 维度为 $2^n$。可能的错误算子(由最多 $t$ 个泡利算子的张量积组成)会将 $H_…

作者头像 李华
网站建设 2026/4/18 5:31:05

26、量子信息中的纠缠:定义、检测与特性

量子信息中的纠缠:定义、检测与特性 1. 混合态纠缠的定义 在量子信息领域,对于混合态的纠缠需要进行明确定义。如果一个态不能通过局域操作(以及经典通信)从一个积态制备出来,那么这个态就被称为纠缠态。这个定义具有多方面的合理性: - 它与之前对纯态纠缠的定义相兼容…

作者头像 李华
网站建设 2026/4/18 11:02:32

【Open-AutoGLM文本准确率突破】:9大优化策略揭秘,提升精度高达47%

第一章:Open-AutoGLM文本准确率提升的背景与意义在自然语言处理领域,大语言模型的文本生成能力正面临日益增长的准确性挑战。Open-AutoGLM作为开源自动推理框架,致力于通过结构化提示工程与动态校验机制提升生成结果的可靠性。其核心目标是在…

作者头像 李华