下载地址
https://www.zhengdianxue.com/wp-content/uploads/skills/org-2s8id6b4--rollup-banner-production.zip将提示词发送给你的 AI 安装该 skills
请根据 https://skillhub.cn/install/skillhub.md,安装 @org-2s8id6b4/rollup-banner-production。用户要做易拉宝、X 展架、门型展架、竖版海报等线下竖版物料,并且需要真正可印刷的成品文件(PNG/PDF/SVG)时使用。覆盖资料消化、文案提炼、SVG 版式、大尺寸高清渲染、dpi 换算与印刷 PDF 交付。处理 Windows 上 cairosvg 不可用、大尺寸截图白屏、base64 嵌入失效、印刷尺寸不准等实际问题。
版式美学与工艺选型(出血、覆膜、灯箱片)请配合 print-poster-production 使用;本技能负责把方案做成文件。
阅读全文 (展开查看完整说明)
概述
定位与分工
- 本技能:执行产线。负责「资料 → 文案 → SVG → 高清 PNG → 印刷 PDF」,交付的是能直接发印厂的文件。
- print-poster-production:设计决策。负责版式美学、观看距离、出血、色彩模式、工艺与现场安装。
两者配合:先用后者定方向与工艺参数,再用本技能落地成品。只有后者时,产出是方案与检查表;只有本技能时,也能跑通全流程,但工艺参数需向用户或印厂确认。
何时使用
适合:
- 易拉宝、X 展架、门型展架、竖版 KT 板、展会立牌。
- 已有文案或 Logo,需要排版出图并交付印刷文件。
- 已有成品但分辨率不够(如 72dpi 网页图),需要重做印刷级版本。
不适合:
- 横版海报、画册、包装、VI 系统设计。
- 纯数字用途(公众号首图、网页 Banner)——不需要印刷精度。
七阶段工作流(S0 问需求 → S6 交文件)
S0 开工前需求采集(先问再做,不许边猜边做)
动笔前必须先向客户问齐 7 项:展架类型与精确尺寸、Logo 矢量图、公司全称+定位、核心价值主张、页面结构、联系方式、是否放二维码(这项要主动问,客户没提不代表不需要)。
完整清单、可直接发给客户的提问模板、信息归档表、量尺寸的正确方法见 references/intake-checklist.md。
一句话记忆:尺寸、Logo、主体、主打、结构、联系、二维码。
第 0 项是尺寸,也是最容易翻车的一项:易拉宝没有"标准尺寸",80×200 只是常见规格之一,85×200、120×200 都很常见。客户说"做个易拉宝"时不要默认 80×200——尺寸错了画面装不上架子,整张报废。
关键处理原则:
- 客户报不出尺寸:给常见规格清单让他对号入座;再不行请他量现有画面的可见部分(量黑边以内,别把上下黑边/白边算进去,也别拿 A4 纸或打印稿当参照)。要他拍照的话,提醒正对画面拍全、别斜着拍,旁边放个参照物(卷尺最好,矿泉水瓶也行)。
- 实在拿不到尺寸:先按 80×200 出方案稿并明确标注「尺寸待确认」,拿到确认值再出印刷稿,别把未确认尺寸的稿子直接拿去印。
- Logo 只有 JPG:说明会做抠图,先出深底合成小样请客户确认,再排版。
- 客户说不清结构:按 S2 六段式先出一版,标注「结构可调整」。
- 硬指标给不出:从客户资料 PDF 里提;资料里也没有就留空数据带,绝不编数字。
- 联系方式只给一半:只放给全的部分,宁缺毋滥,不留
____占位符。
S1 资料消化
用户通常会甩来一堆 PDF(产品 BP、公司介绍、技术方案、可整合资源)。先全部提取文本,再判断哪些是自有能力、哪些是可整合资源。
python scripts/extract_pdf_text.py --out ./pdftext 文件1.pdf 文件2.pdf ...产出按文件名分流的 .txt,逐个读完再动笔。这一步省不得——文案的硬指标(成球率、强度、回收率、专利数)全部来自这里,凭印象写必然失真。
关键分类:用户说「本公司产品」的是主推内容,说「母公司/能整合到的资源」的一律降级为背书带,一句话带过,不能抢主产品风头。
S2 文案提炼
竖版展架的标准六段式,从上到下:
- 品牌区:公司名 + 英文名 + 一句话定位(技术来源/资质背书)
- 主标题区:主推产品名 + 副标题(解决什么问题)+ 一句技术定位
- 数据带:3-4 个硬指标,每个配单位与解释(数字的说服力远大于形容词)
- 业务模块:2×2 或 1×4 卡片,每卡标题 + 3 条短句
- 背书带:学术后盾 / 母公司 / 产业协同,每条一行
- 底部:Slogan + 公司全称 + 地址(地址按用户提供的完整写,不留电话邮箱占位符)
文案规则:
- 主推产品占视觉权重 40% 以上,副业务只占剩余空间。
- 每个数字必须有出处(来自 S1 提取的资料),不许编。
- 卡片内短句控制在 16-20 字,超了断成两句。
- 底部联系方式只写用户明确给全的信息;没给的宁可不写,也不要留
____占位符(来源:S0 第 5 项)。
S3 SVG 排版
画布约定(重要):成品 80×200cm → viewBox="0 0 800 2000",即 1 画布单位 = 1 毫米。所有尺寸、字号都按毫米思考,改尺寸时整体等比即可。
字号下限(80×200cm,观看距离 1-2 米):
| 层级 | 画布单位(≈mm) |
|---|---|
| 主标题 | 55-70 |
| 副标题 | 24-32 |
| 数据大字 | 35-40 |
| 卡片标题 | 24-26 |
| 正文 | 16-19 |
| 注释/地址 | 13-15 |
文字自检(AI 排版高发问题,必做)
AI 出图最容易在文字上翻车:串行、出框、重叠、居中偏移、字距撑破容器。渲染完必须逐行核对,不能只看整体观感。
- 逐区块放大到 100% 检查,重点看:卡片正文是否串行、多行文本是否撞到卡片边框、居中文字是否真的居中、长地址是否撑出安全区。
- 居中文本优先用
text-anchor="middle"+ 固定 x,不要靠估算字符宽度手动定位——中文字宽估算一错就歪。 - 长文本(地址、长句)渲染后确认实际宽度,超出安全区就拆行或缩字号。
- 换行不要靠
n(SVG 不认),必须拆成多个<text>或<tspan x="..." dy="...">。 - 输出前用低分辨率整版小样快速扫一遍,比反复渲染 150dpi 大图省时间。
排版要点:
- 分区用注释标出像素区间(
<!-- 顶部品牌区 0-540 -->),改版时定位快。 - 深色顶部区 + 浅色主体 + 深色底部,三段式最稳,重心不飘。
- 二维码:放右上角,白底圆角卡承托(深底上必须垫白,否则扫码失败),下方配 4 字引导语(扫码联系 / 扫码咨询)。默认留一个,用户要贴纸时才用虚线预留框。
- Logo 用
<image href="data:image/png;base64,...">内嵌,文件自包含、不丢图。 - 素材是 JPG 无透明通道时,用「反预乘抠图」处理(见 references/printing-specs.md)。
S4 高清渲染
Windows 上 cairosvg 常因缺 cairo DLL 不可用;大尺寸(>3000px)用 Edge 命令行 --screenshot 会白屏或内容缩在左上角。唯一可靠方案:puppeteer-core 以 connect 模式接管已启动的 Edge。
# 1) 先起一个带调试端口的 Edge(必须独立启动,puppeteer.launch 直连会失败)
msedge.exe --headless=new --disable-gpu --no-first-run --hide-scrollbars
--user-data-dir="<tmp>/pptr_profile" --remote-debugging-port=9333 about:blank &
# 2) 生成放大副本(把 viewBox 对应的 width/height 改成目标像素)
python scripts/prep_print_svg.py --src 设计.svg --out <tmp>/print.svg --width 4724 --height 11811
# 3) connect 后按目标像素截图
node scripts/render_print.js --svg <tmp>/print.svg --out <tmp>/print.png --width 4724 --height 11811改了源文件必须重跑 prep_print_svg.py 同步副本——渲染脚本吃的是副本,不同步就会渲出旧版(本次真实踩坑)。
S5 小样确认(印刷前必过的一道关)
排版完成后,先出一张低分辨率整版小样发给客户确认,不要直接渲染印刷稿。
小样用 800px 宽的预览图即可(渲染快、体积小、客户手机上就能看清):
node scripts/render_print.js --svg 设计.svg --out 小样.png --width 800 --height 2000 --wait 1200发给客户时逐条请他核对,让他照着清单回确认,而不是笼统问"可以吗":
小样已出,麻烦按这 5 条核对:① 尺寸是不是 __×__cm(架子能装);② 公司全称、地址有没有错字;③ 数据指标对不对;④ 有没有想加/想删的板块;⑤ 二维码扫一下能不能正常加好友。
确认后我出 150dpi 印刷稿。
为什么要这一步:印刷稿渲染一次耗时几分钟、文件几十 MB,而改文案是高频需求——小样确认把改字成本压到最低。客户在小样阶段提修改是常态,在印刷稿出来后提就是返工。
S6 印刷交付
客户确认小样后再渲染印刷级文件:
python scripts/make_print_pdf.py --png <tmp>/print.png --out 成品_印刷.pdf
--width-cm 80 --height-cm 200 --dpi-png 成品_印刷150dpi.png输出三件套:
成品_印刷.pdf:页面尺寸精确等于成品厘米数,印厂直接上机。成品_印刷150dpi.png:带 dpi 元数据的位图,供喷绘/写真机直接读取。成品_矢量.svg:可改源文件(含内嵌 Logo 与二维码),后续改文案不用重排。
交付前检查:PDF 页面尺寸是否等于成品尺寸、PNG 实际 dpi 是否达标、二维码区域放大到 100% 是否边缘清晰、文字无串行出框、底部无占位符。
交付说明必须写明规格,别只丢一个文件过去,客户转手给印厂时说不清:
文件:
成品_印刷.pdf成品尺寸:80 × 200 cm(与您确认值一致)
实际像素:4724 × 11811 px,150 dpi
色彩模式:RGB(当前按写真出稿)
出血:无(满版深色底已铺满边缘;如印厂要求 3mm 出血请告知)
字体:已转路径/内嵌,不会缺字
另附 150dpi PNG 与可改矢量 SVG 各一份
发印厂前请告诉我一件事:这批是写真还是胶印/纸质印刷?
两者要的文件不一样——写真吃 RGB、100-150dpi 就够;胶印必须 CMYK、300dpi。
如果是胶印,我按 CMYK + 300dpi 重新出一份(深蓝和金色转 CMYK 会偏暗,我会先转好给您看效果)。
安装提醒:易拉宝底部画面最容易蹭地磨损,展开和收回时请抬起操作、别拖着走;展架放稳,户外记得配重。
后续要改文案、换二维码、调电话:直接找我改源文件重出,别自己在图片上改。
在 PNG 上截图改字会发虚、字体也跟原稿不一致,印出来一眼能看出来。
矢量源文件我这边留着,改个地址、换个码几分钟就出新稿。
源文件管理约定
源文件始终只有一份,文件名固定,所有修改直接落在它上面。
不要把每次修改另存成新版本——易拉宝_v2_最终版_改_final2.svg 这种文件名一旦出现,两周后没人知道该印哪份,也不知道最新改动在哪。
约定:
项目目录/
├── 易拉宝_源文件.svg ← 唯一的当前源,直接改它
├── history/ ← 历史快照,只进不改
│ ├── 易拉宝_源文件_20260903_1740.svg
│ ├── 易拉宝_源文件_20260903_1815_改地址.svg
│ └── 易拉宝_源文件_20260905_1030_换二维码.svg
├── 易拉宝_印刷.pdf ← 当前成品,覆盖更新
└── 易拉宝_印刷150dpi.png- 改稿前先快照,再动源文件:
python scripts/archive_source.py --src 易拉宝_源文件.svg --tag 改地址归档文件名自动带时间戳与备注(原名_YYYYMMDD_HHMM_备注.svg),同一分钟多次归档自动加序号,绝不覆盖。
- 成品文件也用固定名覆盖更新,旧成品需要留存时同样归档到
history/。 - 交付时只发
history/之外的当前文件,避免客户从历史版本里挑错。 - 用
--keep N可只保留最近 N 份归档,避免目录无限膨胀。
常见坑(按踩坑概率排序)
- 内联 Python 拼接 base64 失败:
python -c "... '''base64,' + b64 + '"...'"里三引号把+ b64 +包进字符串字面量,写入文件的是字面文本+ b64 +,浏览器显示破图。→ 涉及字符串拼接的脚本一律写成.py文件再执行。 - 渲染结果还是旧版:渲染脚本加载的是 tmp 下的放大副本,改完源 SVG 必须重新生成副本。
- 大尺寸截图白屏 / 内容缩在左上角:不要用
msedge --screenshot --window-size;走 puppeteer connect +setViewport。 - puppeteer.launch 报 "Code: 0":Edge 必须用
puppeteer.connect({ browserURL })接管,不能 launch。 - JPG Logo 抠图留黑边:
alpha = max(RGB) - 底噪阈值,阈值取 20 左右,再用color * 255 / alpha反预乘还原颜色。 - 占位符被印出来:底部联系方式不要留
电话:____,没确认就整条删掉。 - 客户没提二维码就忘了问:展会物料的码是线索入口,S0 阶段必须主动问,不能默认不需要。
- 文字串行 / 出框 / 重叠:AI 排版高发问题,靠"看着还行"判断必漏。渲染后逐区块放大 100% 核对,居中一律用
text-anchor="middle"。 - 跳过小样直接印:客户在印刷稿出来后提修改=整份返工。先发低清整版小样 + 5 条核对清单,确认后再渲染印刷级。
- 没问印刷方式就交稿:写真(RGB/150dpi)与胶印(CMYK/300dpi)要的文件完全不同,交错会被印厂退回。交付时固定问一句。
- 客户自己在 PNG 上改字:截图改字印出来发虚、字体不一致,一眼能看出补丁。交付时明确告知「改文案找我改源文件」,并说明源文件长期保留。
脚本
| 脚本 | 用途 |
|---|---|
scripts/extract_pdf_text.py | 批量提取参考 PDF 文本 |
scripts/prep_print_svg.py | 源 SVG → 目标像素的放大副本 |
scripts/render_print.js | puppeteer connect Edge 大尺寸截图 |
scripts/make_print_pdf.py | PNG → 精确厘米尺寸 PDF(可写 dpi 元数据) |
scripts/archive_source.py | 改稿前把源文件快照到 history/(带时间戳与备注) |
依赖:Python pymupdf、Pillow;Node puppeteer-core;本机 Edge(Chromium 内核浏览器均可)。
参考
references/intake-checklist.md:开工前 7 项必问清单(含尺寸怎么量才准)、提问模板、信息归档表、缺信息时的处理策略。references/printing-specs.md:dpi↔像素换算、常见展架尺寸、安全区与出血、色值、JPG 抠图、二维码印刷要求、印前检查清单。