news 2026/6/9 21:27:51

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/6/9 20:07:08

11、量子系统退相干与主方程解析

量子系统退相干与主方程解析 在量子力学的研究中,退相干现象以及量子开放系统的动力学分析是重要的研究方向。下面将深入探讨量子系统的退相干过程以及用于分析其动力学的主方程。 1. 量子测量与退相干基础 在量子测量中,存在着与经典力学不同的概念差异。例如,在经典力学…

作者头像 李华
网站建设 2026/6/6 21:18:21

16、量子纠错码:保护量子信息的新策略

量子纠错码:保护量子信息的新策略 1. 背景介绍 在量子系统中,与环境的相互作用会导致量子态的退相干,从而使存储在量子态中的信息退化。尽管无法完全消除这种与环境的耦合,但近年来出现了一种名为“量子纠错码”(QECC)的新技术,它能够主动保护量子态中的信息免受环境影…

作者头像 李华
网站建设 2026/6/9 2:11:15

20、光子量子信息科学:原理与应用

光子量子信息科学:原理与应用 1. 偏振纠缠态的区分 在量子信息科学中,利用光子的偏振纠缠态是一个重要的研究方向。反对称纠缠偏振态 (|\Psi^ - \rangle_{12}) 与 (|\Psi_A\rangle_{12}) 相关联,其余三个对称态 (|\Psi^ + \rangle_{12}) 和 (|\Phi^{\pm}\rangle_{12}) 与 …

作者头像 李华
网站建设 2026/6/9 21:24:32

Open-AutoGLM操作重试策略详解:如何构建 resilient 自动化流程?

第一章:Open-AutoGLM 操作等待重试逻辑设计在分布式系统与自动化任务调度中,网络波动、服务瞬时不可用等问题可能导致操作失败。为提升 Open-AutoGLM 系统的稳定性与容错能力,需设计一套高效的操作等待重试机制。该机制通过指数退避策略结合最…

作者头像 李华
网站建设 2026/6/9 18:45:17

Open-AutoGLM如何实现跨分辨率自适应?:3大关键技术深度拆解

第一章:Open-AutoGLM 多分辨率适配方案概述Open-AutoGLM 是一种面向多模态场景的自适应语言-视觉协同推理框架,其核心能力之一在于支持多种输入分辨率下的高效图像理解与语义生成。该方案通过动态调整视觉编码器的特征提取粒度,结合语言模型的…

作者头像 李华
网站建设 2026/6/9 18:44:02

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

量子点中的自旋电子学与量子计算及量子通信 1. 量子点作为自旋过滤器和读出/存储设备 量子点连接到输入和输出电流引线(l = 1, 2)时,可作为自旋过滤器、读出设备或自旋存储器,单个自旋可存储信息。为实现此功能,关键是使量子点和引线中的自旋简并通过不同的塞曼分裂消除…

作者头像 李华