refactor(文书纸): 抽出 A4_PAPER_MM 统一屏纸与 PDF 的页边距口径
This commit is contained in:
@@ -16,16 +16,31 @@
|
||||
* 输出为位图 PDF:文本不可选中,仅供原型演示;正式文书以服务端生成的 PDF 为准。
|
||||
*/
|
||||
|
||||
const PAGE_WIDTH_MM = 210
|
||||
const PAGE_HEIGHT_MM = 297
|
||||
const MARGIN_X_MM = 15
|
||||
const MARGIN_TOP_MM = 12
|
||||
const MARGIN_BOTTOM_MM = 14
|
||||
const CONTENT_WIDTH_MM = PAGE_WIDTH_MM - MARGIN_X_MM * 2
|
||||
import { A4_CONTENT_WIDTH_MM, A4_CONTENT_WIDTH_PX, A4_PAPER_MM } from './document-paper'
|
||||
|
||||
const PAGE_WIDTH_MM = A4_PAPER_MM.width
|
||||
const PAGE_HEIGHT_MM = A4_PAPER_MM.height
|
||||
/**
|
||||
* 页边距与屏幕上的纸**同一份口径**(`utils/document-paper.ts` 的 `A4_PAPER_MM`)。
|
||||
*
|
||||
* ⚠️ 这里曾经自己写死 15 / 12 / 14mm,与屏幕的 31.75 / 14.34mm 对不上 ——
|
||||
* 表现为「下载的 PDF 和预览的边距不一样」,而且版心宽度也差 33mm、换行位置跟着变。
|
||||
* **不要再在这里写 mm 数字**,要调就调 `A4_PAPER_MM`。
|
||||
*/
|
||||
const MARGIN_X_MM = A4_PAPER_MM.marginX
|
||||
const MARGIN_TOP_MM = A4_PAPER_MM.marginY
|
||||
const MARGIN_BOTTOM_MM = A4_PAPER_MM.marginY
|
||||
const CONTENT_WIDTH_MM = A4_CONTENT_WIDTH_MM
|
||||
const CONTENT_HEIGHT_MM = PAGE_HEIGHT_MM - MARGIN_TOP_MM - MARGIN_BOTTOM_MM
|
||||
|
||||
/** 截图版心宽度(px):约等于 180mm @96dpi,让 PDF 版面接近实际纸张 */
|
||||
const CAPTURE_WIDTH_PX = 680
|
||||
/**
|
||||
* 截图版心宽度(px)= 屏幕上纸的版心宽度(`A4_CONTENT_WIDTH_PX`)。
|
||||
*
|
||||
* 为什么必须是这个值而不是「约 180mm @96dpi」:截图时把克隆体宽度钉成它,
|
||||
* 正文的换行位置才与屏幕完全一致(都是同一个版心宽);
|
||||
* 再按 `CONTENT_WIDTH_MM / canvas.width` 缩放铺进 PDF,物理尺寸也就对了。
|
||||
*/
|
||||
const CAPTURE_WIDTH_PX = A4_CONTENT_WIDTH_PX
|
||||
/** 截图倍率:2 倍下正文与小字都还清晰 */
|
||||
const CAPTURE_SCALE = 2
|
||||
/** 量不到页眉时的兜底高度(px) */
|
||||
|
||||
Reference in New Issue
Block a user