@adnsistemas/pdf-lib 2.7.0 → 2.7.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.
package/dist/pdf-lib.js CHANGED
@@ -13380,7 +13380,7 @@ end\
13380
13380
  else if(depth== 2) for(var x=0; x<w; x++) { var gr= 85*((data[off+(x>>>2)]>>>(6 -((x&3)<<1)))& 3), al=(gr==tr* 85)?0:255; bf32[to+x]=(al<<24)|(gr<<16)|(gr<<8)|gr; }
13381
13381
  else if(depth== 4) for(var x=0; x<w; x++) { var gr= 17*((data[off+(x>>>1)]>>>(4 -((x&1)<<2)))&15), al=(gr==tr* 17)?0:255; bf32[to+x]=(al<<24)|(gr<<16)|(gr<<8)|gr; }
13382
13382
  else if(depth== 8) for(var x=0; x<w; x++) { var gr=data[off+ x], al=(gr ==tr)?0:255; bf32[to+x]=(al<<24)|(gr<<16)|(gr<<8)|gr; }
13383
- else if(depth==16) for(var x=0; x<w; x++) { var gr=data[off+(x<<1)], al=(rs(data,off+(x<<i))==tr)?0:255; bf32[to+x]=(al<<24)|(gr<<16)|(gr<<8)|gr; }
13383
+ else if(depth==16) for(var x=0; x<w; x++) { var gr=data[off+(x<<1)], al=(rs(data,off+(x<<1))==tr)?0:255; bf32[to+x]=(al<<24)|(gr<<16)|(gr<<8)|gr; }
13384
13384
  }
13385
13385
  }
13386
13386
  //console.log(Date.now()-time);
@@ -13406,6 +13406,7 @@ end\
13406
13406
  //console.log(type,len);
13407
13407
 
13408
13408
  if (type=="IHDR") { UPNG.decode._IHDR(data, offset, out); }
13409
+ else if(type=="CgBI") { out.tabs[type] = data.slice(offset,offset+4); }
13409
13410
  else if(type=="IDAT") {
13410
13411
  for(var i=0; i<len; i++) dd[doff+i] = data[offset+i];
13411
13412
  doff += len;
@@ -13435,11 +13436,16 @@ end\
13435
13436
  out.tabs[type] = [];
13436
13437
  for(var i=0; i<8; i++) out.tabs[type].push(bin.readUint(data, offset+i*4));
13437
13438
  }
13438
- else if(type=="tEXt") {
13439
+ else if(type=="tEXt" || type=="zTXt") {
13439
13440
  if(out.tabs[type]==null) out.tabs[type] = {};
13440
13441
  var nz = bin.nextZero(data, offset);
13441
13442
  var keyw = bin.readASCII(data, offset, nz-offset);
13442
- var text = bin.readASCII(data, nz+1, offset+len-nz-1);
13443
+ var text, tl=offset+len-nz-1;
13444
+ if(type=="tEXt") text = bin.readASCII(data, nz+1, tl);
13445
+ else {
13446
+ var bfr = UPNG.decode._inflate(data.slice(nz+2,nz+2+tl));
13447
+ text = bin.readUTF8(bfr,0,bfr.length);
13448
+ }
13443
13449
  out.tabs[type][keyw] = text;
13444
13450
  }
13445
13451
  else if(type=="iTXt") {
@@ -13447,12 +13453,17 @@ end\
13447
13453
  var nz = 0, off = offset;
13448
13454
  nz = bin.nextZero(data, off);
13449
13455
  var keyw = bin.readASCII(data, off, nz-off); off = nz + 1;
13450
- data[off]; data[off+1]; off+=2;
13456
+ var cflag = data[off]; data[off+1]; off+=2;
13451
13457
  nz = bin.nextZero(data, off);
13452
13458
  bin.readASCII(data, off, nz-off); off = nz + 1;
13453
13459
  nz = bin.nextZero(data, off);
13454
13460
  bin.readUTF8(data, off, nz-off); off = nz + 1;
13455
- var text = bin.readUTF8(data, off, len-(off-offset));
13461
+ var text, tl=len-(off-offset);
13462
+ if(cflag==0) text = bin.readUTF8(data, off, tl);
13463
+ else {
13464
+ var bfr = UPNG.decode._inflate(data.slice(off,off+tl));
13465
+ text = bin.readUTF8(bfr,0,bfr.length);
13466
+ }
13456
13467
  out.tabs[type][keyw] = text;
13457
13468
  }
13458
13469
  else if(type=="PLTE") {
@@ -13479,12 +13490,12 @@ end\
13479
13490
  else if(type=="IEND") {
13480
13491
  break;
13481
13492
  }
13482
- //else { log("unknown chunk type", type, len); }
13493
+ //else { console.log("unknown chunk type", type, len); out.tabs[type]=data.slice(offset,offset+len); }
13483
13494
  offset += len;
13484
13495
  bin.readUint(data, offset); offset += 4;
13485
13496
  }
13486
13497
  if(foff!=0) { var fr = out.frames[out.frames.length-1];
13487
- fr.data = UPNG.decode._decompress(out, fd.slice(0,foff), fr.rect.width, fr.rect.height); foff=0;
13498
+ fr.data = UPNG.decode._decompress(out, fd.slice(0,foff), fr.rect.width, fr.rect.height);
13488
13499
  }
13489
13500
  out.data = UPNG.decode._decompress(out, dd, out.width, out.height);
13490
13501
 
@@ -13494,7 +13505,8 @@ end\
13494
13505
 
13495
13506
  UPNG.decode._decompress = function(out, dd, w, h) {
13496
13507
  var bpp = UPNG.decode._getBPP(out), bpl = Math.ceil(w*bpp/8), buff = new Uint8Array((bpl+1+out.interlace)*h);
13497
- dd = UPNG.decode._inflate(dd,buff);
13508
+ if(out.tabs["CgBI"]) dd = UPNG.inflateRaw(dd,buff);
13509
+ else dd = UPNG.decode._inflate(dd,buff);
13498
13510
  if (out.interlace==0) dd = UPNG.decode._filterZero(dd, out, 0, w, h);
13499
13511
  else if(out.interlace==1) dd = UPNG.decode._readInterlace(dd, out);
13500
13512
  //console.log(Date.now()-time);
@@ -13504,7 +13516,7 @@ end\
13504
13516
  UPNG.decode._inflate = function(data, buff) { var out=UPNG["inflateRaw"](new Uint8Array(data.buffer, 2,data.length-6),buff); return out; };
13505
13517
  UPNG.inflateRaw=function(){var H={};H.H={};H.H.N=function(N,W){var R=Uint8Array,i=0,m=0,J=0,h=0,Q=0,X=0,u=0,w=0,d=0,v,C;
13506
13518
  if(N[0]==3&&N[1]==0)return W?W:new R(0);var V=H.H,n=V.b,A=V.e,l=V.R,M=V.n,I=V.A,e=V.Z,b=V.m,Z=W==null;
13507
- if(Z)W=new R(N.length>>>2<<3);while(i==0){i=n(N,d,1);m=n(N,d+1,2);d+=3;if(m==0){if((d&7)!=0)d+=8-(d&7);
13519
+ if(Z)W=new R(N.length>>>2<<5);while(i==0){i=n(N,d,1);m=n(N,d+1,2);d+=3;if(m==0){if((d&7)!=0)d+=8-(d&7);
13508
13520
  var D=(d>>>3)+4,q=N[D-4]|N[D-3]<<8;if(Z)W=H.H.W(W,w+q);W.set(new R(N.buffer,N.byteOffset+D,q),w);d=D+q<<3;
13509
13521
  w+=q;continue}if(Z)W=H.H.W(W,w+(1<<17));if(m==1){v=b.J;C=b.h;X=(1<<9)-1;u=(1<<5)-1;}if(m==2){J=A(N,d,5)+257;
13510
13522
  h=A(N,d+5,5)+1;Q=A(N,d+10,4)+4;d+=14;var j=1;for(var c=0;c<38;c+=2){b.Q[c]=0;b.Q[c+1]=0;}for(var c=0;
@@ -13601,7 +13613,7 @@ end\
13601
13613
  var bpp = UPNG.decode._getBPP(out), bpl = Math.ceil(w*bpp/8), paeth = UPNG.decode._paeth;
13602
13614
  bpp = Math.ceil(bpp/8);
13603
13615
 
13604
- var i=0, di=1, type=data[off], x=0;
13616
+ var i,di, type=data[off], x=0;
13605
13617
 
13606
13618
  if(type>1) data[off]=[0,0,1][type-2];
13607
13619
  if(type==3) for(x=bpp; x<bpl; x++) data[x+1] = (data[x+1] + (data[x+1-bpp]>>>1) )&255;
@@ -13701,12 +13713,13 @@ end\
13701
13713
 
13702
13714
 
13703
13715
 
13716
+
13704
13717
  UPNG.encode = function(bufs, w, h, ps, dels, tabs, forbidPlte)
13705
13718
  {
13706
13719
  if(ps==null) ps=0;
13707
13720
  if(forbidPlte==null) forbidPlte = false;
13708
13721
 
13709
- var nimg = UPNG.encode.compress(bufs, w, h, ps, [false, false, false, 0, forbidPlte]);
13722
+ var nimg = UPNG.encode.compress(bufs, w, h, ps, [false, false, false, 0, forbidPlte,false]);
13710
13723
  UPNG.encode.compressPNG(nimg, -1);
13711
13724
 
13712
13725
  return UPNG.encode._main(nimg, w, h, dels, tabs);
@@ -13854,7 +13867,7 @@ end\
13854
13867
  UPNG.encode.compress = function(bufs, w, h, ps, prms) // prms: onlyBlend, minBits, forbidPlte
13855
13868
  {
13856
13869
  //var time = Date.now();
13857
- var onlyBlend = prms[0], evenCrd = prms[1], forbidPrev = prms[2], minBits = prms[3], forbidPlte = prms[4];
13870
+ var onlyBlend = prms[0], evenCrd = prms[1], forbidPrev = prms[2], minBits = prms[3], forbidPlte = prms[4], dither=prms[5];
13858
13871
 
13859
13872
  var ctype = 6, depth = 8, alphaAnd=255;
13860
13873
 
@@ -13870,17 +13883,27 @@ end\
13870
13883
  var frms = UPNG.encode.framize(bufs, w, h, onlyBlend, evenCrd, forbidPrev);
13871
13884
  //console.log("framize", Date.now()-time); time = Date.now();
13872
13885
 
13873
- var cmap={}, plte=[], inds=[];
13886
+ var cmap={}, plte=[], inds=[];
13874
13887
 
13875
13888
  if(ps!=0) {
13876
13889
  var nbufs = []; for(var i=0; i<frms.length; i++) nbufs.push(frms[i].img.buffer);
13877
13890
 
13878
- var abuf = UPNG.encode.concatRGBA(nbufs), qres = UPNG.quantize(abuf, ps);
13879
- var cof = 0, bb = new Uint8Array(qres.abuf);
13880
- for(var i=0; i<frms.length; i++) { var ti=frms[i].img, bln=ti.length; inds.push(new Uint8Array(qres.inds.buffer, cof>>2, bln>>2));
13881
- for(var j=0; j<bln; j+=4) { ti[j]=bb[cof+j]; ti[j+1]=bb[cof+j+1]; ti[j+2]=bb[cof+j+2]; ti[j+3]=bb[cof+j+3]; } cof+=bln; }
13891
+ var abuf = UPNG.encode.concatRGBA(nbufs), qres = UPNG.quantize(abuf, ps);
13882
13892
 
13883
13893
  for(var i=0; i<qres.plte.length; i++) plte.push(qres.plte[i].est.rgba);
13894
+
13895
+ var cof = 0;
13896
+ for(var i=0; i<frms.length; i++) {
13897
+ var frm=frms[i], bln=frm.img.length, ind = new Uint8Array(qres.inds.buffer, cof>>2, bln>>2); inds.push(ind);
13898
+ var bb = new Uint8Array(qres.abuf,cof,bln);
13899
+
13900
+ //console.log(frm.img, frm.width, frm.height);
13901
+ //var time = Date.now();
13902
+ if(dither) UPNG.encode.dither(frm.img, frm.rect.width, frm.rect.height, plte, bb, ind);
13903
+ //console.log(Date.now()-time);
13904
+ frm.img.set(bb); cof+=bln;
13905
+ }
13906
+
13884
13907
  //console.log("quantize", Date.now()-time); time = Date.now();
13885
13908
  }
13886
13909
  else {
@@ -14072,8 +14095,8 @@ end\
14072
14095
  else if(h*bpl>500000 || bpp==1) ftry=[0];
14073
14096
  var opts; if(levelZero) opts={level:0};
14074
14097
 
14075
- var CMPR = (levelZero && UZIP!=null) ? UZIP : pako$1;
14076
14098
 
14099
+ var CMPR = (data.length>10e6 && UZIP!=null) ? UZIP : pako$1;
14077
14100
  for(var i=0; i<ftry.length; i++) {
14078
14101
  for(var y=0; y<h; y++) UPNG.encode._filterLine(data, img, y, bpl, bpp, ftry[i]);
14079
14102
  //var nimg = new Uint8Array(data.length);
@@ -14083,6 +14106,7 @@ end\
14083
14106
  //console.log(crc, UZIP.adler(data,2,data.length-6));
14084
14107
  fls.push(CMPR["deflate"](data,opts));
14085
14108
  }
14109
+
14086
14110
  var ti, tsize=1e9;
14087
14111
  for(var i=0; i<fls.length; i++) if(fls[i].length<tsize) { ti=i; tsize=fls[i].length; }
14088
14112
  return fls[ti];
@@ -14137,27 +14161,30 @@ end\
14137
14161
 
14138
14162
  UPNG.quantize = function(abuf, ps)
14139
14163
  {
14140
- var oimg = new Uint8Array(abuf), nimg = oimg.slice(0), nimg32 = new Uint32Array(nimg.buffer);
14164
+ var sb = new Uint8Array(abuf), tb = sb.slice(0), tb32 = new Uint32Array(tb.buffer);
14141
14165
 
14142
- var KD = UPNG.quantize.getKDtree(nimg, ps);
14166
+ var KD = UPNG.quantize.getKDtree(tb, ps);
14143
14167
  var root = KD[0], leafs = KD[1];
14144
14168
 
14145
- UPNG.quantize.planeDst;
14146
- var sb = oimg, tb = nimg32, len=sb.length;
14147
-
14148
- var inds = new Uint8Array(oimg.length>>2);
14149
- for(var i=0; i<len; i+=4) {
14150
- var r=sb[i]*(1/255), g=sb[i+1]*(1/255), b=sb[i+2]*(1/255), a=sb[i+3]*(1/255);
14169
+ var planeDst = UPNG.quantize.planeDst;
14170
+ var len=sb.length;
14151
14171
 
14152
- // exact, but too slow :(
14153
- var nd = UPNG.quantize.getNearest(root, r, g, b, a);
14154
- //var nd = root;
14155
- //while(nd.left) nd = (planeDst(nd.est,r,g,b,a)<=0) ? nd.left : nd.right;
14156
-
14157
- inds[i>>2] = nd.ind;
14158
- tb[i>>2] = nd.est.rgba;
14159
- }
14160
- return { abuf:nimg.buffer, inds:inds, plte:leafs };
14172
+ var inds = new Uint8Array(len>>2), nd;
14173
+ if(sb.length<20e6) // precise, but slow :(
14174
+ for(var i=0; i<len; i+=4) {
14175
+ var r=sb[i]*(1/255), g=sb[i+1]*(1/255), b=sb[i+2]*(1/255), a=sb[i+3]*(1/255);
14176
+
14177
+ nd = UPNG.quantize.getNearest(root, r, g, b, a);
14178
+ inds[i>>2] = nd.ind; tb32[i>>2] = nd.est.rgba;
14179
+ }
14180
+ else
14181
+ for(var i=0; i<len; i+=4) {
14182
+ var r=sb[i]*(1/255), g=sb[i+1]*(1/255), b=sb[i+2]*(1/255), a=sb[i+3]*(1/255);
14183
+
14184
+ nd = root; while(nd.left) nd = (planeDst(nd.est,r,g,b,a)<=0) ? nd.left : nd.right;
14185
+ inds[i>>2] = nd.ind; tb32[i>>2] = nd.est.rgba;
14186
+ }
14187
+ return { abuf:tb.buffer, inds:inds, plte:leafs };
14161
14188
  };
14162
14189
 
14163
14190
  UPNG.quantize.getKDtree = function(nimg, ps, err) {
@@ -14265,12 +14292,12 @@ end\
14265
14292
  ];
14266
14293
 
14267
14294
  var A = Rj, M = UPNG.M4;
14268
- var b = [0.5,0.5,0.5,0.5], mi = 0, tmi = 0;
14295
+ var b = [Math.random(),Math.random(),Math.random(),Math.random()], mi = 0, tmi = 0;
14269
14296
 
14270
14297
  if(N!=0)
14271
- for(var i=0; i<10; i++) {
14298
+ for(var i=0; i<16; i++) {
14272
14299
  b = M.multVec(A, b); tmi = Math.sqrt(M.dot(b,b)); b = M.sml(1/tmi, b);
14273
- if(Math.abs(tmi-mi)<1e-9) break; mi = tmi;
14300
+ if(i!=0 && Math.abs(tmi-mi)<1e-9) break; mi = tmi;
14274
14301
  }
14275
14302
  //b = [0,0,1,0]; mi=N;
14276
14303
  var q = [m0*iN, m1*iN, m2*iN, m3*iN];
@@ -14307,6 +14334,66 @@ end\
14307
14334
  return nimg.buffer;
14308
14335
  };
14309
14336
 
14337
+ UPNG.encode.dither = function(sb, w, h, plte, tb, oind) {
14338
+
14339
+ function addErr(er, tg, ti, f) {
14340
+ tg[ti]+=(er[0]*f)>>4; tg[ti+1]+=(er[1]*f)>>4; tg[ti+2]+=(er[2]*f)>>4; tg[ti+3]+=(er[3]*f)>>4;
14341
+ }
14342
+ function N(x) { return Math.max(0, Math.min(255, x)); }
14343
+ function D(a,b) { var dr=a[0]-b[0], dg=a[1]-b[1], db=a[2]-b[2], da=a[3]-b[3]; return (dr*dr + dg*dg + db*db + da*da); }
14344
+
14345
+
14346
+ var pc=plte.length, nplt = [];
14347
+ for(var i=0; i<pc; i++) {
14348
+ var c = plte[i];
14349
+ nplt.push([((c>>>0)&255), ((c>>>8)&255), ((c>>>16)&255), ((c>>>24)&255)]);
14350
+ }
14351
+ for(var i=0; i<pc; i++) {
14352
+ var ne=0xffffffff, ni=0;
14353
+ for(var j=0; j<pc; j++) { var ce=D(nplt[i],nplt[j]); if(j!=i && ce<ne) { ne=ce; ni=j; } }
14354
+ }
14355
+
14356
+ var tb32 = new Uint32Array(tb.buffer);
14357
+ var err = new Int16Array(w*h*4);
14358
+
14359
+ for(var y=0; y<h; y++) {
14360
+ for(var x=0; x<w; x++) {
14361
+ var i = (y*w+x)*4;
14362
+
14363
+ var cc = [N(sb[i]+err[i]), N(sb[i+1]+err[i+1]), N(sb[i+2]+err[i+2]), N(sb[i+3]+err[i+3])];
14364
+
14365
+ var ni=0, nd = 0xffffff;
14366
+ for(var j=0; j<pc; j++) {
14367
+ var cd = D(cc,nplt[j]);
14368
+ if(cd<nd) { nd=cd; ni=j; }
14369
+ }
14370
+
14371
+ //ni = oind[i>>2];
14372
+ var nc = nplt[ni];
14373
+ var er = [cc[0]-nc[0], cc[1]-nc[1], cc[2]-nc[2], cc[3]-nc[3]];
14374
+
14375
+ //addErr(er, err, i+4, 16);
14376
+
14377
+ //*
14378
+ if(x!=w-1) addErr(er, err, i+4 , 7);
14379
+ if(y!=h-1) {
14380
+ if(x!= 0) addErr(er, err, i+4*w-4, 3);
14381
+ addErr(er, err, i+4*w , 5);
14382
+ if(x!=w-1) addErr(er, err, i+4*w+4, 1); //*/
14383
+ }
14384
+
14385
+ oind[i>>2] = ni; tb32[i>>2] = plte[ni];
14386
+ }
14387
+ }
14388
+ };
14389
+ if (typeof module !== 'undefined') {
14390
+ if (exports && exports.default) {
14391
+ module.exports = exports.default;
14392
+ } else if (exports) {
14393
+ module.exports = exports;
14394
+ }
14395
+ }
14396
+
14310
14397
  const getImageType = (ctype) => {
14311
14398
  if (ctype === 0)
14312
14399
  return PngType.Greyscale;