pdfkit 0.15.0 → 0.15.2

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.
@@ -1,5 +1,5 @@
1
1
  (function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.PDFDocument = f()}})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()({1:[function(require,module,exports){
2
- (function (Buffer,__dirname){(function (){
2
+ (function (Buffer){(function (){
3
3
  'use strict';
4
4
 
5
5
  var stream = require('stream');
@@ -2720,7 +2720,7 @@ class EmbeddedFont extends PDFFont {
2720
2720
  } else {
2721
2721
  descriptor.data.FontFile2 = fontFile;
2722
2722
  }
2723
- if (this.document.subset) {
2723
+ if (this.document.subset && this.document.subset === 1) {
2724
2724
  const CIDSet = Buffer.from('FFFFFFFFC0', 'hex');
2725
2725
  const CIDSetRef = this.document.ref();
2726
2726
  CIDSetRef.write(CIDSet);
@@ -3359,11 +3359,10 @@ var TextMixin = {
3359
3359
  return `${text}.`;
3360
3360
  }
3361
3361
  };
3362
- const drawListItem = function (listItem) {
3362
+ const drawListItem = function (listItem, i) {
3363
3363
  wrapper = new LineWrapper(this, options);
3364
3364
  wrapper.on('line', this._line);
3365
3365
  level = 1;
3366
- let i = 0;
3367
3366
  wrapper.once('firstLine', () => {
3368
3367
  let item, itemType, labelType, bodyType;
3369
3368
  if (options.structParent) {
@@ -3420,7 +3419,7 @@ var TextMixin = {
3420
3419
  wrapper.wrap(listItem, options);
3421
3420
  };
3422
3421
  for (let i = 0; i < items.length; i++) {
3423
- drawListItem.call(this, items[i]);
3422
+ drawListItem.call(this, items[i], i);
3424
3423
  }
3425
3424
  return this;
3426
3425
  },
@@ -4904,7 +4903,7 @@ var AcroFormMixin = {
4904
4903
  },
4905
4904
  _fieldDict(name, type, options = {}) {
4906
4905
  if (!this._acroform) {
4907
- throw new Error('Call document.initForms() method before adding form elements to document');
4906
+ throw new Error('Call document.initForm() method before adding form elements to document');
4908
4907
  }
4909
4908
  let opts = Object.assign({}, options);
4910
4909
  if (type !== null) {
@@ -5034,7 +5033,7 @@ var AcroFormMixin = {
5034
5033
  },
5035
5034
  _resolveFont(options) {
5036
5035
  // add current font to document-level AcroForm dict if necessary
5037
- if (this._acroform.fonts[this._font.id] === null) {
5036
+ if (this._acroform.fonts[this._font.id] == null) {
5038
5037
  this._acroform.fonts[this._font.id] = this._font.ref();
5039
5038
  }
5040
5039
 
@@ -5106,10 +5105,12 @@ var AttachmentsMixin = {
5106
5105
  * * options.hidden: if true, do not add attachment to EmbeddedFiles dictionary. Useful for file attachment annotations
5107
5106
  * * options.creationDate: override creation date
5108
5107
  * * options.modifiedDate: override modified date
5108
+ * * options.relationship: Relationship between the PDF document and its attached file. Can be 'Alternative', 'Data', 'Source', 'Supplement' or 'Unspecified'.
5109
5109
  * @returns filespec reference
5110
5110
  */
5111
5111
  file(src, options = {}) {
5112
5112
  options.name = options.name || src;
5113
+ options.relationship = options.relationship || 'Unspecified';
5113
5114
  const refBody = {
5114
5115
  Type: 'EmbeddedFile',
5115
5116
  Params: {}
@@ -5180,6 +5181,7 @@ var AttachmentsMixin = {
5180
5181
  // add filespec for embedded file
5181
5182
  const fileSpecBody = {
5182
5183
  Type: 'Filespec',
5184
+ AFRelationship: options.relationship,
5183
5185
  F: new String(options.name),
5184
5186
  EF: {
5185
5187
  F: ref
@@ -5194,13 +5196,20 @@ var AttachmentsMixin = {
5194
5196
  if (!options.hidden) {
5195
5197
  this.addNamedEmbeddedFile(options.name, filespec);
5196
5198
  }
5199
+
5200
+ // Add file to the catalogue to be PDF/A3 compliant
5201
+ if (this._root.data.AF) {
5202
+ this._root.data.AF.push(filespec);
5203
+ } else {
5204
+ this._root.data.AF = [filespec];
5205
+ }
5197
5206
  return filespec;
5198
5207
  }
5199
5208
  };
5200
5209
 
5201
5210
  /** check two embedded file metadata objects for equality */
5202
5211
  function isEqual(a, b) {
5203
- return a.Subtype === b.Subtype && a.Params.CheckSum.toString() === b.Params.CheckSum.toString() && a.Params.Size === b.Params.Size && a.Params.CreationDate === b.Params.CreationDate && a.Params.ModDate === b.Params.ModDate;
5212
+ return a.Subtype === b.Subtype && a.Params.CheckSum.toString() === b.Params.CheckSum.toString() && a.Params.Size === b.Params.Size && a.Params.CreationDate.getTime() === b.Params.CreationDate.getTime() && (a.Params.ModDate === undefined && b.Params.ModDate === undefined || a.Params.ModDate.getTime() === b.Params.ModDate.getTime());
5204
5213
  }
5205
5214
 
5206
5215
  var PDFA = {
@@ -5216,10 +5225,10 @@ var PDFA = {
5216
5225
  },
5217
5226
  endSubset() {
5218
5227
  this._addPdfaMetadata();
5219
- this._addColorOutputIntent(`${__dirname}/data/sRGB_IEC61966_2_1.icc`);
5228
+ this._addColorOutputIntent();
5220
5229
  },
5221
- _addColorOutputIntent(pICCPath) {
5222
- const iccProfile = fs.readFileSync(pICCPath);
5230
+ _addColorOutputIntent() {
5231
+ const iccProfile = Buffer("AAAL0AAAAAACAAAAbW50clJHQiBYWVogB98AAgAPAAAAAAAAYWNzcAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAPbWAAEAAAAA0y0AAAAAPQ6y3q6Tl76bZybOjApDzgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQZGVzYwAAAUQAAABjYlhZWgAAAagAAAAUYlRSQwAAAbwAAAgMZ1RSQwAAAbwAAAgMclRSQwAAAbwAAAgMZG1kZAAACcgAAACIZ1hZWgAAClAAAAAUbHVtaQAACmQAAAAUbWVhcwAACngAAAAkYmtwdAAACpwAAAAUclhZWgAACrAAAAAUdGVjaAAACsQAAAAMdnVlZAAACtAAAACHd3RwdAAAC1gAAAAUY3BydAAAC2wAAAA3Y2hhZAAAC6QAAAAsZGVzYwAAAAAAAAAJc1JHQjIwMTQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFhZWiAAAAAAAAAkoAAAD4QAALbPY3VydgAAAAAAAAQAAAAABQAKAA8AFAAZAB4AIwAoAC0AMgA3ADsAQABFAEoATwBUAFkAXgBjAGgAbQByAHcAfACBAIYAiwCQAJUAmgCfAKQAqQCuALIAtwC8AMEAxgDLANAA1QDbAOAA5QDrAPAA9gD7AQEBBwENARMBGQEfASUBKwEyATgBPgFFAUwBUgFZAWABZwFuAXUBfAGDAYsBkgGaAaEBqQGxAbkBwQHJAdEB2QHhAekB8gH6AgMCDAIUAh0CJgIvAjgCQQJLAlQCXQJnAnECegKEAo4CmAKiAqwCtgLBAssC1QLgAusC9QMAAwsDFgMhAy0DOANDA08DWgNmA3IDfgOKA5YDogOuA7oDxwPTA+AD7AP5BAYEEwQgBC0EOwRIBFUEYwRxBH4EjASaBKgEtgTEBNME4QTwBP4FDQUcBSsFOgVJBVgFZwV3BYYFlgWmBbUFxQXVBeUF9gYGBhYGJwY3BkgGWQZqBnsGjAadBq8GwAbRBuMG9QcHBxkHKwc9B08HYQd0B4YHmQesB78H0gflB/gICwgfCDIIRghaCG4IggiWCKoIvgjSCOcI+wkQCSUJOglPCWQJeQmPCaQJugnPCeUJ+woRCicKPQpUCmoKgQqYCq4KxQrcCvMLCwsiCzkLUQtpC4ALmAuwC8gL4Qv5DBIMKgxDDFwMdQyODKcMwAzZDPMNDQ0mDUANWg10DY4NqQ3DDd4N+A4TDi4OSQ5kDn8Omw62DtIO7g8JDyUPQQ9eD3oPlg+zD88P7BAJECYQQxBhEH4QmxC5ENcQ9RETETERTxFtEYwRqhHJEegSBxImEkUSZBKEEqMSwxLjEwMTIxNDE2MTgxOkE8UT5RQGFCcUSRRqFIsUrRTOFPAVEhU0FVYVeBWbFb0V4BYDFiYWSRZsFo8WshbWFvoXHRdBF2UXiReuF9IX9xgbGEAYZRiKGK8Y1Rj6GSAZRRlrGZEZtxndGgQaKhpRGncanhrFGuwbFBs7G2MbihuyG9ocAhwqHFIcexyjHMwc9R0eHUcdcB2ZHcMd7B4WHkAeah6UHr4e6R8THz4faR+UH78f6iAVIEEgbCCYIMQg8CEcIUghdSGhIc4h+yInIlUigiKvIt0jCiM4I2YjlCPCI/AkHyRNJHwkqyTaJQklOCVoJZclxyX3JicmVyaHJrcm6CcYJ0kneierJ9woDSg/KHEooijUKQYpOClrKZ0p0CoCKjUqaCqbKs8rAis2K2krnSvRLAUsOSxuLKIs1y0MLUEtdi2rLeEuFi5MLoIuty7uLyQvWi+RL8cv/jA1MGwwpDDbMRIxSjGCMbox8jIqMmMymzLUMw0zRjN/M7gz8TQrNGU0njTYNRM1TTWHNcI1/TY3NnI2rjbpNyQ3YDecN9c4FDhQOIw4yDkFOUI5fzm8Ofk6Njp0OrI67zstO2s7qjvoPCc8ZTykPOM9Ij1hPaE94D4gPmA+oD7gPyE/YT+iP+JAI0BkQKZA50EpQWpBrEHuQjBCckK1QvdDOkN9Q8BEA0RHRIpEzkUSRVVFmkXeRiJGZ0arRvBHNUd7R8BIBUhLSJFI10kdSWNJqUnwSjdKfUrESwxLU0uaS+JMKkxyTLpNAk1KTZNN3E4lTm5Ot08AT0lPk0/dUCdQcVC7UQZRUFGbUeZSMVJ8UsdTE1NfU6pT9lRCVI9U21UoVXVVwlYPVlxWqVb3V0RXklfgWC9YfVjLWRpZaVm4WgdaVlqmWvVbRVuVW+VcNVyGXNZdJ114XcleGl5sXr1fD19hX7NgBWBXYKpg/GFPYaJh9WJJYpxi8GNDY5dj62RAZJRk6WU9ZZJl52Y9ZpJm6Gc9Z5Nn6Wg/aJZo7GlDaZpp8WpIap9q92tPa6dr/2xXbK9tCG1gbbluEm5rbsRvHm94b9FwK3CGcOBxOnGVcfByS3KmcwFzXXO4dBR0cHTMdSh1hXXhdj52m3b4d1Z3s3gReG54zHkqeYl553pGeqV7BHtje8J8IXyBfOF9QX2hfgF+Yn7CfyN/hH/lgEeAqIEKgWuBzYIwgpKC9INXg7qEHYSAhOOFR4Wrhg6GcobXhzuHn4gEiGmIzokziZmJ/opkisqLMIuWi/yMY4zKjTGNmI3/jmaOzo82j56QBpBukNaRP5GokhGSepLjk02TtpQglIqU9JVflcmWNJaflwqXdZfgmEyYuJkkmZCZ/JpomtWbQpuvnByciZz3nWSd0p5Anq6fHZ+Ln/qgaaDYoUehtqImopajBqN2o+akVqTHpTilqaYapoum/adup+CoUqjEqTepqaocqo+rAqt1q+msXKzQrUStuK4trqGvFq+LsACwdbDqsWCx1rJLssKzOLOutCW0nLUTtYq2AbZ5tvC3aLfguFm40blKucK6O7q1uy67p7whvJu9Fb2Pvgq+hL7/v3q/9cBwwOzBZ8Hjwl/C28NYw9TEUcTOxUvFyMZGxsPHQce/yD3IvMk6ybnKOMq3yzbLtsw1zLXNNc21zjbOts83z7jQOdC60TzRvtI/0sHTRNPG1EnUy9VO1dHWVdbY11zX4Nhk2OjZbNnx2nba+9uA3AXcit0Q3ZbeHN6i3ynfr+A24L3hROHM4lPi2+Nj4+vkc+T85YTmDeaW5x/nqegy6LzpRunQ6lvq5etw6/vshu0R7ZzuKO6070DvzPBY8OXxcvH/8ozzGfOn9DT0wvVQ9d72bfb794r4Gfio+Tj5x/pX+uf7d/wH/Jj9Kf26/kv+3P9t//9kZXNjAAAAAAAAAC5JRUMgNjE5NjYtMi0xIERlZmF1bHQgUkdCIENvbG91ciBTcGFjZSAtIHNSR0IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWFlaIAAAAAAAAGKZAAC3hQAAGNpYWVogAAAAAAAAAAAAUAAAAAAAAG1lYXMAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlhZWiAAAAAAAAAAngAAAKQAAACHWFlaIAAAAAAAAG+iAAA49QAAA5BzaWcgAAAAAENSVCBkZXNjAAAAAAAAAC1SZWZlcmVuY2UgVmlld2luZyBDb25kaXRpb24gaW4gSUVDIDYxOTY2LTItMQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWFlaIAAAAAAAAPbWAAEAAAAA0y10ZXh0AAAAAENvcHlyaWdodCBJbnRlcm5hdGlvbmFsIENvbG9yIENvbnNvcnRpdW0sIDIwMTUAAHNmMzIAAAAAAAEMRAAABd////MmAAAHlAAA/Y////uh///9ogAAA9sAAMB1","base64");
5223
5232
  const colorProfileRef = this.ref({
5224
5233
  Length: iccProfile.length,
5225
5234
  N: 3
@@ -5726,7 +5735,7 @@ PDFDocument.LineWrapper = LineWrapper;
5726
5735
  module.exports = PDFDocument;
5727
5736
 
5728
5737
 
5729
- }).call(this)}).call(this,require("buffer").Buffer,"/js")
5738
+ }).call(this)}).call(this,require("buffer").Buffer)
5730
5739
  },{"buffer":114,"crypto-js":129,"events":170,"fontkit":171,"fs":113,"jpeg-exif":205,"linebreak":207,"png-js":221,"stream":265,"zlib":101}],2:[function(require,module,exports){
5731
5740
  "use strict";
5732
5741
  Object.defineProperty(exports, "__esModule", {
package/package.json CHANGED
@@ -9,7 +9,7 @@
9
9
  "document",
10
10
  "vector"
11
11
  ],
12
- "version": "0.15.0",
12
+ "version": "0.15.2",
13
13
  "homepage": "http://pdfkit.org/",
14
14
  "author": {
15
15
  "name": "Devon Govett",