From fb5273d8d80d919f7b9c214e02d67b79ce23fa19 Mon Sep 17 00:00:00 2001 From: Diego Muracciole Date: Mon, 22 Jan 2024 10:27:06 +0100 Subject: [PATCH] feat: pass creation and modification dates (#2539) --- .changeset/cool-roses-teach.md | 6 +++++ packages/render/src/operations/addMetadata.js | 4 +++ .../tests/operations/addMetadata.test.js | 27 +++++++++++++++++++ packages/types/node.d.ts | 2 ++ 4 files changed, 39 insertions(+) create mode 100644 .changeset/cool-roses-teach.md diff --git a/.changeset/cool-roses-teach.md b/.changeset/cool-roses-teach.md new file mode 100644 index 000000000..55b03e6b7 --- /dev/null +++ b/.changeset/cool-roses-teach.md @@ -0,0 +1,6 @@ +--- +'@react-pdf/render': minor +'@react-pdf/types': minor +--- + +feat: add creation and modification dates diff --git a/packages/render/src/operations/addMetadata.js b/packages/render/src/operations/addMetadata.js index 27a1c0534..3556adeb1 100644 --- a/packages/render/src/operations/addMetadata.js +++ b/packages/render/src/operations/addMetadata.js @@ -20,6 +20,8 @@ const addMetadata = (ctx, doc) => { const keywords = props.keywords || null; const creator = props.creator ?? 'react-pdf'; const producer = props.producer ?? 'react-pdf'; + const creationDate = props.creationDate || new Date(); + const modificationDate = props.modificationDate || null; setProp('Title', title); setProp('Author', author); @@ -27,6 +29,8 @@ const addMetadata = (ctx, doc) => { setProp('Keywords', keywords); setProp('Creator', creator); setProp('Producer', producer); + setProp('CreationDate', creationDate); + setProp('ModificationDate', modificationDate); }; export default addMetadata; diff --git a/packages/render/tests/operations/addMetadata.test.js b/packages/render/tests/operations/addMetadata.test.js index da41e8f25..fe654a387 100644 --- a/packages/render/tests/operations/addMetadata.test.js +++ b/packages/render/tests/operations/addMetadata.test.js @@ -111,4 +111,31 @@ describe('operations addMetadata', () => { expect(ctx.info.Producer).toBe('test'); }); + + test('should add creationDate metadata if provided', () => { + const ctx = createCTX(); + const doc = { type: P.Document, props: { creationDate: 'test' } }; + + addMetadata(ctx, doc); + + expect(ctx.info.CreationDate).toBe('test'); + }); + + test('should not add modificationDate metadata if none provided', () => { + const ctx = createCTX(); + const doc = { type: P.Document }; + + addMetadata(ctx, doc); + + expect(ctx.info.ModificationDate).toBeUndefined(); + }); + + test('should add modificationDate metadata if provided', () => { + const ctx = createCTX(); + const doc = { type: P.Document, props: { modificationDate: 'test' } }; + + addMetadata(ctx, doc); + + expect(ctx.info.ModificationDate).toBe('test'); + }); }); diff --git a/packages/types/node.d.ts b/packages/types/node.d.ts index b141cf90f..d0ab9b85a 100644 --- a/packages/types/node.d.ts +++ b/packages/types/node.d.ts @@ -61,6 +61,8 @@ interface DocumentProps { keywords?: string; creator?: string; producer?: string; + creationDate?: Date; + modificationDate?: Date; pageLayout?: PageLayout; pageMode?: PageMode; }