LESSON 07 / 11
自动排版
参数管版式,数据管内容
运行一个仅直接依赖ReportLab的新写示例,生成五页布局PDF。
本课目标
1. 区分书籍参数、章节数据与渲染函数。
2. 按README命令安装并运行示例。
3. 修改JSON后检查实际生成的五页。
讲解
1
先读数据,再看代码
JSON集中放标题、句子ID、说话者、词卡和活动答案;Python负责坐标、换行和分页。把文字到处写在绘图代码里,会让同一句产生多个版本。
2
运行教学示例
下载课程文件后,按README创建独立环境,安装reportlab并运行examples/排版示例v1.1.py。默认读取同目录章节数据,输出到examples/输出。无需账户、密钥或原始私有脚本。简化PDF使用内置Helvetica呈现英文布局,中文说明保留在JSON与网页,保证仅安装ReportLab即可运行。
3
占位图就是占位图
示例用明确标记的几何占位框展示版式,没有生成角色插画。修改一条正文后,气泡与课文都应随ID更新;v1.1作业词库也从JSON词卡生成,并检查词卡与听读ID。用pdftoppm预览后检查换行与答案,不以脚本退出成功代替图像检查。
教学示例,非原始制作记录 · 简化结构
data = json.loads(data_path.read_text(encoding="utf-8"))
units = {unit["id"]: unit for unit in data["chapter"]["utterances"]}
# 五页渲染函数读取同一份正文,并明确显示插画占位。
for render in (comic_page, panorama_page, words_page,
lesson_page, homework_page):
render(canvas, data, units)
canvas.showPage()
canvas.save()真实页面案例
问题
作业句与词语宝箱及答案分别维护时,可能改了题目却没改答案。
可能原因 / 分析
文字直接散落在多个绘图位置。
修正方法
从章节数据引用正文,填空由指定词位生成;答案在家长数据区单独记录与检查。
本案例为局部抽样,修正方法是教学建议,不代表原PDF已经修订。
可复制提示词
教学示例,非原始制作记录
请帮助我修改这个教学排版示例,不读取任何私人脚本。 输入:章节数据JSON【粘贴】、当前报错或预览问题【填写】。 保持直接依赖仅reportlab,其他使用Python标准库。 章节正文通过稳定ID引用;每泡最多8词;代码与新提示词均标“教学示例,非原始制作记录”。 保留五页:漫画、场景找物、词卡、听读课文、作业。 缺插画时显示明确占位框,不把占位画面描述为已完成插画。 输出最小修改、运行命令与需要实际渲染核对的项目;不要伪造执行成功或PDF截图。
检查清单
小作业
运行一次脚本,修改JSON中一条短句,再生成并比较相应页面。