news 2026/4/9 12:59:01

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/8 23:54:05

网络安全自学手札:构建个人知识体系的完整笔记与心得分享

01 什么是网络安全 网络安全可以基于攻击和防御视角来分类,我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术,而“蓝队”、“安全运营”、“安全运维”则研究防御技术。 无论网络、Web、移动、桌面、云等哪个领域,都有攻与防两面…

作者头像 李华
网站建设 2026/4/7 14:38:56

12、环境诱导退相干的主方程研究

环境诱导退相干的主方程研究 在量子系统的研究中,环境诱导退相干是一个重要的课题。本文将介绍几种不同系统的微扰主方程以及量子布朗运动的精确主方程,探讨环境对系统的影响。 1. 量子布朗运动的微扰主方程 考虑一个在一维空间中运动的量子粒子,其环境是一组与系统通过位…

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

17、量子纠错码与退相干:从理论到应用

量子纠错码与退相干:从理论到应用 1. 量子纠错码的发展与现状 量子纠错码是保障量子信息稳定传输和处理的关键技术。最初提出的纠错码,如Shor提出的方案,虽能实现纠错,但并非最高效。例如,它使用了维度为(2^9 = 512)的巨大希尔伯特空间,然而实际上仅需一个能容纳所有独…

作者头像 李华
网站建设 2026/4/8 23:07:38

FaceFusion与Hugging Face集成:一键加载预训练模型

FaceFusion与Hugging Face集成:一键加载预训练模型 在数字内容创作日益繁荣的今天,AI驱动的人脸图像处理技术正以前所未有的速度渗透进影视、直播、社交应用等多个领域。从短视频平台上的趣味换脸滤镜,到专业级虚拟角色生成,背后都…

作者头像 李华
网站建设 2026/3/27 17:18:13

23、量子信息科学:光子、纠缠与量子计算

量子信息科学:光子、纠缠与量子计算 1. 基于光子的量子信息科学 1.1 Bohm 型自旋 - s 纠缠 早期,Gisin 和 Peres 发现任意大自旋的纠缠粒子仍会违反贝尔不等式,这表明大的量子数并不能保证经典行为。自旋 - s 对象的纠缠态因其相关的高维希尔伯特空间,在量子信息应用(如…

作者头像 李华
网站建设 2026/4/1 17:57:07

28、量子点中的自旋电子学、量子计算与量子通信

量子点中的自旋电子学、量子计算与量子通信 1. 量子系统的可分性与蒸馏性 在量子信息领域,可分性和蒸馏性是重要的研究问题。对于具有非正部分转置的量子态 $\rho$,可以将其去极化到仍具有非正部分转置的 Werner 态。即存在如下关系: [0 > \langle\Phi^+|\tilde{\rho}^…

作者头像 李华