CORE
单位转换器
在 OOXML 度量单位之间转换 — TWIP、EMU、像素、英寸、磅
OOXML 使用多种度量系统。WordprocessingML 使用 TWIP,DrawingML 使用 EMU(英制度量单位)。这些转换器弥合了它们之间的差距。
TWIP 转换
TWIP = 二十分之一磅。1 英寸 = 1440 TWIP。
import { convertMillimetersToTwip, convertInchesToTwip } from "@office-open/core";
convertMillimetersToTwip(25.4); // 1440(1 英寸)
convertInchesToTwip(1); // 1440
convertInchesToTwip(0.5); // 720
EMU 转换
EMU = 英制度量单位。1 英寸 = 914400 EMU。用于图片、形状和绘图。
像素 ↔ EMU(96 DPI)
import { convertPixelsToEmu, convertEmuToPixels } from "@office-open/core";
convertPixelsToEmu(100); // 952500
convertEmuToPixels(952500); // 100
英寸 ↔ EMU
import { convertInchesToEmu, convertEmuToInches } from "@office-open/core";
convertInchesToEmu(1); // 914400
convertEmuToInches(914400); // 1
磅 ↔ EMU
import { convertPointsToEmu, convertEmuToPoints } from "@office-open/core";
convertPointsToEmu(12); // 152400
convertEmuToPoints(152400); // 12
多态转换器
这些转换器接受原始数字(已是目标单位)或通用度量字符串(mm/cm/in/pt/pc/pi,EMU
链还支持 96 DPI 的 px)。用于 number 为原生单位、字符串提供便捷输入的字段——
number 原样透传。
import { convertToEmu, convertToTwip, convertToPt, convertToInch } from "@office-open/core";
convertToEmu("5cm"); // 1800000(几何字段:number = EMU)
convertToEmu(1800000); // 1800000
convertToTwip("1cm"); // 567(Word 段距/缩进)
convertToPt("1cm"); // 28.35(xlsx 行高)
convertToInch("1.3cm"); // 0.512(xlsx 页边距)
转换表
| 从 | 到 | 函数 | 公式 |
|---|---|---|---|
| mm | TWIP | convertMillimetersToTwip | mm × 56.692913 |
| 英寸 | TWIP | convertInchesToTwip | in × 1440 |
| 像素 | EMU | convertPixelsToEmu | px × 9525 |
| EMU | 像素 | convertEmuToPixels | emu ÷ 9525 |
| 英寸 | EMU | convertInchesToEmu | in × 914400 |
| EMU | 英寸 | convertEmuToInches | emu ÷ 914400 |
| 磅 | EMU | convertPointsToEmu | pt × 12700 |
| EMU | 磅 | convertEmuToPoints | emu ÷ 12700 |
常用单位参考
| 单位 | 全称 | 使用场景 | 1 英寸等于 |
|---|---|---|---|
| TWIP | 二十分之一磅 | WordprocessingML | 1440 |
| EMU | 英制度量单位 | DrawingML | 914400 |
| pt | 磅 | 排版 | 72 |
| px | 像素(96 DPI) | 屏幕布局 | 96 |
| mm | 毫米 | 公制 | 25.4 |