@pdfme/generator 5.5.10 → 6.0.0-dev.1

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.
Files changed (96) hide show
  1. package/package.json +27 -62
  2. package/src/generate.ts +2 -3
  3. package/src/helper.ts +2 -2
  4. package/tsconfig.build.json +14 -0
  5. package/tsconfig.json +13 -15
  6. package/vite.config.mts +39 -0
  7. package/vitest.setup.ts +3 -0
  8. package/dist/cjs/__tests__/assets/templates/index.js +0 -49
  9. package/dist/cjs/__tests__/assets/templates/index.js.map +0 -1
  10. package/dist/cjs/__tests__/generate.test.js +0 -277
  11. package/dist/cjs/__tests__/generate.test.js.map +0 -1
  12. package/dist/cjs/__tests__/integration-other.test.js +0 -70
  13. package/dist/cjs/__tests__/integration-other.test.js.map +0 -1
  14. package/dist/cjs/__tests__/integration-playground.test.js +0 -148
  15. package/dist/cjs/__tests__/integration-playground.test.js.map +0 -1
  16. package/dist/cjs/__tests__/integration-segmenter.test.js +0 -50
  17. package/dist/cjs/__tests__/integration-segmenter.test.js.map +0 -1
  18. package/dist/cjs/__tests__/integration-textType.test.js +0 -50
  19. package/dist/cjs/__tests__/integration-textType.test.js.map +0 -1
  20. package/dist/cjs/__tests__/utils.js +0 -70
  21. package/dist/cjs/__tests__/utils.js.map +0 -1
  22. package/dist/cjs/src/constants.js +0 -5
  23. package/dist/cjs/src/constants.js.map +0 -1
  24. package/dist/cjs/src/generate.js +0 -163
  25. package/dist/cjs/src/generate.js.map +0 -1
  26. package/dist/cjs/src/helper.js +0 -144
  27. package/dist/cjs/src/helper.js.map +0 -1
  28. package/dist/cjs/src/index.js +0 -9
  29. package/dist/cjs/src/index.js.map +0 -1
  30. package/dist/cjs/src/types.js +0 -3
  31. package/dist/cjs/src/types.js.map +0 -1
  32. package/dist/esm/__tests__/assets/templates/index.js +0 -46
  33. package/dist/esm/__tests__/assets/templates/index.js.map +0 -1
  34. package/dist/esm/__tests__/generate.test.js +0 -272
  35. package/dist/esm/__tests__/generate.test.js.map +0 -1
  36. package/dist/esm/__tests__/integration-other.test.js +0 -65
  37. package/dist/esm/__tests__/integration-other.test.js.map +0 -1
  38. package/dist/esm/__tests__/integration-playground.test.js +0 -110
  39. package/dist/esm/__tests__/integration-playground.test.js.map +0 -1
  40. package/dist/esm/__tests__/integration-segmenter.test.js +0 -45
  41. package/dist/esm/__tests__/integration-segmenter.test.js.map +0 -1
  42. package/dist/esm/__tests__/integration-textType.test.js +0 -45
  43. package/dist/esm/__tests__/integration-textType.test.js.map +0 -1
  44. package/dist/esm/__tests__/utils.js +0 -32
  45. package/dist/esm/__tests__/utils.js.map +0 -1
  46. package/dist/esm/src/constants.js +0 -2
  47. package/dist/esm/src/constants.js.map +0 -1
  48. package/dist/esm/src/generate.js +0 -128
  49. package/dist/esm/src/generate.js.map +0 -1
  50. package/dist/esm/src/helper.js +0 -103
  51. package/dist/esm/src/helper.js.map +0 -1
  52. package/dist/esm/src/index.js +0 -3
  53. package/dist/esm/src/index.js.map +0 -1
  54. package/dist/esm/src/types.js +0 -2
  55. package/dist/esm/src/types.js.map +0 -1
  56. package/dist/node/__tests__/assets/templates/index.js +0 -49
  57. package/dist/node/__tests__/assets/templates/index.js.map +0 -1
  58. package/dist/node/__tests__/generate.test.js +0 -277
  59. package/dist/node/__tests__/generate.test.js.map +0 -1
  60. package/dist/node/__tests__/integration-other.test.js +0 -70
  61. package/dist/node/__tests__/integration-other.test.js.map +0 -1
  62. package/dist/node/__tests__/integration-playground.test.js +0 -148
  63. package/dist/node/__tests__/integration-playground.test.js.map +0 -1
  64. package/dist/node/__tests__/integration-segmenter.test.js +0 -50
  65. package/dist/node/__tests__/integration-segmenter.test.js.map +0 -1
  66. package/dist/node/__tests__/integration-textType.test.js +0 -50
  67. package/dist/node/__tests__/integration-textType.test.js.map +0 -1
  68. package/dist/node/__tests__/utils.js +0 -70
  69. package/dist/node/__tests__/utils.js.map +0 -1
  70. package/dist/node/src/constants.js +0 -5
  71. package/dist/node/src/constants.js.map +0 -1
  72. package/dist/node/src/generate.js +0 -163
  73. package/dist/node/src/generate.js.map +0 -1
  74. package/dist/node/src/helper.js +0 -144
  75. package/dist/node/src/helper.js.map +0 -1
  76. package/dist/node/src/index.js +0 -9
  77. package/dist/node/src/index.js.map +0 -1
  78. package/dist/node/src/types.js +0 -3
  79. package/dist/node/src/types.js.map +0 -1
  80. package/dist/types/__tests__/assets/templates/index.d.ts +0 -975
  81. package/dist/types/__tests__/generate.test.d.ts +0 -1
  82. package/dist/types/__tests__/integration-other.test.d.ts +0 -1
  83. package/dist/types/__tests__/integration-playground.test.d.ts +0 -1
  84. package/dist/types/__tests__/integration-segmenter.test.d.ts +0 -1
  85. package/dist/types/__tests__/integration-textType.test.d.ts +0 -1
  86. package/dist/types/__tests__/utils.d.ts +0 -3
  87. package/dist/types/src/constants.d.ts +0 -1
  88. package/dist/types/src/generate.d.ts +0 -3
  89. package/dist/types/src/helper.d.ts +0 -29
  90. package/dist/types/src/index.d.ts +0 -2
  91. package/dist/types/src/types.d.ts +0 -20
  92. package/eslint.config.mjs +0 -22
  93. package/jest.setup.js +0 -2
  94. package/tsconfig.cjs.json +0 -10
  95. package/tsconfig.esm.json +0 -11
  96. package/tsconfig.node.json +0 -11
package/package.json CHANGED
@@ -1,51 +1,48 @@
1
1
  {
2
2
  "name": "@pdfme/generator",
3
- "version": "5.5.10",
4
- "sideEffects": false,
5
- "author": "hand-dot",
6
- "license": "MIT",
3
+ "version": "6.0.0-dev.1",
4
+ "description": "TypeScript base PDF generator and React base UI. Open source, developed by the community, and completely free to use under the MIT license!",
7
5
  "keywords": [
8
6
  "pdf",
9
- "pdf-generation",
10
7
  "pdf-designer",
8
+ "pdf-generation",
11
9
  "pdf-viewer",
12
- "typescript",
13
- "react"
10
+ "react",
11
+ "typescript"
14
12
  ],
15
- "description": "TypeScript base PDF generator and React base UI. Open source, developed by the community, and completely free to use under the MIT license!",
16
13
  "homepage": "https://pdfme.com",
14
+ "bugs": {
15
+ "url": "https://github.com/pdfme/pdfme/issues"
16
+ },
17
+ "license": "MIT",
18
+ "author": "hand-dot",
17
19
  "repository": {
18
20
  "type": "git",
19
21
  "url": "git@github.com:pdfme/pdfme.git"
20
22
  },
21
- "bugs": {
22
- "url": "https://github.com/pdfme/pdfme/issues"
23
- },
24
- "main": "dist/cjs/src/index.js",
25
- "module": "dist/esm/src/index.js",
26
- "types": "dist/types/src/index.d.ts",
23
+ "type": "module",
24
+ "sideEffects": false,
25
+ "main": "./dist/index.js",
26
+ "module": "./dist/index.js",
27
+ "types": "./dist/index.d.ts",
27
28
  "exports": {
28
29
  ".": {
29
- "import": {
30
- "node": "./dist/node/src/index.js",
31
- "default": "./dist/esm/src/index.js"
32
- },
33
- "require": "./dist/cjs/src/index.js",
34
- "types": "./dist/types/src/index.d.ts"
30
+ "types": "./dist/index.d.ts",
31
+ "import": "./dist/index.js",
32
+ "default": "./dist/index.js"
35
33
  }
36
34
  },
35
+ "publishConfig": {
36
+ "access": "public"
37
+ },
37
38
  "scripts": {
38
- "dev": "tsc -p tsconfig.esm.json -w",
39
- "build": "run-p build:cjs build:esm build:node",
40
- "build:cjs": "tsc -p tsconfig.cjs.json",
41
- "build:esm": "tsc -p tsconfig.esm.json",
42
- "build:node": "tsc -p tsconfig.node.json",
39
+ "dev": "vite build --watch",
40
+ "build": "vite build && tsc -p tsconfig.build.json",
43
41
  "clean": "rimraf dist",
44
- "lint": "eslint --ext .ts src --config eslint.config.mjs",
45
- "test": "jest",
46
- "test:update-snapshots": "jest --updateSnapshot",
47
- "prune": "ts-prune src",
48
- "prettier": "prettier --write 'src/**/*.ts'"
42
+ "lint": "vp lint -c ../../.oxlintrc.json src",
43
+ "fmt": "vp fmt -c ../../.oxfmtrc.json src --write",
44
+ "test": "vitest run --config ../../vitest.config.ts",
45
+ "test:update-snapshots": "vitest run --config ../../vitest.config.ts -u"
49
46
  },
50
47
  "dependencies": {
51
48
  "@pdfme/pdf-lib": "*",
@@ -59,37 +56,5 @@
59
56
  "peerDependencies": {
60
57
  "@pdfme/common": "latest",
61
58
  "@pdfme/schemas": "latest"
62
- },
63
- "jest": {
64
- "resolver": "ts-jest-resolver",
65
- "setupFilesAfterEnv": [
66
- "<rootDir>/jest.setup.js"
67
- ],
68
- "moduleNameMapper": {
69
- "^@pdfme/schemas/utils$": "<rootDir>/../schemas/src/utils.ts",
70
- "^.+\\\\.(css|less|scss)$": "identity-obj-proxy"
71
- },
72
- "transformIgnorePatterns": [
73
- "/node_modules/(?!(air-datepicker)/)"
74
- ],
75
- "moduleFileExtensions": [
76
- "js",
77
- "ts"
78
- ],
79
- "transform": {
80
- "^.+\\.ts?$": [
81
- "ts-jest",
82
- {
83
- "tsconfig": "tsconfig.esm.json"
84
- }
85
- ],
86
- "^.+\\.css$": "<rootDir>/__tests__/cssTransform.cjs"
87
- },
88
- "testMatch": [
89
- "**/*.test.ts"
90
- ]
91
- },
92
- "publishConfig": {
93
- "access": "public"
94
59
  }
95
60
  }
package/src/generate.ts CHANGED
@@ -8,7 +8,7 @@ import {
8
8
  pt2mm,
9
9
  cloneDeep,
10
10
  } from '@pdfme/common';
11
- import { getDynamicHeightsForTable } from '@pdfme/schemas';
11
+ import { getDynamicHeightsForTable } from '@pdfme/schemas/tables';
12
12
  import {
13
13
  insertPage,
14
14
  preprocessing,
@@ -59,8 +59,7 @@ const generate = async (props: GenerateProps): Promise<Uint8Array<ArrayBuffer>>
59
59
  pdfDoc,
60
60
  });
61
61
 
62
- // Add proper type assertion for dynamicTemplate.schemas
63
- const schemas = dynamicTemplate.schemas as Schema[][];
62
+ const schemas = dynamicTemplate.schemas;
64
63
  // Create a type-safe array of schema names without using Set spread which requires downlevelIteration
65
64
  const schemaNameSet = new Set<string>();
66
65
  schemas.forEach((page: Schema[]) => {
package/src/helper.ts CHANGED
@@ -11,7 +11,7 @@ import {
11
11
  pluginRegistry,
12
12
  BasePdf,
13
13
  } from '@pdfme/common';
14
- import { builtInPlugins } from '@pdfme/schemas';
14
+ import { builtInPlugins } from '@pdfme/schemas/builtins';
15
15
  import { PDFPage, PDFDocument, PDFEmbeddedPage, TransformationMatrix } from '@pdfme/pdf-lib';
16
16
  import { TOOL_NAME } from './constants.js';
17
17
  import type { EmbedPdfBox } from './types.js';
@@ -60,7 +60,7 @@ export const getEmbedPdfPages = async (arg: { template: Template; pdfDoc: PDFDoc
60
60
  };
61
61
 
62
62
  export const validateRequiredFields = (template: Template, inputs: Record<string, unknown>[]) => {
63
- (template.schemas as Schema[][]).forEach((schemaPage: Schema[]) =>
63
+ template.schemas.forEach((schemaPage: Schema[]) =>
64
64
  schemaPage.forEach((schema: Schema) => {
65
65
  if (schema.required && !schema.readOnly && !inputs.some((input) => input[schema.name])) {
66
66
  throw new Error(
@@ -0,0 +1,14 @@
1
+ {
2
+ "extends": "../../tsconfig.build.base.json",
3
+ "compilerOptions": {
4
+ "declaration": true,
5
+ "declarationDir": "./dist",
6
+ "emitDeclarationOnly": true,
7
+ "module": "ESNext",
8
+ "moduleResolution": "bundler",
9
+ "outDir": "./dist",
10
+ "rootDir": "./src",
11
+ "skipLibCheck": true
12
+ },
13
+ "include": ["src/**/*.ts"]
14
+ }
package/tsconfig.json CHANGED
@@ -1,18 +1,16 @@
1
1
  {
2
- "extends": "./tsconfig.esm",
2
+ "extends": "../../tsconfig.base.json",
3
3
  "compilerOptions": {
4
- "outDir": "./dist",
5
- "baseUrl": ".",
6
- "paths": {
7
- "@pdfme/common": [
8
- "packages/common/dist/esm/src"
9
- ],
10
- "@pdfme/schemas": [
11
- "packages/schemas/dist/esm/src"
12
- ],
13
- "@pdfme/schemas/utils": [
14
- "packages/schemas/dist/esm/src/utils"
15
- ]
16
- }
4
+ "composite": true,
5
+ "declaration": true,
6
+ "declarationDir": "./dist/typecheck",
7
+ "emitDeclarationOnly": true,
8
+ "module": "ESNext",
9
+ "moduleResolution": "bundler",
10
+ "outDir": "./dist/typecheck",
11
+ "tsBuildInfoFile": "./dist/typecheck/tsconfig.tsbuildinfo",
12
+ "skipLibCheck": true
17
13
  },
18
- }
14
+ "include": ["src/**/*.ts"],
15
+ "references": [{ "path": "../common" }, { "path": "../pdf-lib" }, { "path": "../schemas" }]
16
+ }
@@ -0,0 +1,39 @@
1
+ import { readFileSync } from 'node:fs';
2
+ import { builtinModules } from 'node:module';
3
+ import { dirname, resolve } from 'node:path';
4
+ import { fileURLToPath } from 'node:url';
5
+ import { defineConfig } from 'vite';
6
+
7
+ const __dirname = dirname(fileURLToPath(import.meta.url));
8
+ const packageJson = JSON.parse(readFileSync(resolve(__dirname, 'package.json'), 'utf8')) as {
9
+ dependencies?: Record<string, string>;
10
+ peerDependencies?: Record<string, string>;
11
+ };
12
+
13
+ const builtinModuleSet = new Set([
14
+ ...builtinModules,
15
+ ...builtinModules.map((moduleName) => `node:${moduleName}`),
16
+ ]);
17
+ const packageDependencies = [
18
+ ...Object.keys(packageJson.dependencies ?? {}),
19
+ ...Object.keys(packageJson.peerDependencies ?? {}),
20
+ ];
21
+
22
+ const isExternal = (id: string) =>
23
+ builtinModuleSet.has(id) ||
24
+ packageDependencies.some((dependency) => id === dependency || id.startsWith(`${dependency}/`));
25
+
26
+ export default defineConfig({
27
+ build: {
28
+ lib: {
29
+ entry: resolve(__dirname, 'src/index.ts'),
30
+ fileName: 'index',
31
+ formats: ['es'],
32
+ },
33
+ minify: false,
34
+ outDir: 'dist',
35
+ rollupOptions: { external: isExternal },
36
+ sourcemap: true,
37
+ target: 'es2020',
38
+ },
39
+ });
@@ -0,0 +1,3 @@
1
+ import { imageMatcher } from 'vitest-image-snapshot';
2
+
3
+ imageMatcher();
@@ -1,49 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.segmenter = exports.other = exports.textType = void 0;
4
- const z97mmx210mm = require('./z97mmx210mm.json');
5
- const barcodes = require('./barcodes.json');
6
- const canvasPdf = require('./canvasPdf.json');
7
- const background = require('./background.json');
8
- const dynamicFontSizeHorizontal = require('./dynamicFontSizeHorizontal.json');
9
- const dynamicFontSizeVertical = require('./dynamicFontSizeVertical.json');
10
- const rotation = require('./rotation.json');
11
- const verticalAlignmentTop = require('./verticalAlignmentTop.json');
12
- const verticalAlignmentMiddle = require('./verticalAlignmentMiddle.json');
13
- const verticalAlignmentBottom = require('./verticalAlignmentBottom.json');
14
- const test = require('./test.json');
15
- const shapes = require('./shapes.json');
16
- const pet = require('./pet.json');
17
- const pdfImage = require('./pdfImage.json');
18
- const underlineStrikethrough = require('./underlineStrikethrough.json');
19
- const multiVariableText = require('./multiVariableText.json');
20
- const preVersion5Format = require('./preVersion5Format.json');
21
- const segmenterEnglish = require('./segmenterEnglish.json');
22
- const segmenterJapanese = require('./segmenterJapanese.json');
23
- // These tests are slower, so we allow more time for them to pass
24
- exports.textType = {
25
- dynamicFontSizeHorizontal,
26
- dynamicFontSizeVertical,
27
- verticalAlignmentTop,
28
- verticalAlignmentMiddle,
29
- verticalAlignmentBottom,
30
- underlineStrikethrough,
31
- multiVariableText,
32
- };
33
- exports.other = {
34
- barcodes,
35
- shapes,
36
- test,
37
- preVersion5Format,
38
- z97mmx210mm,
39
- canvasPdf,
40
- background,
41
- rotation,
42
- pet,
43
- pdfImage,
44
- };
45
- exports.segmenter = {
46
- segmenterEnglish,
47
- segmenterJapanese,
48
- };
49
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../__tests__/assets/templates/index.ts"],"names":[],"mappings":";;;AAEA,MAAM,WAAW,GAAG,OAAO,CAAC,oBAAoB,CAAa,CAAC;AAC9D,MAAM,QAAQ,GAAG,OAAO,CAAC,iBAAiB,CAAa,CAAC;AACxD,MAAM,SAAS,GAAG,OAAO,CAAC,kBAAkB,CAAa,CAAC;AAC1D,MAAM,UAAU,GAAG,OAAO,CAAC,mBAAmB,CAAa,CAAC;AAC5D,MAAM,yBAAyB,GAAG,OAAO,CAAC,kCAAkC,CAAa,CAAC;AAC1F,MAAM,uBAAuB,GAAG,OAAO,CAAC,gCAAgC,CAAa,CAAC;AACtF,MAAM,QAAQ,GAAG,OAAO,CAAC,iBAAiB,CAAa,CAAC;AACxD,MAAM,oBAAoB,GAAG,OAAO,CAAC,6BAA6B,CAAa,CAAC;AAChF,MAAM,uBAAuB,GAAG,OAAO,CAAC,gCAAgC,CAAa,CAAC;AACtF,MAAM,uBAAuB,GAAG,OAAO,CAAC,gCAAgC,CAAa,CAAC;AACtF,MAAM,IAAI,GAAG,OAAO,CAAC,aAAa,CAAa,CAAC;AAChD,MAAM,MAAM,GAAG,OAAO,CAAC,eAAe,CAAa,CAAC;AACpD,MAAM,GAAG,GAAG,OAAO,CAAC,YAAY,CAAa,CAAC;AAC9C,MAAM,QAAQ,GAAG,OAAO,CAAC,iBAAiB,CAAa,CAAC;AACxD,MAAM,sBAAsB,GAAG,OAAO,CAAC,+BAA+B,CAAa,CAAC;AACpF,MAAM,iBAAiB,GAAG,OAAO,CAAC,0BAA0B,CAAa,CAAC;AAC1E,MAAM,iBAAiB,GAAG,OAAO,CAAC,0BAA0B,CAAa,CAAC;AAC1E,MAAM,gBAAgB,GAAG,OAAO,CAAC,yBAAyB,CAAa,CAAC;AACxE,MAAM,iBAAiB,GAAG,OAAO,CAAC,0BAA0B,CAAa,CAAC;AAE1E,iEAAiE;AACpD,QAAA,QAAQ,GAAG;IACtB,yBAAyB;IACzB,uBAAuB;IACvB,oBAAoB;IACpB,uBAAuB;IACvB,uBAAuB;IACvB,sBAAsB;IACtB,iBAAiB;CAClB,CAAC;AAEW,QAAA,KAAK,GAAG;IACnB,QAAQ;IACR,MAAM;IACN,IAAI;IACJ,iBAAiB;IACjB,WAAW;IACX,SAAS;IACT,UAAU;IACV,QAAQ;IACR,GAAG;IACH,QAAQ;CACT,CAAC;AAEW,QAAA,SAAS,GAAG;IACvB,gBAAgB;IAChB,iBAAiB;CAClB,CAAC"}
@@ -1,277 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const generate_js_1 = __importDefault(require("../src/generate.js"));
7
- const common_1 = require("@pdfme/common");
8
- const utils_js_1 = require("./utils.js");
9
- require("jest-image-snapshot");
10
- describe('generate integrate test', () => {
11
- describe('basic generator', () => {
12
- const textObject = (x, y, name = 'a') => ({
13
- name,
14
- type: 'text',
15
- content: '',
16
- position: { x, y },
17
- width: 100,
18
- height: 100,
19
- fontSize: 13,
20
- });
21
- const singleSchemaTemplate = {
22
- basePdf: common_1.BLANK_PDF,
23
- schemas: [[textObject(0, 0), textObject(25, 25, 'b')]],
24
- };
25
- const multiSchemasTemplate = {
26
- basePdf: 'data:application/pdf;base64,JVBERi0xLjcNJeLjz9MNCjYgMCBvYmoNPDwvTGluZWFyaXplZCAxL0wgMTg0NC9PIDgvRSAxMTEwL04gMi9UIDE1NzAvSCBbIDQyMyAxMzFdPj4NZW5kb2JqDSAgICAgICAgICAgICAgICAgICAgICAgDQoxMSAwIG9iag08PC9EZWNvZGVQYXJtczw8L0NvbHVtbnMgMy9QcmVkaWN0b3IgMTI+Pi9GaWx0ZXIvRmxhdGVEZWNvZGUvSURbPEJBMTk5MUY0MThCN0IyMTEwQTAwNjc0NThCNkJDNjIzPjxGOEE4OEZEMzMzNjQ2OTQ2QkE1ODMzM0M4MEFEMDFFNj5dL0luZGV4WzYgN10vTGVuZ3RoIDM2L1ByZXYgMTU3MS9Sb290IDcgMCBSL1NpemUgMTMvVHlwZS9YUmVmL1dbMSAyIDBdPj5zdHJlYW0NCmjeYmJkEGBiYJJiYmDQZWJgvA+k45gY/j4Aso0BAgwAISQDuA0KZW5kc3RyZWFtDWVuZG9iag1zdGFydHhyZWYNCjANCiUlRU9GDQogICAgICAgIA0KMTIgMCBvYmoNPDwvRmlsdGVyL0ZsYXRlRGVjb2RlL0xlbmd0aCA1Ny9TIDQ0Pj5zdHJlYW0NCmjeYmBgYGJgYLzCwAgkbRk4GBCAAyjGxMDCwNFwiOGAQvkhJCkGZihmYIhj4GhkSGEACDAAvy4F4g0KZW5kc3RyZWFtDWVuZG9iag03IDAgb2JqDTw8L1BhZ2VzIDUgMCBSL1R5cGUvQ2F0YWxvZz4+DWVuZG9iag04IDAgb2JqDTw8L0Fubm90c1tdL0JsZWVkQm94WzAgMCA1OTUuNDQgODQxLjkyXS9Db250ZW50cyA5IDAgUi9Dcm9wQm94WzAgMCA1OTUuNDQgODQxLjkyXS9NZWRpYUJveFswIDAgNTk1LjQ0IDg0MS45Ml0vUGFyZW50IDUgMCBSL1Jlc291cmNlczw8L1hPYmplY3Q8PC9GbTAgMTAgMCBSPj4+Pi9Sb3RhdGUgMC9UcmltQm94WzAgMCA1OTUuNDQgODQxLjkyXS9UeXBlL1BhZ2U+Pg1lbmRvYmoNOSAwIG9iag08PC9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDI2Pj5zdHJlYW0NCkiJKlQwUAjx0XfLNVBwyVcIVAAIMAAiagP4DQplbmRzdHJlYW0NZW5kb2JqDTEwIDAgb2JqDTw8L0JCb3hbMzI3NjguMCAzMjc2OC4wIC0zMjc2OC4wIC0zMjc2OC4wXS9GaWx0ZXIvRmxhdGVEZWNvZGUvRm9ybVR5cGUgMS9MZW5ndGggMTQvTWF0cml4WzEgMCAwIDEgMCAwXS9SZXNvdXJjZXM8PD4+L1N1YnR5cGUvRm9ybS9UeXBlL1hPYmplY3Q+PnN0cmVhbQ0KSIkq5ArkAggwAAKSANcNCmVuZHN0cmVhbQ1lbmRvYmoNMSAwIG9iag08PC9Bbm5vdHNbXS9CbGVlZEJveFswIDAgNTk1LjQ0IDg0MS45Ml0vQ29udGVudHMgMiAwIFIvQ3JvcEJveFswIDAgNTk1LjQ0IDg0MS45Ml0vTWVkaWFCb3hbMCAwIDU5NS40NCA4NDEuOTJdL1BhcmVudCA1IDAgUi9SZXNvdXJjZXM8PC9YT2JqZWN0PDwvRm0wIDEwIDAgUj4+Pj4vUm90YXRlIDAvVHJpbUJveFswIDAgNTk1LjQ0IDg0MS45Ml0vVHlwZS9QYWdlPj4NZW5kb2JqDTIgMCBvYmoNPDwvRmlsdGVyL0ZsYXRlRGVjb2RlL0xlbmd0aCAyNj4+c3RyZWFtDQpIiSpUMFAI8dF3yzVQcMlXCFQACDAAImoD+A0KZW5kc3RyZWFtDWVuZG9iag0zIDAgb2JqDTw8L0ZpbHRlci9GbGF0ZURlY29kZS9GaXJzdCA0L0xlbmd0aCA1Mi9OIDEvVHlwZS9PYmpTdG0+PnN0cmVhbQ0KaN4yVTBQsLHRd84vzStRMNL3zkwpjrYAigUpGILIWP2QyoJU/YDE9NRiOzuAAAMAETgMkw0KZW5kc3RyZWFtDWVuZG9iag00IDAgb2JqDTw8L0RlY29kZVBhcm1zPDwvQ29sdW1ucyAzL1ByZWRpY3RvciAxMj4+L0ZpbHRlci9GbGF0ZURlY29kZS9JRFs8QkExOTkxRjQxOEI3QjIxMTBBMDA2NzQ1OEI2QkM2MjM+PEY4QTg4RkQzMzM2NDY5NDZCQTU4MzMzQzgwQUQwMUU2Pl0vTGVuZ3RoIDMzL1Jvb3QgNyAwIFIvU2l6ZSA2L1R5cGUvWFJlZi9XWzEgMiAwXT4+c3RyZWFtDQpo3mJiYGBgYmQJY2JgvM/EwBAHpCcwMf56ABBgABstBBINCmVuZHN0cmVhbQ1lbmRvYmoNc3RhcnR4cmVmDQoxMTYNCiUlRU9GDQo=',
27
- schemas: [[textObject(0, 0)], [textObject(25, 25, 'b')]],
28
- };
29
- const singleInputs = [{ a: 'a', b: 'b' }];
30
- const multiInputs = [
31
- { a: 'a-1', b: 'b-1' },
32
- { a: 'a-2', b: 'b-2' },
33
- ];
34
- const testCases = [
35
- {
36
- template: singleSchemaTemplate,
37
- inputs: singleInputs,
38
- testName: 'singleSchemaTemplate with singleInputs',
39
- },
40
- {
41
- template: singleSchemaTemplate,
42
- inputs: multiInputs,
43
- testName: 'singleSchemaTemplate with multiInputs',
44
- },
45
- {
46
- template: multiSchemasTemplate,
47
- inputs: singleInputs,
48
- testName: 'multiSchemasTemplate with singleInputs',
49
- },
50
- {
51
- template: multiSchemasTemplate,
52
- inputs: multiInputs,
53
- testName: 'multiSchemasTemplate with multiInputs',
54
- },
55
- ];
56
- // testCases for
57
- for (let i = 0; i < testCases.length; i += 1) {
58
- const { template, inputs, testName } = testCases[i];
59
- test(testName, async () => {
60
- const pdf = await (0, generate_js_1.default)({ inputs, template });
61
- const images = await (0, utils_js_1.pdfToImages)(pdf);
62
- for (let i = 0; i < images.length; i++) {
63
- expect(images[i]).toMatchImageSnapshot({
64
- customSnapshotIdentifier: `${testName}-${i + 1}`,
65
- });
66
- }
67
- });
68
- }
69
- });
70
- describe('use fontColor template', () => {
71
- test(`sample`, async () => {
72
- const inputs = [{ name: 'here is purple color' }];
73
- const template = {
74
- basePdf: common_1.BLANK_PDF,
75
- schemas: [
76
- [
77
- {
78
- name: 'name',
79
- type: 'text',
80
- content: '',
81
- position: { x: 30, y: 30 },
82
- width: 100,
83
- height: 20,
84
- fontColor: '#7d2ae8',
85
- },
86
- ],
87
- ],
88
- };
89
- const pdf = await (0, generate_js_1.default)({ inputs, template });
90
- const images = await (0, utils_js_1.pdfToImages)(pdf);
91
- for (let i = 0; i < images.length; i++) {
92
- expect(images[i]).toMatchImageSnapshot({
93
- customSnapshotIdentifier: `fontColor-${i + 1}`,
94
- });
95
- }
96
- });
97
- });
98
- describe('use fontSubset template', () => {
99
- test(`sample`, async () => {
100
- const inputs = [{ field1: 'NotoSansJP', field2: 'NotoSerifJP' }];
101
- const template = {
102
- basePdf: common_1.BLANK_PDF,
103
- schemas: [
104
- [
105
- {
106
- name: 'field1',
107
- type: 'text',
108
- content: '',
109
- position: { x: 30, y: 30 },
110
- width: 100,
111
- height: 20,
112
- fontName: 'NotoSansJP',
113
- },
114
- {
115
- name: 'field2',
116
- type: 'text',
117
- content: '',
118
- position: { x: 60, y: 60 },
119
- width: 100,
120
- height: 20,
121
- fontName: 'NotoSerifJP',
122
- },
123
- ],
124
- ],
125
- };
126
- const font = (0, utils_js_1.getFont)();
127
- const pdf = await (0, generate_js_1.default)({
128
- inputs,
129
- template,
130
- options: {
131
- font: {
132
- NotoSansJP: {
133
- ...font.NotoSansJP,
134
- fallback: true,
135
- subset: false,
136
- },
137
- NotoSerifJP: {
138
- ...font.NotoSerifJP,
139
- subset: false,
140
- },
141
- },
142
- },
143
- });
144
- const images = await (0, utils_js_1.pdfToImages)(pdf);
145
- for (let i = 0; i < images.length; i++) {
146
- expect(images[i]).toMatchImageSnapshot({
147
- customSnapshotIdentifier: `fontSubset-${i + 1}`,
148
- });
149
- }
150
- }, 10000);
151
- });
152
- });
153
- describe('check validation', () => {
154
- test(`inputs length is 0`, async () => {
155
- const inputs = [];
156
- const template = {
157
- basePdf: common_1.BLANK_PDF,
158
- schemas: [
159
- [
160
- {
161
- name: 'a',
162
- type: 'text',
163
- content: '',
164
- position: { x: 0, y: 0 },
165
- width: 100,
166
- height: 100,
167
- },
168
- ],
169
- ],
170
- };
171
- try {
172
- await (0, generate_js_1.default)({ inputs, template, options: { font: (0, utils_js_1.getFont)() } });
173
- fail();
174
- }
175
- catch (e) {
176
- expect(e.message).toEqual(`[@pdfme/common] Invalid argument:
177
- --------------------------
178
- ERROR POSITION: inputs
179
- ERROR MESSAGE: Too small: expected array to have >=1 items
180
- --------------------------`);
181
- }
182
- });
183
- test(`missing fallback font`, async () => {
184
- const inputs = [{ a: 'test' }];
185
- const template = {
186
- basePdf: common_1.BLANK_PDF,
187
- schemas: [
188
- [
189
- {
190
- name: 'a',
191
- type: 'text',
192
- content: '',
193
- position: { x: 0, y: 0 },
194
- width: 100,
195
- height: 100,
196
- },
197
- ],
198
- ],
199
- };
200
- const font = (0, utils_js_1.getFont)();
201
- font.Roboto.fallback = false;
202
- try {
203
- await (0, generate_js_1.default)({ inputs, template, options: { font } });
204
- fail();
205
- }
206
- catch (e) {
207
- expect(e.message).toEqual(`[@pdfme/common] fallback flag is not found in font. true fallback flag must be only one.
208
- Check this document: https://pdfme.com/docs/custom-fonts#about-font-type`);
209
- }
210
- });
211
- test(`too many fallback font`, async () => {
212
- const inputs = [{ a: 'test' }];
213
- const template = {
214
- basePdf: common_1.BLANK_PDF,
215
- schemas: [
216
- [
217
- {
218
- name: 'a',
219
- type: 'text',
220
- content: '',
221
- position: { x: 0, y: 0 },
222
- width: 100,
223
- height: 100,
224
- },
225
- ],
226
- ],
227
- };
228
- const font = (0, utils_js_1.getFont)();
229
- // Set multiple fonts to have fallback = true to test the error
230
- font.Roboto.fallback = true;
231
- font.NotoSansJP = { ...font.NotoSansJP, fallback: true };
232
- try {
233
- await (0, generate_js_1.default)({ inputs, template, options: { font } });
234
- fail();
235
- }
236
- catch (e) {
237
- expect(e.message).toEqual(`[@pdfme/common] 2 fallback flags found in font. true fallback flag must be only one.
238
- Check this document: https://pdfme.com/docs/custom-fonts#about-font-type`);
239
- }
240
- });
241
- test(`missing font in template.schemas`, async () => {
242
- const inputs = [{ a: 'test' }];
243
- const template = {
244
- basePdf: common_1.BLANK_PDF,
245
- schemas: [
246
- [
247
- {
248
- name: 'a',
249
- type: 'text',
250
- content: '',
251
- fontName: 'DUMMY_FONT',
252
- position: { x: 0, y: 0 },
253
- width: 100,
254
- height: 100,
255
- },
256
- {
257
- name: 'b',
258
- type: 'text',
259
- content: '',
260
- position: { x: 0, y: 0 },
261
- width: 100,
262
- height: 100,
263
- },
264
- ],
265
- ],
266
- };
267
- try {
268
- await (0, generate_js_1.default)({ inputs, template, options: { font: (0, utils_js_1.getFont)() } });
269
- fail();
270
- }
271
- catch (e) {
272
- expect(e.message).toEqual(`[@pdfme/common] DUMMY_FONT of template.schemas is not found in font.
273
- Check this document: https://pdfme.com/docs/custom-fonts`);
274
- }
275
- });
276
- });
277
- //# sourceMappingURL=generate.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"generate.test.js","sourceRoot":"","sources":["../../../__tests__/generate.test.ts"],"names":[],"mappings":"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"}