摸鱼时候的一个想法~最近沉迷做手帐,但是手上素材纸不够了,于是目光一转,看到了办公室的打印机,工贼计划启动!
虽然但是投稿到办公这里可能有点跑题了,不过办公之余就是摸鱼啦
写在前面:已经做好~
在线预览地址:http://solo.page.gd
假如我有一台a4打印机,我想打印一页m5手帐大小的图片,怎么办,以下是我的需求
- 怎么制作word文件
- 并且图片打出来不失真
- 图片比例不变
- 上传图片就能自动出a4文件
- 我需要设置出血线然后我来裁剪,裁剪几步都没关系,或者说能出一个操作步骤最少的
于是就想制作一个提示词,做成软件,做成app或者电脑端的应用程序,或者网页端的,在线上传图片就能自动出a4文件
技术栈
| 技术 | 版本/说明 |
|------|----------|
| Vue | 3.5+,Composition API + <script setup> 语法 |
| Vite | 8+,Rolldown统一打包器(不再使用esbuild+Rollup双引擎) |
| TypeScript | 严格模式 |
| Tailwind CSS | 4+(Vite 8原生支持,使用@tailwindcss/vite插件) |
| jsPDF | 2.5+,PDF生成(npm安装) |
| Pinia | 2+,状态管理(Vue官方推荐,替代Vuex) |
| VueUse | 11+,实用Composable集合(useFileDialog、useDropZone等) |
头脑风暴中: 数学原理:一页A4能打几个M5?
M5 内页尺寸(高度统一 105mm)
| 规格 | 宽 × 高 | 每页A4数量 | 布局 |
|---|---|---|---|
| 标准 M5 | 62 × 105 mm | 6 个 | 3列 × 2行 |
| 宽版 M5 | 67 × 105 mm | 6 个 | 3列 × 2行 |
| 加宽 M5 | 74 × 105 mm | 4 个 | 2列 × 2行 |
| 超宽 M5 | 80 × 105 mm | 4 个 | 2列 × 2行 |
排版计算过程(以标准M5 62×105mm为例)
A4 = 210 × 297 mm
M5 = 62 × 105 mm
水平: 210 ÷ 62 = 3.38 → 3列
垂直: 297 ÷ 105 = 2.83 → 2行
总计: 3 × 2 = 6 个
加3mm出血后间距 = 6mm:
3 × 62 + 2 × 6 = 198mm < 210mm ✅
2 × 105 + 1 × 6 = 216mm < 297mm ✅
页边距: 水平6mm/侧, 垂直40.5mm/侧 → 居中美观
图片不失真、比例不变的关键原则
- DPI 匹配:M5 在 300DPI 下 = 732 × 1240 像素,上传图片至少这个分辨率
- 等比缩放:用「适应模式」(fit) 保持比例完整,留白区域裁掉;或「填充模式」(fill) 填满但会裁切多余部分
- 绝对不要拉伸:永远不同时改宽高
- PDF 优于 Word:PDF 锁定尺寸,Word 在不同电脑上可能偏移
出血线设计
┌─────────────────────────────────┐ A4边缘
│ ╔═══════╗ ╔═══════╗ ╔═══════╗ │
│ ║出血3mm ║ ║出血3mm║ ║ ║ │
│ ╠═══M5══╣....╠═══M5══╣....╠═══M5══╣ │ ← 裁切线(红色)
│ ║ 62×105║ ║ 62×105║ ║ 62×105║ │
│ ╚═══════╝ ╚═══════╝ ╚═══════╝ │
│ ↑ 裁切线之间6mm间距,沿中间裁一刀 │
│ (每张图有3mm出血保护裁切误差) │
└─────────────────────────────────┘
裁切步骤(标准M5):
- 先沿水平裁切线裁2刀 → 分成2条
- 每条沿垂直裁切线裁2刀 → 得到3个M5
- 共5刀,得到6个M5内页
打孔位置的关键规格
查到M5的5孔活页标准参数:
孔径:5.5mm
孔间距(孔心距):19mm(工业标准)
打孔深度(孔心到纸左边):7mm
5孔总跨度:4 × 19 = 76mm
垂直居中:(105-76)/2 = 14.5mm
5个孔中心距内页顶边的位置:
孔1: 14.5mm
孔2: 33.5mm
孔3: 52.5mm ← 正中心
孔4: 71.5mm
孔5: 90.5mm
在PDF上的渲染:虚线空心圆(5.5mm直径),画在每个M5单元格左侧7mm处,这样裁切完对着虚线圆打孔就行。
理论存在,开始实(排)验(队)
二编:已做完,还有黑白版本,因为打印机不一定是彩印

