page2pdf_server 1.1.3 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -8,7 +8,7 @@
8
8
 
9
9
  # Overview
10
10
 
11
- **page2pdf_server** 文书打印转换器的引用类型定义
11
+ **page2pdf_server** 文书打印转换器的引用类型定义; "repository": "https://gitee.com/heerzhang/page2pdf-server",
12
12
  Nothing new under the sun, just a straight forward combo to make server development a little bit faster. And of course, this make my freelancing days more enjoyable 😎
13
13
  Comes with:
14
14
 
@@ -47,12 +47,10 @@ chrome-remote-interface不会为您启动Chrome。本来想用chrome-remote-inte
47
47
  - [Node.js](https://nodejs.org) (`>= 20.0.0`)
48
48
  - [Yarn](https://yarnpkg.com/en/docs/install) or [NPM](https://docs.npmjs.com/getting-started/installing-node)
49
49
  - 客户电脑必须有Chrome浏览器;
50
- - 要点击谷歌浏览器的链接,要配置端口号,启动命令设置:目标修改: C:\Users\herzhang\AppData\Local\Google\Chrome\Application\chrome.exe --remote-debugging-port=9872
51
- 比如: "C:\Program Files\Google\Chrome\Application\chrome.exe" --remote-debugging-port=9872
52
50
  - 之后服务期间,需要首先就该点击该链接开启Chrome浏览器。
53
51
  - 特别注意:windows用户若非管理员账户的:桌面上的Chrome快捷方式右键点属性在“兼容性”设置中:必须勾选“管理员身份运行”;
54
52
  注意浏览器的管理员和普通身份运行的效果进入显示都不同的。目标URL网站需要登陆处理的,登陆点击后浏览器没有反馈,需直接关闭该TAB页面。
55
- -报错Error: connect ECONNREFUSED 127.0.0.1:9872 【解决】先在windows任务管理器把chrome.exe的进程全部关闭后重来。
53
+
56
54
  ## Install
57
55
 
58
56
  - Fork or Use [this](https://github.com/filoscoder/tenstack-starter/generate) template repository.
@@ -76,7 +74,7 @@ chrome-remote-interface不会为您启动Chrome。本来想用chrome-remote-inte
76
74
  <br>
77
75
 
78
76
  ## Config
79
-
77
+ 具体API用法, 参考见../server 也即page2pdf_server_run服务器的包。
80
78
  - Copy `.env.example` a file at the root of the application.
81
79
  - Add or modify specific variables and update it according to your need.
82
80
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "page2pdf_server",
3
- "version": "1.1.3",
3
+ "version": "2.0.0",
4
4
  "description": "文书打印转换器的引用类型",
5
5
  "private": false,
6
6
  "authors": "herzhang",
@@ -40,6 +40,6 @@
40
40
  "typescript": "^5.8.3"
41
41
  },
42
42
  "engines": {
43
- "node": ">= 20.0.0"
43
+ "node": ">= 24.0.0"
44
44
  }
45
45
  }
package/src/index.ts CHANGED
@@ -2,10 +2,9 @@
2
2
  // eslint-disable-next-line @typescript-eslint/no-var-requires
3
3
  //去掉这个了 离开开发环境无法 独立运行服务端,报错module-alias找不到
4
4
  //去掉这个了 require("module-alias").addAlias("@", __dirname);
5
- //去掉这个了
6
5
 
7
- //关键文档Chrome DevTools Protocol资料, https://chromedevtools.github.io/devtools-protocol/tot/Page
8
- export * from "./types/request/config";
9
- export { FileTransform } from "./types";
10
- export { ConfigRoot } from "./types";
11
- export { MyPaperSize } from "./types/request/config";
6
+
7
+ export * from "./types";
8
+ // export { FileTransform } from "./types";
9
+ // export { ConfigRoot } from "./types";
10
+ // export { MyPaperSize } from "./types/request/config";
package/src/types.d.ts CHANGED
@@ -1,97 +1,161 @@
1
- import { HeadFooter, PartHeadFooter } from "@/types/request/config";
2
-
3
- /**一次作业的模型配置;
4
- * 若本对象为空{}的话:默认是按照修改时间的顺序简易模式地合并当前工作目录的所有pdf文件。
5
- * 若某个URL不正常的,很可能无法触发页面加载完成,导致作业一致无法继续下去,大大超出预期执行时间。URL对应网页若不是一次性加载完成还会陆陆续续修改内容的就是这种情况造成死等长时间没结果。
6
- * */
7
- export interface ConfigRoot<T> {
8
- //是否生成合并的pdf:正常情况下, 默认=true进行files输出pdf全部做合并的。 除非files[]也是空的情形。
9
- //但若需对任一个URL叠加新页眉页脚的,merge就不能=false的。
10
- merge?: boolean;
11
- //重定义 合并的pdf文件名, 否则默认名。不需要加 .pdf结尾的
12
- name: string;
13
- //双面打印的合并输出pdf, 默认=true, 表示合并输出的pdf考虑到双面打印的页眉页脚的布局差异化情况了。
14
- doubleSide?: boolean;
15
- //统一一整份应该用的页眉页脚
16
- //假如files[]里面有些url自己也定义了lay{localSumNo=false}的页眉页脚输出配置,只能忽略掉它们,页码总数不算他们的,页码连续编号也不算它们的占坑:最好都挪到最后面。
17
- lay?: HeadFooter;
18
- //每一个独立的pdf生成:
19
- files: [T];
20
-
21
- //共用一个浏览器窗口 默认=true
22
- singleTab?: boolean;
23
- //自动关闭浏览器窗口 默认=false
24
- closeTab?: boolean;
25
-
26
- //下面这5个参数不是前端配置发送过来的,而是lay{}对象预先进行转换后保存的汇总页眉页脚,只能内部使用,并非外部接口参数!Page.printToPDF需要的。
27
- headerTemplate?: string;
28
- footerTemplate?: string;
29
- headerTemplateL?: string;
30
- footerTemplateL?: string;
31
- //第二阶段页眉页脚生成的浏览器执行窗口的targetId,不可配置。
32
- CDPtab?: string;
33
- }
34
-
35
- // types.d.ts
36
- /**等待输出的每个独立文件:URL,这些文件可能要合并。
37
- * @前提条件 是:每个url独立文件生成的PDF,它的纸张大小必须保证同一个大小尺寸, size: 必须唯一,但是纸张方向在某些约束条件中可以横屏竖屏混合的。
38
- * 物理打印机:纸张适配,横竖方向还好能自动调节,size 真实打印纸张尺寸就不好自动处理, 不一样的尺寸?最好拆解pdf。
39
- * 标准纸张大小的:静态html内CSS定义横竖纸张方向混合的:用reverseRanges参数设置部分纸张反转纸张方向,pageRanges=''的前提下:配置比如'1-5, 8, 11-13'和landscape参数设置相反方向。
40
- * */
41
- export interface FileTransform {
42
- //[必须配置的] 特殊的前缀是 http:// https:// 没有这俩个的都是本地工作目录的文件全名(含文件类型后缀 *.pdf *.*)。
43
- //任意的本地文件类型,只要可以被Chrome装载并能够支持打印预览的都可以。http打头的网页必须确保已经登录了,也就是遗留cockies token,不能要求交互登录。本地文件不能要求输入口令。
44
- //不支持*.xls *.doc文件;不支持的格式实际在浏览器拖拽窗口后会蜕变成了下载形式的。被加密的文件必须提前解密,网站登录需提前解决。
45
- //【特殊问题】若URL网页动态化太离谱,周期性地不间断地更新页面,没法触发加载结束事件的,只能手动在浏览器查看打印另存pdf,然后把手动生成pdf合并进来。Tab切换会主动刷新的也不触发。
46
- url: string;
47
- //输出本地工作目录的文件名, 不需要加 .pdf结尾的 【注意】如果out为空表示url是pdf的没必要转换的要直接进入合并步骤。
48
- //【特别】必须配置唯一性 的本地 工作目录的文件名,同名的被直接覆盖了。
49
- out: string;
50
-
51
- //是否汇总合并阶段省略本url,不合并进去,那就是单独独立的pdf输出了。默认=true是合并进去。 和是否打印页眉页脚或页眉统计页数没有绝对关系的。
52
- merge?: boolean;
53
-
54
- //默认取值都是=true; 第一阶段不会生成页眉页脚的,汇总第二阶段这个参数才会生效!
55
- //这里配置displayHeaderFooter优先级最高。
56
- //页眉页脚如何分开控制是否打印的: 可以把lay{head,foot}其中一个配置串给设置为null,null就代表不输出。例如head=null就不输出页眉,但是页脚照旧打印的。本url的配置优先于汇总pdf配置。
57
- //若ConfigRoot<T>.merge=false那么必然导致FileTransform.merge强制=false,每个独立pdf页码独立的独立都从1开始编号吗还需要打印吗,页眉页脚需要打印吗?这个情况页眉页脚打印的默认值改成false;
58
- displayHeaderFooter: boolean;
59
-
60
- //【特别注意】frNo 可能和 headFrom 配置矛盾。
61
- //本url打印:从第几页才开始页眉页脚的打印,#页码同样也是在这之后才可能计数和编号!。默认值headFrom=1:就是第一页就开始打印页眉页脚的。
62
- //书本封面页情况的。这个参数有最高优先级。 【注意】和frNo设置相互影响, 没有页眉页脚就失去页码意义了。若真的违反了可能页码不能连续输出的,被隐藏了页码缘故。
63
- headFrom?: number;
64
- //本url打印后,从本URL输出的第几页开始才进行的页码序号的顺序输出的,前面几页不打印页码(但是页眉页脚要打印)。默认值=1全部都打页码。若frNo=0全部不打页码的。
65
- //假如displayHeaderFooter=false也即页码无法显示出来的情况:请申明frNo=0; 不然默认是连续页码的,不打印的也有占用页码的隐藏的连续数字啊。
66
- //注意若有配置 headFrom 的要协调好。
67
- frNo?: number;
68
-
69
- //是否对页码支持连续编号: Continuous numbering 是跟随汇总合并的页码 基数合计。【注意】本配置单个url范围,单个url不能混合本地页码和全局页面两种!
70
- //统计页数是否本URL独立自己范围之内进行的汇总计数。比如书本目录有多页的可以独立统计页码序号以及总页数的。默认=false;
71
- localSumNo?: boolean;
72
- //本url对应的部分应该用的页眉页脚,覆盖掉合并pdf的相对应设置。页面上只能支持输出一次页眉页脚,不重叠做输出。
73
- //若lay{localSumNo=false}只能固定支持本url自己内部的页码统计顺序编号,不考虑合并pdf总页数带来的影响的。 还是?预设其它部分的页数统计总数之后?再做偏移页码编写?
74
- lay: PartHeadFooter;
75
- //前端声明本url在第一阶段打印输出后,生成的pdf应该有几页。 count没有设置的救不会做异常检查的。不是第二阶段的计数:双面情况可能增加空白页
76
- count?: number;
77
- //双面打印的 默认=true, 表示独立分开输出的pdf文件的:考虑到双面打印的页眉页脚的布局差异化情况了。
78
- //合并输出merge=true的情况:该参数无效,要看汇总配置的哪一个 # ConfigRoot<T>{ doubleSide: }字段。
79
- doubleSide: boolean;
80
- //双面打印的情形:必须确保本URL的第一个页是正好右手边(书本翻页的奇数号页码)开始的位置页。正常第一个URL首页面就是双面打印的右手边位置页;默认值=false不必确保.
81
- rightHand: boolean;
82
-
83
- //页码是罗马数字;论文目录需要的;默认=false阿拉伯数字。"I","II","III","IV","V","VI","VII","VIII","IX" "X"XI"XII"表盘符号
84
- //roman只能针对本URL启用;数字转换范围最大支持1到12,超过了便改阿拉伯数字,且只针对pageNumber有效, totalPages不会采用。
85
- roman?: boolean;
86
-
87
- //下面这5个参数不是前端配置发送过来的,而是lay{}对象预先进行转换后保存的汇总页眉页脚,只能内部使用,并非外部接口参数!Page.printToPDF需要的。
88
- headerTemplate?: string;
89
- footerTemplate?: string;
90
- headerTemplateL?: string;
91
- footerTemplateL?: string;
92
- //这针对:可能由于动态布局导致的浏览器打印预览和实际URL纯粹js网页动态布局的真实内容页数不一致的毛病。
93
- //开启的浏览器窗口宽度。默认最大化的。
94
- brwidth?: number;
95
- //第一阶段Url转pdf的浏览器执行窗口的targetId,不可配置。
96
- CDPtab?: string;
97
- }
1
+ /**一次作业的模型配置;
2
+ * 若本对象为空{}的话:默认是按照修改时间的顺序简易模式地合并当前工作目录的所有pdf文件。
3
+ * 若某个URL不正常的,很可能无法触发页面加载完成,导致作业一致无法继续下去,大大超出预期执行时间。URL对应网页若不是一次性加载完成还会陆陆续续修改内容的就是这种情况造成死等长时间没结果。
4
+ * */
5
+ export interface ConfigRoot<T> {
6
+ //是否生成合并的pdf:正常情况下, 默认=true进行files输出pdf全部做合并的。
7
+ //若merge=false的 页码只能跟读单独编号。
8
+ merge?: boolean;
9
+ //重定义 合并的pdf文件名, 否则默认名。不需要加 .pdf结尾的
10
+ //若merge=false的,name没用到。
11
+ name: string;
12
+ //双面打印的合并输出pdf, 默认都=true, 表示合并输出的pdf考虑到双面打印的页眉页脚的布局差异化情况了。
13
+ doubleSide?: boolean;
14
+ //统一一整份应该用的页眉页脚
15
+ //假如files[]里面有些url自己也定义了lay{localSumNo=false}的页眉页脚输出配置,只能忽略掉它们,页码总数不算他们的,页码连续编号也不算它们的占坑:最好都挪到最后面。
16
+ lay?: HeadFooter;
17
+ //每一个独立的pdf生成:
18
+ files: T[];
19
+
20
+ //下面这5个参数不是前端配置发送过来的,而是lay{}对象预先进行转换后保存的汇总页眉页脚,只能内部使用,并非外部接口参数!Page.printToPDF需要的。
21
+ headerTemplate?: string;
22
+ footerTemplate?: string;
23
+ //最后来个压缩 默认=true
24
+ compress?: boolean;
25
+ hHeight?: number; //清空页眉页脚 页眉高度 (points, 30mm ≈ 85 points)默认10mm
26
+ fHeight?: number; //默认==hHeight 清空页脚高度
27
+ //页码区域的模板关联名字 默认=default
28
+ tmpl?: string;
29
+ //页码区域的字体大小
30
+ fontsz?: number;
31
+ //web加载完毕的标志性选择子 默认=".print-section"
32
+ selector?: string;
33
+ }
34
+
35
+ /**等待输出的每个独立文件:URL,这些文件可能要合并。
36
+ * @前提条件 是:每个url独立文件生成的PDF,它的纸张大小必须保证同一个大小尺寸, size: 必须唯一,但是纸张方向在某些约束条件中可以横屏竖屏混合的。
37
+ * 物理打印机:纸张适配,横竖方向还好能自动调节,size 真实打印纸张尺寸就不好自动处理, 不一样的尺寸?最好拆解pdf。
38
+ * 标准纸张大小的:静态html内CSS定义横竖纸张方向混合的:用reverseRanges参数设置部分纸张反转纸张方向,pageRanges=''的前提下:配置比如'1-5, 8, 11-13'和landscape参数设置相反方向。
39
+ * */
40
+ export interface FileTransform {
41
+ //[必须配置的] 特殊的前缀是 http:// https:// 没有这俩个的都是本地工作目录的文件全名(含文件类型后缀 *.pdf *.*)。
42
+ //任意的本地文件类型,只要可以被Chrome装载并能够支持打印预览的都可以。http打头的网页必须确保已经登录了,也就是遗留cockies token,不能要求交互登录。本地文件不能要求输入口令。
43
+ //不支持*.xls *.doc文件;不支持的格式实际在浏览器拖拽窗口后会蜕变成了下载形式的。被加密的文件必须提前解密,网站登录需提前解决。
44
+ //【特殊问题】若URL网页动态化太离谱,周期性地不间断地更新页面,没法触发加载结束事件的,只能手动在浏览器查看打印另存pdf,然后把手动生成pdf合并进来。Tab切换会主动刷新的也不触发。
45
+ url: string;
46
+ //源url的类型: 默认=web网页的, | pdf本地文件 | linkPdf 链接pdf文件。第一阶段的页眉页脚生成仅仅针对web资源才能生效的。
47
+ type?: "web" |"pdf" |"linkPdf";
48
+ //输出本地工作目录的文件名, 不需要加 .pdf结尾的 【注意】如果out为空意味着url字段的文件原本已经是pdf的情况所以没必要转换的要直接进入合并步骤。
49
+ //【特别】必须配置唯一性 的本地 工作目录的文件名,同名的被直接覆盖了。
50
+ out?: string;
51
+ //抽取原始的页码范围;"1-2,5,8-end" 格式示例
52
+ range?: string;
53
+ //默认取值都是=true; 第一阶段不会生成页眉页脚的,汇总第二阶段这个参数才会生效!
54
+ //这里配置displayHeaderFooter优先级最高。
55
+ //页眉页脚如何分开控制是否打印的: 可以把lay{head,foot}其中一个配置串给设置为null,null就代表不输出。例如head=null就不输出页眉,但是页脚照旧打印的。本url的配置优先于汇总pdf配置。
56
+ //若ConfigRoot<T>.merge=false那么必然导致FileTransform.merge强制=false,每个独立pdf页码独立的独立都从1开始编号吗还需要打印吗,页眉页脚需要打印吗?这个情况页眉页脚打印的默认值改成false;
57
+ displayHeaderFooter: boolean;
58
+ //是否对页码支持连续编号: Continuous numbering 是跟随汇总合并的页码 基数合计。【注意】本配置单个url范围,单个url不能混合本地页码和全局页面两种!
59
+ //【特例】统计页数是否本URL独立自己范围之内进行的汇总计数。比如书本目录有多页的可以独立统计序言部分的页码总数以及后面书本正文的页数统计的。默认=false;
60
+ localSumNo?: boolean;
61
+ //本url页抽取完成以后,清除掉页眉页脚的页范围;"1-2,5,8-end",#页码同样也是在这之后才可能计数和编号!。
62
+ //默认值headFrom=1:就是第一页就开始打印页眉页脚的。【特别注意】frNo 可能和 headFrom 配置矛盾。
63
+ //书本封面页情况的。这个参数有最高优先级。 【注意】和frNo设置相互影响, 没有页眉页脚就失去页码意义了。若真的违反了可能页码不能连续输出的,被隐藏了页码缘故。
64
+ cRange?: string;
65
+ //默认值=undefined:=全部都打页码。
66
+ //若frNo=0全部不打页码的。若displayHeaderFooter=false也即页码无法显示出来的情况:请申明frNo=0; 不然默认是连续页码的,不打印的也有占用页码的隐藏的连续数字啊。
67
+ //注意若有配置 headRange 的要协调好。
68
+ frNo?: number;
69
+
70
+ //是否汇总合并阶段省略本url,不合并进去,那就是单独独立的pdf输出了。默认=true是合并进去。 和是否打印页眉页脚或页眉统计页数没有绝对关系的。
71
+ merge?: boolean;
72
+
73
+ //本url对应的部分应该用的页眉页脚,覆盖掉合并pdf的相对应设置。页面上只能支持输出一次页眉页脚,不重叠做输出。
74
+ //若lay{localSumNo=false}只能固定支持本url自己内部的页码统计顺序编号,不考虑合并pdf总页数带来的影响的。 还是?预设其它部分的页数统计总数之后?再做偏移页码编写?
75
+ lay?: PartHeadFooter;
76
+
77
+ //双面打印的 默认=false, 表示独立分开输出的pdf文件的:考虑到双面打印的页眉页脚的# 章节的空白页,可能的需求开始位置必须在右手边位置。
78
+ //合并输出merge=true的情况:该参数无效,要看汇总配置的哪一个 # ConfigRoot<T>{ doubleSide: }字段的取值。
79
+ doubleSide: boolean;
80
+ //双面打印的情形:指明必须确保本URL的第一个页是正好右手边(书本翻页的奇数号页码)开始的位置页。正常第一个URL首页面就是双面打印的右手边位置页;默认值=false不必确保.
81
+ rightHand: boolean;
82
+
83
+ //页码是罗马数字;论文目录需要的;默认=false阿拉伯数字。"I","II","III","IV","V","VI","VII","VIII","IX" "X"XI"XII"表盘符号
84
+ //roman只能针对本URL启用;数字转换范围最大支持1到12,超过了便改阿拉伯数字,且只针对pageNumber有效, totalPages不会采用。
85
+ roman?: boolean;
86
+ //下面这5个参数不是前端配置发送过来的,而是lay{}对象预先进行转换后保存的汇总页眉页脚,只能内部使用,并非外部接口参数!Page.printToPDF需要的。
87
+ headerTemplate?: string;
88
+ footerTemplate?: string;
89
+ hHeight?: number; //清空页眉页脚 页眉高度 (points, 30mm ≈ 85 points)默认10mm
90
+ fHeight?: number; //默认==hHeight 清空页脚高度
91
+ tmpl?: string;
92
+ fontsz?: number;
93
+ //web情况的,加载完毕的标志性选择子 默认=".print-section"
94
+ selector?: string;
95
+ //有些情况需要清除掉旧的页码内容
96
+ clearNum?: boolean;
97
+ clearWidth?: number; //覆盖页码区域的空间宽度
98
+ }
99
+
100
+ /**页眉页脚声明;前提条件是页眉页脚htm描述里面: 上一个版本保留字 ${pageNumber} ${totalPages}
101
+ * 不应该把 -NOT_DISPLAY- ~pageNumber~ ~totalPages~ 这三个 保留字字符串当作普通文字输出的。
102
+ * 前端发送数据包时刻,页眉页脚的脚本需要在 HTML转JSON 工具网站 进行转换处理后的;网站地址 https://uutool.cn/html2json/ 转换htm模板后是数组[string]
103
+ * 实际上也就进行拆分多行字符串拼接数组,还有把html语法中的 ""引号 进行转义 style="position: 变成 style=\\\"position: 处置的。
104
+ * */
105
+ export interface HeadFooter {
106
+ //每一个URL独立设置的 页眉 的 : 若是配置值=null 表示不要打印本页眉: 针对本url。
107
+ head?: string | string[] | null;
108
+ //每一个页 页脚的
109
+ //每一个URL独立设置的 页脚的 : 若是配置值=null 表示不要打印本页脚的, 针对本url。
110
+ foot?: string | string[] | null; //实际前端发过来却是[string]的也可以啊。
111
+ //双面打印:不再区分页眉页脚样式了
112
+ }
113
+
114
+ //来自pupeeter用的浏览器接口:
115
+ export declare interface PDFMargin {
116
+ top?: string | number;
117
+ bottom?: string | number;
118
+ left?: string | number;
119
+ right?: string | number;
120
+ }
121
+ /**实际在第二步骤也即汇总阶段:页眉页脚的生成底下的参数size,landscape,reverseRanges,marginLeft,marginRight几个都不会涉及到了。
122
+ * */
123
+ export interface PartHeadFooter extends HeadFooter {
124
+ //背景, 默认 =false
125
+ printBackground?: boolean;
126
+ margin?: PDFMargin;
127
+ //默认全部打印的,#可自定义部分页面输出的。 Paper ranges to print, one based, e.g., '1-5, 8, 11-13'.
128
+ pageRanges?: string;
129
+ }
130
+
131
+ /**配置自定义的页脚内页码区域使用的字体子集化的文件。 母字体是系统固定的文件名。
132
+ * */
133
+ export interface MyFontSubset {
134
+ //唯一标识名称; 默认都配一个:"default"
135
+ name: string;
136
+ //所有的文字,数字也要的
137
+ text?: string;
138
+ //字体需存储于那一个文件中。
139
+ file?: string;
140
+ }
141
+
142
+ //测试
143
+ export interface SizeMinimize {
144
+ name: string;
145
+ range?: string;
146
+ file?: string;
147
+ }
148
+
149
+ /**配置页码区域 打印模样。
150
+ * pagenum 页码 pagesums 总的页数
151
+ * */
152
+ export interface PageNoTempl {
153
+ //标识名称
154
+ name: string;
155
+ //模板:必须有 pagenum 页码, 但是 pagesums 可省略的。
156
+ tmpl: string;
157
+ //使用字体的名字。
158
+ font: string;
159
+ //偏移 正负的
160
+ ofswd: number;
161
+ }
@@ -1,70 +0,0 @@
1
- /*看 Page.printToPDF()文档说明的: 可以使用的注入参数:
2
- date: formatted print date
3
- title: document title
4
- url: document location
5
- pageNumber: current page number
6
- totalPages: total pages in the document
7
- For example, <span class=title></span> would generate span containing the title.
8
- */
9
-
10
- /**页眉页脚声明;前提条件是页眉页脚htm描述里面: 上一个版本保留字 ${pageNumber} ${totalPages}
11
- * 不应该把 -NOT_DISPLAY- ~pageNumber~ ~totalPages~ 这三个 保留字字符串当作普通文字输出的。
12
- * 前端发送数据包时刻,页眉页脚的脚本需要在 HTML转JSON 工具网站 进行转换处理后的;网站地址 https://uutool.cn/html2json/ 转换htm模板后是数组[string]
13
- * 实际上也就进行拆分多行字符串拼接数组,还有把html语法中的 ""引号 进行转义 style="position: 变成 style=\\\"position: 处置的。
14
- * */
15
- export interface HeadFooter {
16
- //每一个URL独立设置的 页眉 的 : 若是配置值=null 表示不要打印本页眉: 针对本url。
17
- //双面打印:右手边位置的,或单面打印使用
18
- head?: string | string[] | null;
19
- //每一个页 页脚的
20
- //每一个URL独立设置的 页脚的 : 若是配置值=null 表示不要打印本页脚的, 针对本url。
21
- //双面打印:右手边位置的,或单面打印使用
22
- foot?: string | string[] | null; //实际前端发过来却是[string]的也可以啊。
23
- /**可注入3个参数"特殊标记字符串"如下: 服务端依据参数来对注入的html进行修改的。
24
- * ~pageNumber~
25
- * ~totalPages~
26
- * -NOT_DISPLAY- 有页码才能显示,无页码就隐藏的标记。
27
- * 这三个分别代表 页码 总页数 以及页码<div style=""></div>中的可替代占位位置。
28
- * 其它2个替换成数字号码。
29
- * */
30
- //双面打印:左手边位置的
31
- headL?: string | string[] | null;
32
- //双面打印:左手边位置的
33
- footL?: string | string[] | null;
34
- }
35
-
36
- /**实际在第二步骤也即汇总阶段:页眉页脚的生成底下的参数size,landscape,reverseRanges,marginLeft,marginRight几个都不会涉及到了。
37
- * */
38
- export interface PartHeadFooter extends HeadFooter {
39
- //纸张大小: 纸张大小尺寸+布局方向是自定义系列的:
40
- //a5 a4 a3 b5 b4 jis-b5 jis-b4 letter legal ledger auto 等常见的名字, 默认是 "a4 portrait"
41
- //中国:默认值改成是 a4 portrait
42
- size: string;
43
- //W3C标准纸张大小,横着的吗; 但是非标准尺寸的#自定义的没有这个选择参数的!。 默认是 "portrait"
44
- landscape: boolean;
45
- //背景, 默认 =false
46
- printBackground: boolean;
47
-
48
- //底下的这四个参数默认都=1cm (~0.4 inches); 若要做配置的必须是英寸为单位的数字, 【单位 注意】
49
- marginTop?: number;
50
- marginBottom?: number;
51
- //就算纸张是横屏的:Chrome生成页眉页脚的位置实际也没牵涉到marginLeft,marginRight;
52
- marginLeft?: number;
53
- marginRight?: number;
54
- //默认全部打印的,#可自定义部分页面输出的。 Paper ranges to print, one based, e.g., '1-5, 8, 11-13'.
55
- pageRanges?: string;
56
- }
57
-
58
- /**配置自定义地非标准纸张尺寸, 横竖纸张要独立配置。
59
- * */
60
- export interface MyPaperSize {
61
- //自定义的尺寸名称 ,前端发送数据包时用这个名字 替换通常的 a4 a5 a3等,纸张横的竖的要定义两个标签。
62
- name: string;
63
- //W3C @page size{}语境中配的描述串。 如下:"4in 6in", 前面4英寸宽度的纸张。
64
- //{"name":"D8", "css": "4in 6in","w": 4,"h": 6},
65
- css: string;
66
- //纸张 4 英寸宽度 "w": 4,
67
- w: number;
68
- //纸张高度: 英寸单位的,必须和css参数确保一致性。
69
- h: number;
70
- }