feat/export-service
main
PDF 导出器内嵌函数图像矢量图,与 HTML 的静态 SVG 视觉一致。
render.py
PlotGeometry
compute_geometry
render_svg
app/plot/render_reportlab.py
Drawing
Line
PolyLine
String
Group
renderScale
pdf.py
_block_function_plot
FunctionPlotBudget
format_plot_diagnostic
_common.py
新增 6 个测试(共享几何、reportlab Drawing、PDF 内嵌/回退/超限),717 测试全部通过。
🤖 Generated with Claude Code
暂不建议合并,仍有以下问题需要修复:
函数图像采样仅排除了非有限坐标,没有将曲线裁剪到绘图区。
例如设置 range: -1, 1 并绘制 y = 10*x 时,生成的曲线坐标会远超图表和页面范围。ReportLab 不会像 SVG viewport 一样自动裁剪,可能导致曲线覆盖 PDF 中的其他内容。
range: -1, 1
y = 10*x
建议:
range
纵轴标签先使用绝对坐标定位,随后又以相同坐标作为旋转中心,造成坐标重复变换。实测标签边界落在负数横坐标区域,因此导出的 PDF 中无法正常显示纵轴标签。
当前实现已经支持把 Function Plot 作为矢量图嵌入 PDF,但 pdf.py 的模块说明仍称函数图像使用占位内容,请同步更新。
上一轮提出的问题均已解决:
717 passed
git diff --check
另外,本 PR 后续加入了 PDF 函数图像矢量渲染,但标题和描述尚未体现,测试数量仍写为 711。建议修复上述问题后同步更新 PR 描述和测试结果。
No dependencies set.
The note is not visible to the blocked user.
PDF 导出器内嵌函数图像矢量图,与 HTML 的静态 SVG 视觉一致。
render.py共享几何:新增PlotGeometry+compute_geometry,render_svg改为薄序列化层,SVG 输出与重构前逐字节一致(8 组用例回归验证)app/plot/render_reportlab.py:消费共享几何产出 reportlab 矢量Drawing(网格/坐标轴Line、曲线PolyLine、刻度/标签String、ylabelGroup旋转),复用 STSong-Light 渲染中文,按页面内容宽renderScale缩放pdf.py的_block_function_plot改为内嵌矢量图(解析/渲染失败或超预算回退占位,单图失败不阻断整篇);mermaid 仍占位FunctionPlotBudget+format_plot_diagnostic到_common.py,HTML/PDF 共用新增 6 个测试(共享几何、reportlab Drawing、PDF 内嵌/回退/超限),717 测试全部通过。
🤖 Generated with Claude Code
审阅结论
暂不建议合并,仍有以下问题需要修复:
P2:显式范围外的曲线未裁剪
函数图像采样仅排除了非有限坐标,没有将曲线裁剪到绘图区。
例如设置
range: -1, 1并绘制y = 10*x时,生成的曲线坐标会远超图表和页面范围。ReportLab 不会像 SVG viewport 一样自动裁剪,可能导致曲线覆盖 PDF 中的其他内容。建议:
range时的回归测试。P2:PDF 纵轴标签被旋转到画布之外
纵轴标签先使用绝对坐标定位,随后又以相同坐标作为旋转中心,造成坐标重复变换。实测标签边界落在负数横坐标区域,因此导出的 PDF 中无法正常显示纵轴标签。
建议:
P3:PDF 导出器说明已经过时
当前实现已经支持把 Function Plot 作为矢量图嵌入 PDF,但
pdf.py的模块说明仍称函数图像使用占位内容,请同步更新。已确认修复
上一轮提出的问题均已解决:
验证结果
717 passedgit diff --check:通过main:无合并冲突另外,本 PR 后续加入了 PDF 函数图像矢量渲染,但标题和描述尚未体现,测试数量仍写为 711。建议修复上述问题后同步更新 PR 描述和测试结果。
Pull request closed