UNPKG

mupdf-webviewer

Version:

The web viewer SDK using mupdf.js

2 lines (1 loc) 29.1 kB
var v=Object.defineProperty;var w=(s,e,t)=>e in s?v(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t;var q=(s,e,t)=>w(s,typeof e!="symbol"?e+"":e,t);var Y={SET_BASE_URI:"setBaseURI",OPEN_DOCUMENT:"openDocument",CLOSE_DOCUMENT:"closeDocument",DOWNLOAD_DOCUMENT:"downloadDocument",DRAW_PAGE:"drawPageAsPNG",LOAD_OUTLINE:"loadOutline",LOAD_PAGE_TEXT:"loadPageText",LOAD_PDFINFO:"loadPdfInfo",LOAD_PDF_LAYOUT:"loadPdfLayout",AUTHENTICATE_PASSWORD:"authenticatePassword",GET_PRINT_URL:"getPrintBlobURL",GET_ANNOTATIONS:"getAnnotations",GET_ACROFORM:"getAcroForm",APPLY_ANNOT_CHANGES:"applyAnnotChanges",APPLY_ACROFIELD_CHANGES:"applyAcroFieldChanges",APPLY_REDACTION:"applyRedaction",GET_STAMP_TEMPLATE_IMAGES:"getStampTemplateImages"};var b,U=class{TOAST_ID=1;fetchSub=null;get buffer(){return this.fetchSub!==null?this.fetchSub:(this.fetchSub=this.fetch().then(e=>e),this.fetchSub)}fetch(){return postMessage(["TOAST",this.TOAST_ID,{action:"SHOW",toastOption:{toastStyle:"notification",content:"LOADING_FALLBACK_FONT_DESC",header:"LOADING_FALLBACK_FONT",timeout:null}}]),new Promise(async(e,t)=>{console.debug("Fetching fallback font.");let r=await fetch(`${V}DroidSansFallback.ttf`);if(!r.ok||r.headers.get("Content-type")!=="font/ttf"){postMessage(["TOAST",this.TOAST_ID,{action:"DISPOSE"}]),t(new Error("Failed to fetch fallback font."));return}let n=new b.Buffer(await r.arrayBuffer());postMessage(["TOAST",this.TOAST_ID,{action:"DISPOSE"}]),e(n)})}},M=class{static isCircle(e){return e.subType==="Circle"}static isSquare(e){return e.subType==="Square"}static isFreeText(e){return e.subType==="FreeText"}static isRedact(e){return e.subType==="Redact"}static isPopup(e){return e.subType==="Popup"}static isStamp(e){return e.subType==="Stamp"}static isHighlight(e){return e.subType==="Highlight"}static isStrikeOut(e){return e.subType==="StrikeOut"}static isUnderline(e){return e.subType==="Underline"}static isTextMarkUp(e){return this.isHighlight(e)||this.isStrikeOut(e)||this.isUnderline(e)}static isText(e){return e.subType==="Text"}static isLine(e){return e.subType==="Line"}static isPolyLine(e){return e.subType==="PolyLine"}static isPolygon(e){return e.subType==="Polygon"}static isInk(e){return e.subType==="Ink"}static isLink(e){return e.subType==="Link"}static isWidget(e){return e.subType==="Widget"}static isColor(e){return Array.isArray(e)&&e.length===3&&e.every(t=>typeof t=="number")}static isQuadPoint(e){return Array.isArray(e)&&e.length===8&&e.every(t=>typeof t=="number")}static isPoint(e){return Array.isArray(e)&&e.length===2&&e.every(t=>typeof t=="number")}static isRect(e){return Array.isArray(e)&&e.length===4&&e.every(t=>typeof t=="number")}};q(M,"defaultAppearanceFontNameRegex",/\s*([^\s/]+)\s+\d+\s+Tf/);var E=class{openedDocument;constructor(e){this.openedDocument=e}apply(e,t){if(M.isInk(t)){this.applyInk(e,t);return}if(M.isFreeText(t)){this.applyFreeText(e,t);return}if(M.isTextMarkUp(t)){this.applyTextMarkup(e,t);return}if(M.isText(t)){this.applyText(e,t);return}if(M.isLine(t)){this.applyLine(e,t);return}if(M.isRedact(t)){this.applyRedact(e,t);return}if(M.isLink(t)){this.applyLink(e,t);return}if(M.isStamp(t)){this.applyStamp(e,t);return}if(M.isPolyLine(t)){this.applyPolyLine(e,t);return}if(M.isPolygon(t)){this.applyPolygon(e,t);return}if(M.isCircle(t)){this.applyCircle(e,t);return}if(M.isSquare(t)){this.applySquare(e,t);return}if(M.isPopup(t)){this.applyPopup(e,t);return}if(M.isWidget(t)){this.applyWidget(e,t);return}console.warn(`An unsupported annotation has been entered. ${t}`),this.applyCommonField(e,t)}applyInk(e,t){let n=e.getObject().get("InkList").asJS();t.inkList.every(i=>i.every(a=>M.isPoint(a)))&&!Array.isArray(n)&&e.setInkList(t.inkList),this.applyCommonField(e,t),this.applyCommonShape(e,t),e.update(),this.applyRect(e,t)}applyFreeText(e,t){let r=e.getObject(),n=r.get("CL").asJS();Array.isArray(t.CL)&&(!Array.isArray(n)||n.some((a,u)=>a!==t.CL[u]))&&r.put("CL",t.CL);let i=r.get("RD").asJS();Array.isArray(t.RD)&&(!Array.isArray(i)||i.some((a,u)=>a!==t.RD[u]))&&r.put("RD",t.RD),this.applyCommonField(e,t),this.applyCommonShape(e,t),this.applyDefaultAppearance(e,t),this.applyRect(e,t),this.applyLineEndingStyle(e,t),e.update()}applyTextMarkup(e,t){let n=e.getObject().get("QuadPoints").asJS();t.quadPoints.every(i=>M.isQuadPoint(i))&&(!Array.isArray(n)||t.quadPoints.flat().some((i,a)=>i!==n[a]))&&e.setQuadPoints(t.quadPoints),this.applyCommonField(e,t),this.applyRect(e,t),e.update()}applyText(e,t){this.applyCommonField(e,t),this.applyRect(e,t),e.update()}applyLine(e,t){let r=e.getObject(),n=r.get("L").asJS();t.L.every(u=>M.isPoint(u))&&(!Array.isArray(n)||t.L.flat().some((u,o)=>u!==n[o]))&&e.setLine(t.L[0],t.L[1]);let i=r.get("LL");typeof t.LL=="number"&&(!i.isNumber()||i.getNumber()!==t.LL)&&e.setLineLeader(t.LL);let a=r.get("LLE");typeof t.LLE=="number"&&(!a.isNumber()||a.getNumber()!==t.LLE)&&e.setLineLeaderExtension(t.LLE),this.applyCommonField(e,t),this.applyCommonShape(e,t),this.applyLineEndingStyle(e,t),this.applyRect(e,t),this.applyMeasure(e,t),e.update()}applyRedact(e,t){let r=e.getObject(),n=r.get("OverlayText");typeof t.overlayText=="string"&&(!n.isString()||n.getString()!==t.overlayText)&&r.put("OverlayText",t.overlayText);let i=r.get("OC").asJS();M.isColor(t.OC)&&(!Array.isArray(i)||i.some((a,u)=>a!==t.OC[u]))&&r.put("OC",t.OC),this.applyCommonField(e,t),this.applyCommonShape(e,t),this.applyRect(e,t),this.applyDefaultAppearance(e,t),this.applyAligment(e,t),e.update()}applyLink(e,t){let r=e.getObject();switch(r.put("BS",{W:0}),t.A.S){case"GoTo":let n=this.openedDocument.loadPage(t.A.D.page).getObject();r.put("A",{S:t.A.S,D:[n,t.A.D.mode]});break;case"URI":r.put("A",{S:t.A.S,URI:`(${t.A.URI})`});break}this.applyCommonField(e,t),this.applyRect(e,t),e.update()}applyStamp(e,t){typeof t.name=="string"&&e.setIcon(t.name),this.applyCommonField(e,t),this.applyRect(e,t),e.update()}applyPolyLine(e,t){this.applyCommonField(e,t),this.applyCommonShape(e,t),this.applyLineEndingStyle(e,t),this.applyRect(e,t),this.applyVertices(e,t),this.applyMeasure(e,t),e.update()}applyPolygon(e,t){this.applyCommonField(e,t),this.applyCommonShape(e,t),this.applyRect(e,t),this.applyVertices(e,t),this.applyMeasure(e,t),e.update()}applyCircle(e,t){this.applyCommonField(e,t),this.applyCommonShape(e,t),this.applyRect(e,t),e.update()}applySquare(e,t){this.applyCommonField(e,t),this.applyCommonShape(e,t),this.applyRect(e,t),e.update()}applyPopup(e,t){this.applyCommonField(e,t),this.applyRect(e,t),e.update()}applyWidget(e,t){this.applyCommonField(e,t),this.applyRect(e,t),e.update()}applyCommonField(e,t){let r=e.getObject(),n=r.get("M");typeof t.M=="string"&&(!n.isString()||n.getString()!==t.M)&&r.put("M",t.M);let i=r.get("C").asJS();M.isColor(t.C)&&(!Array.isArray(i)||i.some((g,m)=>g!==t.C[m]))&&e.setColor(t.C);let a=r.get("Contents");typeof t.contents=="string"&&(!a.isString()||a.getString()!==t.contents)&&e.setContents(t.contents);let u=r.get("F");typeof t.F=="number"&&(!u.isNumber()||u.getNumber()!==t.F)&&e.setFlags(t.F);let o=r.get("T");typeof t.T=="string"&&(!o.isString()||o.getString()!==t.T)&&e.setAuthor(t.T);let p=r.get("CA");typeof t.CA=="number"&&(!p.isNumber()||p.getNumber()!==t.CA)&&e.setOpacity(t.CA);let f=r.get("IT");t.IT&&!f.isName()&&r.put("IT",t.IT);let c=r.get("NM");typeof t.NM=="string"&&!c.isString()&&r.put("NM",`(${t.NM})`);let D=r.get("CreationDate");typeof t.CreationDate=="string"&&!D.isString()&&r.put("CreationDate",`(${t.CreationDate})`)}applyCommonShape(e,t){let r=e.getObject(),n=r.get("BS","W");typeof t.BS?.W=="number"&&(!n.isNumber()||n.getNumber()!==t.BS.W)&&e.setBorderWidth(t.BS.W);let i=r.get("BS","S");t.BS?.S&&(!i.isName()||i.getName()!==t.BS.S)&&e.setBorderStyle(t.BS.S);let a=r.get("BS","D").asJS();t.BS?.S==="Dashed"&&Array.isArray(t.BS?.D)&&(!Array.isArray(a)||a.some((f,c)=>f!==t.BS.D[c]))?e.setBorderDashPattern(t.BS.D):t.BS?.S==="Solid"&&Array.isArray(a)&&a.length>0&&e.setBorderDashPattern([]);let u=r.get("IC").asJS();M.isColor(t.IC)&&(!Array.isArray(u)||u.some((f,c)=>f!==t.IC[c]))?e.setInteriorColor(t.IC):typeof t.IC>"u"&&Array.isArray(u)&&r.delete("IC");let o=r.get("BE","S");t.BE?.S&&(!o.isName()||o.getName()!==t.BE.S)&&e.setBorderEffect(t.BE.S);let p=r.get("BE","I");typeof t.BE?.I=="number"&&(!p.isNumber()||p.getNumber()!==t.BE.I)&&e.setBorderEffectIntensity(t.BE.I)}applyRect(e,t){let r=e.getObject();M.isRect(t.rect)&&r.put("Rect",t.rect)}applyDefaultAppearance(e,t){if(!t.DA||typeof t.DA.fontName!="string"||typeof t.DA.fontSize!="number"||!M.isColor(t.DA.fontColor))return;let{fontName:r,fontSize:n,fontColor:i}=t.DA,u=e.getObject().get("DA");if(!u.isString()){e.setDefaultAppearance(r,n,i);return}let{color:o,font:p,size:f}=e.getDefaultAppearance(),c=u.getString()?.match(M.defaultAppearanceFontNameRegex)?.[1]??p;o.every((D,g)=>D===i[g])&&c===r&&f===n||e.setDefaultAppearance(r,n,i)}applyLineEndingStyle(e,t){if(!Array.isArray(t.LE))return;let r=e.getObject(),[n="None",i="None"]=t.LE;if(M.isFreeText(t)){r.put("LE",n);return}e.setLineEndingStyles(n,i)}applyVertices(e,t){let r=e.getObject().get("Vertices").asJS(),n=Array.isArray(r)&&t.vertices.flat().every((i,a)=>i===r[a]);!t.vertices.every(i=>M.isPoint(i))||n||e.setVertices(t.vertices)}applyMeasure(e,t){let r=t.Measure;if(!r||r.X.length===0)return;let n=e.getObject(),i=n.get("Measure").asJS(),a={C:r.X[0].C,D:r.X[0].D,U:`(${r.X[0].U})`,F:"D",SS:"()",RT:"()",RD:"()"};if(!i||!Array.isArray(i.X)||i.X.length===0){i={Type:"Measure"},i.X=[a],i.D=[{...a,C:1}],i.A=[{...a,U:`(sq ${r.X[0].U})`,C:1}],i.R=r.R,n.put("Measure",i);return}typeof r.X[0].C=="number"&&i.X[0].C!==r.X[0].C&&(i.X[0].C=r.X[0].C),typeof r.X[0].U=="string"&&i.X[0].U!==r.X[0].U&&(i.X[0].U=r.X[0].U,i.D=[{...a,C:1}],i.A=[{...a,U:`sq ${a.U}`,C:1}],i.R=r.R),n.put("Measure",i)}applyAligment(e,t){let r=e.getObject();typeof t.Q=="number"&&r.put("Q",t.Q)}},j=class{widgetOidToKids;constructor(e){this.widgetOidToKids=e}applyAcroField(e,t){let r=e.get("Ff");typeof t.Ff=="number"&&(!r.isNumber()||r.getNumber()!==t.Ff)&&e.put("Ff",t.Ff);let n=e.get("V");t.V!==null&&t.V!==void 0&&(!n.isString()||n.getString()!==t.V)&&this.widgetOidToKids.has(t.oid)&&this.widgetOidToKids.get(t.oid).forEach(a=>this.applyWidget(a,e,t));let i=e.get("T");typeof t.T=="string"&&(!i.isString()||i.getString()!==t.T)&&e.put("T",`(${t.T})`)}applyWidget(e,t,r){let n=e.getObject();switch(r.FT){case"Rb":case"Cb":let i=n.get("AP","N");if(i.isIndirect()||!i.isDictionary())return;let a=Object.keys(i.asJS()),u=a.findIndex(f=>f===String(r.V));e.setChoiceValue(u>-1?a[u]:"Off"),e.update();return;case"Tx":if(typeof r.V!="string"){console.warn("The value set in the TextField is not of type string.");return}e.setTextValue(r.V),e.update();return;case"Cx":case"Lx":let o=t.get("Opt").asJS();if(!Array.isArray(o)||!o.every(Array.isArray))return;let p=o.find(f=>f[0]===String(r.V));if(!p||p.length<2)return;e.setChoiceValue(p[1]),e.update();return}}};onmessage=async s=>{let[e,t,r]=s.data;try{if(!b&&e!==Y.SET_BASE_URI)throw new Error("set base uri first");let n=await Z[e](...r);postMessage(["RESULT",t,n])}catch(n){if(!(n instanceof Error)){console.error(n),postMessage(["ERROR",t,{}]);return}postMessage(["ERROR",t,n])}};var T=new Map,L=null,V="",k=!1,B=null,H=null;function z(s){let[e,t,r,n,i,a]=s.getTransform(),u=Math.atan2(t,e)*(180/Math.PI);return u<0&&(u=360+u),u}function Q(s,e){let[t,r,n,i]=s.getBounds(),a=e*Math.PI/180,u=Math.cos(a),o=Math.sin(a),p=Math.abs(t*u+r*o),f=Math.abs(-t*o+r*u),c=Math.abs(n*u+i*o),D=Math.abs(-n*o+i*u),g=c-p,m=D-f;return{originalUpperLeftX:p,originalUpperLeftY:f,originalLowerRightX:c,originalLowerRightY:D,width:g,height:m}}function h(s,e){let t=Math.pow(10,e??4);return Math.round(s*t)/t}function A(s,e){return(s&1<<e-1)!==0}function tt(s){return s.isPDF()}function N(s){return`#${s.slice(0,3).map(t=>Math.round(t*255).toString(16).padStart(2,"0")).join("").toUpperCase()}`}function W(s){let t=s.toPixmap(b.Matrix.concat(b.Matrix.identity,b.Matrix.scale(4,4)),b.ColorSpace.DeviceRGB,!0).asPNG();if(t===null)return null;let r=32768,n=[];for(let i=0;i<t.byteLength;i+=r)n.push(String.fromCharCode(...Array.from(t.subarray(i,i+r))));return{data:btoa(n.join("")),format:"png",type:"image"}}function X(s,e){let t=e.get("DA")?.getString()?.match(M.defaultAppearanceFontNameRegex)?.[1];return{strokeColor:N(s.color),fontName:t??s.font,fontSize:s.size}}function $(s,e){let t=s.getObject(),r={},[n,i,a,u]=s.hasRect()?s.getRect():s.getBounds();r.rect={left:h(n),top:h(e-i),right:h(a),bottom:h(e-u)};let o=s.getOpacity();o!==null&&(r.opacity=o),r.Rotate=t.get("Rotate").getNumber()??0;let p=t.get("CreationDate");p.isString()&&(r.CreationDate=p.getString());let f=t.get("M");f.isString()&&(r.M=f.getString());let c=s.getContents();c?.length>0&&(r.contents=c);let D=s.getFlags();if(D!==null&&(r.F=D),!t.get("AP").isNull()){let l=W(s);l!==null&&(r.appearance=l)}if(s.hasAuthor()){let l=s.getAuthor();l?.length>0&&(r.T=l)}let g=t.get("NM");if(g.isString()&&(r.NM=g.getString()),s.hasBorder()){let l=s.getBorderWidth();l!==null&&(r.width=l),r.borderStyle={style:"solid"};let d=s.getBorderStyle();d!==null&&(r.borderStyle.style=d.toLowerCase(),d==="Dashed"&&(r.borderStyle.dashPattern=s.getBorderDashPattern())),s.hasBorderEffect()&&s.getBorderEffect()==="Cloudy"&&(r.borderEffect={style:"C",intensity:s.getBorderEffectIntensity()})}else{let l=t.get("BS","W");l.isNumber()&&(r.width=l.getNumber())}let m=t.get("C");t.get("C").isArray()&&(r.color=N(m.asJS()));let P=t.get("IC");if(t.get("IC").isArray()&&(r.InteriorColor=N(P.asJS())),s.getType()==="Redact"){let l=t.get("OC");if(t.get("OC").isArray()&&(r.OutlineColor=N(l.asJS())),t.get("DA").isString()){let{fontName:C,fontSize:R,strokeColor:S}=X(s.getDefaultAppearance(),t);r.fontName=C,r.fontSize=R,r.fontColor=S}let d=t.get("Q");if(d.isNumber())switch(d.getNumber()){case 0:r.alignment="left";break;case 1:r.alignment="center";break;case 2:r.alignment="right"}let y=t.get("OverlayText");y.isString()&&(r.overlayText=y.getString())}if(s.getType()==="FreeText"){let l=X(s.getDefaultAppearance(),t);r.contentsRichtext={text:s.getContents()??"",borderColor:l.strokeColor,fontName:l.fontName,fontSize:l.fontSize},t.get("DS").getString()?.split(";").forEach(S=>{let[x,O]=S.split(":").map(I=>I.trim());switch(x){case"color":r.contentsRichtext.fontColor=O?.toUpperCase();break;case"text-align":r.contentsRichtext.textAlign=O}});let y=s.getCalloutLine();y!==void 0&&(r.vertices=y.map(S=>{let[x,O]=S;return{x,y:e-O}}));let C=t.get("LE");C.isName()&&(r.LE=[C.getName()]);let R=t.get("RD");if(R.isArray()&&R.asJS()?.some(S=>S!==0)){r.textRect={left:r.rect.left,top:r.rect.top,right:r.rect.right,bottom:r.rect.bottom};let[S,x,O,I]=s.getBounds();r.rect={left:h(S),top:h(e-x),right:h(O),bottom:h(e-I)}}}if(s.hasQuadPoints()&&(r.quadPoints=s.getQuadPoints().map(l=>l.reduce((d,y,C)=>(C%2===0&&d.push({x:l[C],y:e-l[C+1]}),d),[]))),s.hasLine()){let[[l,d],[y,C]]=s.getLine();if(r.coordinates={sp:{x:l,y:e-d},ep:{x:y,y:e-C}},s.hasLineEndingStyles()){let{start:x,end:O}=s.getLineEndingStyles();r.LE=[x,O]}t.get("LL").isNumber()&&(r.LL=s.getLineLeader()),t.get("LLE").isNumber()&&(r.LLE=s.getLineLeaderExtension())}let F=t.get("Measure");return F.isDictionary()&&(r.Measure={R:F.get("R").getString()},r.Measure.X=[],F.get("X").forEach(l=>{r.Measure.X.push({C:h(l.get("C").getNumber(),6),D:l.get("D").getNumber(),U:l.get("U").getString()})})),s.hasInkList()&&(r.inkList=s.getInkList().map(l=>l.map(([d,y])=>({x:h(d),y:h(e-y)})))),s.hasVertices()&&(r.vertices=s.getVertices().map(([l,d])=>({x:h(l),y:h(e-d)}))),r}function et(s){let e={},t=s.get("CA");t.isNumber()&&(e.opacity=t.getNumber()),e.Rotate=s.get("Rotate").getNumber()??0;let r=s.get("CreationDate");r.isString()&&(e.CreationDate=r.getString());let n=s.get("M");n.isString()&&(e.M=n.getString());let i=s.get("F");i.isNumber()&&(e.F=i.getNumber());let a=s.get("NM");return a.isString()&&(e.NM=a.getString()),e}function rt(s){let e={},t=s.get("Rect");if(t.isArray()){let[g,m,P,F]=t.asJS();e.rect={left:h(g),top:h(F),right:h(P),bottom:h(m)}}let r=s.get("CA");r.isNumber()&&(e.opacity=r.getNumber()),e.Rotate=s.get("Rotate").getNumber()??0;let n=s.get("CreationDate");n.isString()&&(e.CreationDate=n.getString());let i=s.get("M");i.isString()&&(e.M=i.getString());let a=s.get("Contents");if(a.isString()){let g=a.getString();g.length>0&&(e.contents=g)}let u=s.get("F");u.isNumber()&&(e.F=u.getNumber());let o=s.get("NM");o.isString()&&(e.NM=o.getString());let p=s.get("BS","S");if(p.isName())switch(p.getName()){case"D":e.borderStyle={style:"dashed"};let g=s.get("BS","D");e.borderStyle.dashPattern=g.isArray()?g.asJS():[3];break;case"S":default:e.borderStyle={style:"solid"}}let f=s.get("BS","W");f.isNumber()&&(e.width=f.getNumber());let c=s.get("C");c.isArray()&&(e.color=N(c.asJS()));let D=s.get("A","S");switch(D.isName()&&(e.type=D.getName()),e.type){case"GoTo":let g=s.get("A","D");if(g.isArray()){let P=g.get(0,"StructParents");P.isNumber()&&(e.dest=P.toString());let[F,l,...d]=g.asJS();e.fit={mode:l};let y={};switch(l){case"XYZ":y.left=d[0],y.top=d[1],y.zoom=d[2];break;case"FitH":case"FitBH":y.top=d[0];break;case"FitV":case"FitBV":y.left=d[0];break;case"FitR":y.left=d[0],y.bottom=d[1],y.right=d[2],y.top=d[3];break;case"Fit":case"FitB":default:y=null;break}y!==null&&(e.fit.args=y)}break;case"URI":let m=s.get("A","URI");m.isString()&&(e.dest=m.getString())}return e}function st(s,e){let t=$(s,e),r=s.getObject(),n=r.get("FT");n.isName()&&(t.FT=n.getName()),t.Ff=s.getFieldFlags()??0;let i=r.get("T");if(i.isString()&&(t.T=i.getString()),s.isText()||s.isPushButton()||s.isChoice()){let{fontName:c,fontSize:D,strokeColor:g}=X(s.getDefaultAppearance(),r);t.fontName=c,t.fontSize=D,t.fontColor=g}let a=r.get("MK");if(a.isDictionary()){let c=a.get("R");t.MK={R:c.isNumber()?c.getNumber():0};let D=a.get("BG");D.isArray()&&(t.MK.backgroundColor=N(D.asJS()));let g=a.get("BC");g.isArray()&&(t.MK.borderColor=N(g.asJS()));let m=a.get("CA");m.isString()&&(t.MK.CA=m.getString())}let u=r.get("Q");if(u.isNumber())switch(u.getNumber()){case 0:t.alignment="left";break;case 1:t.alignment="center";break;case 2:t.alignment="right"}let o=r.get("Parent");if(o.isIndirect()&&(t.Parent=o.asIndirect(),o.get("FT").getName()==="Btn")){let c=o.get("V");c.isNull()||(t.V=c.valueOf())}let p=r.get("AP","N");if(!p.isIndirect()&&p.isDictionary()){t.AP_N=Object.keys(p.asJS());let c=s.getValue();t.appearance=[{state:c,data:t.appearance.data,format:"png",type:"image"},...t.AP_N.filter(D=>D!==c).reduce((D,g)=>(s.setTextValue(g),D.push({state:g,...W(s)}),s.setTextValue(c),D),[])]}let f=r.get("A","S");if(f.isName()&&(t.type=f.getName(),t.type==="JavaScript")){let c=r.get("A","JS");c.isString()&&(t.JS=c.getString())}return t}var Z={setBaseURI:async s=>{V=`${s}modules/mupdf/`,b=await import(`${V}mupdfjs.js`)},openDocument:(s,e,t)=>{let r=b.Document.openDocument(s,e);if(!tt(r))throw new Error("doc is not pdf");H=new U,b.installLoadFontFunction((n,i)=>["JP","KR","TC","SC"].includes(i)?B||(k=!0,null):null),T.size===0&&(L=t),T.set(t,{document:r,filename:e,size:s.byteLength})},closeDocument:s=>{let e=s??L;T.get(e)?.document.destroy(),T.delete(e)},downloadDocument:s=>T.get(s??L).document.saveToBuffer().asUint8Array(),drawPageAsPNG:async(s,e,t,r)=>{let n=b.Matrix.identity,i,a,u,o;try{let p=b.Matrix.scale(e,e);n=b.Matrix.concat(n,p);let f=b.Matrix.rotate(t);if(n=b.Matrix.concat(n,f),i=T.get(r??L).document.loadPage(s),u=b.Rect.transform(i.getBounds(),n),a=new b.Pixmap(b.ColorSpace.DeviceRGB,u,!1),a.clear(255),o=new b.DrawDevice(n,a),k=!1,i.runPageContents(o,b.Matrix.identity),k){try{B=await H.buffer}catch(c){console.error(c),b.installLoadFontFunction(()=>null),postMessage(["TOAST",null,{action:"SHOW",toastOption:{toastStyle:"notification",content:"TEXT_RENDER_WARNING",header:"UNAVAILABLE_FONT"}}])}i.runPageContents(o,b.Matrix.identity)}return o.close(),o.destroy(),a?.asPNG()}finally{a?.destroy(),i?.destroy()}},loadOutline:s=>{let e=new Map,t=new Map,r=T.get(s??L).document,n=o=>{let p=(c,D)=>{let g=c.get("Kids");if(g.isNull()){e.set(c.toString(),D);return}g.forEach((m,P)=>{if(typeof P!="number")return;let F=0;for(let l=0;l<P;l++){let d=g.get(l,"Count");d.isNumber()&&(F+=d.getNumber()-1)}p(m,D+P+F)})};if(!o)return null;if(e.has(o))return e.get(o);p(r.getTrailer().get("Root","Pages"),0);let f=e.get(o);return(typeof f!="number"||f<0)&&console.error("Unable to find the target page during bookmark extraction"),f},i=(o,p=!1)=>{let f=o.get("S");if(f.isName()||p)switch(p?"GoTo":f.getName()){case"GoTo":let D=o.get("D");if(D.isArray()){let[g,m,...P]=D.asJS(),F=n(g);if(typeof F=="number"&&F>=0){let l={};switch(m){case"XYZ":l.left=P[0],l.top=P[1],l.zoom=P[2];break;case"FitH":case"FitBH":l.top=P[0];break;case"FitV":case"FitBV":l.left=P[0];break;case"FitR":l.left=P[0],l.bottom=P[1],l.right=P[2],l.top=P[3];break;case"Fit":case"FitB":default:l=null;break}return{pageIndex:F,mode:m,coordinates:l}}}else if(D.isString())return a(D.getString());break}return null},a=o=>{let p=f=>{let c=f.get("Kids"),D=f.get("Names");c.isArray()&&c.forEach(g=>p(g)),D.isArray()&&D.forEach((g,m)=>{if(typeof m!="number"||m%2===1||!g.isString())return;let P=D.get(m+1);if(!P.isNull()){let F=i(P,!0);t.set(g.getString(),F)}})};return t.has(o)||p(r.getTrailer().get("Root","Names","Dests")),t.get(o)},u=o=>{let p=o,f=[];for(;!p.isNull();){let c={},D=p.get("Title"),g=p.get("A"),m=p.get("First"),P=p.get("Dest");m.isNull()||(c.children=u(m)),D.isString()&&(c.text=D.getString());let F=g.isNull()?P.isNull()?null:a(P.getString()):i(g);if(F){let{pageIndex:l,mode:d,coordinates:y}=F;c.dest=l,c.fit=y===null?{mode:d}:{mode:d,args:y}}f.push(c),p=p.get("Next")}return f};return u(r.getTrailer().get("Root","Outlines","First"))},loadPdfInfo:s=>{let{document:e,filename:t,size:r}=T.get(s??L),n={},i={},a=e.getMetaData("format"),[u,o]=a.split(" "),p=new Map([["Author","info:Author"],["CreationDate","info:CreationDate"],["Creator","info:Creator"],["Keywords","info:Keywords"],["ModDate","info:ModDate"],["Producer","info:Producer"],["Subject","info:Subject"],["Title","info:Title"]]),f=new Map([["Printing","print"],["HighQualityPrinting","print-hq"],["ModifyingContents","edit"],["Commenting","annotate"],["FillingForms","form"],["DocumentAssembly","assemble"],["Accessibility","accessibility"],["CopyingContents","copy"]]);p.forEach((g,m)=>n[m]=e.getMetaData(g)),f.forEach((g,m)=>i[m]=e.hasPermission(g));let c={Direction:"L2R"},D=e.getTrailer().get("Root","Root","ViewerPreferences","Direction");return D.isName()&&(c.Direction=D.getName()),{...n,ViewerPreferences:c,PageCount:e.countPages(),Version:o,Security:i,FileName:t,FileSize:r}},loadPageText:(s,e)=>{let r=T.get(e??L).document.loadPage(s),n=r.toStructuredText(["preserve-ligatures","preserve-whitespace","preserve-spans","preserve-images"].join(",")),i=z(r),{width:a,height:u,originalLowerRightY:o}=Q(r,i),p=(P,F)=>{let l=[];for(let d=0;d<P.length;d+=2){let y=P[d],C=P[d+1],R,S;F===90?(R=C,S=u-y):F===180?(R=a-y,S=u-C):F===270?(R=a-C,S=y):(R=y,S=C),l.push(R,S)}return l},f=[],c={text:""},D=[],g,m=()=>{let P=/^\s*$/,F=P.test(c.text)?[]:[...D],l=P.test(c.text)?"":c.text;f.push({...c,rect:F,text:l})};return n.walk({beginLine:(P,F,l)=>{c.isVertical=F===1;let d=Math.atan2(l[1],l[0])*180/Math.PI;d<0&&(d=360+d);let y=Math.abs(i-d);c.rotate=i===d?0:y},onChar:(P,F,l,d,y)=>{let C=[...y],[R,S,x,O,I,G,J,K]=p(C,i),_={left:Math.floor(Math.min(R,x,I,J)),bottom:Math.floor(o-Math.max(S,O,G,K)),right:Math.floor(Math.max(R,x,I,J)),top:Math.floor(o-Math.min(S,O,G,K))};Math.abs(g-_.bottom)>d&&(m(),c.text="",D.length=0),c.text=`${c.text}${P.charCodeAt(0)===65533?" ":P}`,D.push(_),g=_.bottom}}),m(),f},loadPdfLayout:s=>{let e=T.get(s??L).document,t=e.countPages(),r=[];for(let n=0;n<t;n++){let i=e.loadPage(n),a=z(i),{width:u,height:o,originalUpperLeftX:p,originalUpperLeftY:f}=Q(i,a);r.push({bbox:{x:h(p,2),y:h(f,2),w:h(u,2),h:h(o,2)},i:n,r:a,originalR:a,annot:!!(i.getAnnotations().length||i.getWidgets().length),originalIndex:n,ref:n})}return r},authenticatePassword:(s,e)=>T.get(e??L).document.authenticatePassword(s??""),getPrintBlobURL:(s,e,t,r)=>{let n,i;try{n=T.get(r??L).document.loadPage(s);let[a,u,o,p]=n.getBounds(),f=Math.abs(o-a),D=f/72*t,g=Math.round(D/f);i=n.toPixmap(b.Matrix.scale(g,g),b.ColorSpace.DeviceRGB,!1,e,"Print");let m=new Blob([i.asPNG()],{type:"image/png"});return URL.createObjectURL(m)}catch(a){throw a}finally{n?.destroy(),i?.destroy()}},getAnnotations:(s,e)=>{let r=T.get(e??L).document.loadPage(s),[n,i,a,u]=r.getBounds(),o=u-i,p=r.getAnnotations(),f=r.getWidgets(),c=r.getObject().get("Annots"),D=[];c.isArray()&&c.forEach(m=>{m.get("Subtype").getName()==="Link"&&D.push(m)});let g=[];return g.push(...p.map(m=>{try{let P=m.getObject(),F={attributes:{pageIdx:s,...$(m,o)},oid:P.asIndirect(),type:m.getType(),visible:!0},l=P.get("IT");l.isName()&&(F.IT=l.getName());let d=P.get("Popup");if(d.isIndirect()){F.Popup=d.asIndirect();let[C,R,S,x]=m.getPopup();g.push({attributes:{...et(d),pageIndex:s,rect:{left:h(C),top:h(o-R),right:h(S),bottom:h(o-x)}},oid:F.Popup,type:d.get("Subtype").getName()??"Popup",visible:!0})}let y=P.get("IRT");return y.isIndirect()&&(F.IRT=y.asIndirect()),F}catch(P){return console.error(P),null}}).concat(D.map(m=>{try{return{attributes:{pageIdx:s,...rt(m)},oid:m.asIndirect(),type:m.get("Subtype").getName()??"Link",visible:!0}}catch(P){return console.error(P),null}})).concat(f.map(m=>{try{return{attributes:{pageIdx:s,...st(m,o)},oid:m.getObject().asIndirect(),type:m.getType()??"Widget",visible:!0}}catch(P){return console.error(P),null}})).filter(m=>m!==null)),g},getAcroForm:s=>{let t=T.get(s??L).document.getTrailer().get("Root","AcroForm");if(t.isNull())return{fields:{},props:{CO:[]}};let r=t.get("Fields"),n={};r.forEach(u=>{let o={};o.oid=u.asIndirect();let p=u.get("FT");p.isName()&&(o.FT=p.getName());let f=u.get("Ff");f.isNumber()&&(o.Ff=f.getNumber(),o.FT==="Btn"?A(o.Ff,16)?o.FT="Rb":A(o.Ff,17)||(o.FT="Cb"):o.FT==="Ch"&&(A(o.Ff,18)?o.FT="Cx":o.FT="Lx"));let c=u.get("T");c.isString()&&(o.T=c.getString());let D=u.get("V");D.isNull()||(o.V=D.asJS());let g=u.get("AA");g.isDictionary()&&(o.AA=g.asJS());let m=u.get("Kids");m.isArray()&&(o.Kids=[],m.forEach((l,d)=>{o.Kids.push({i:d,oid:l.asIndirect()})}));let P=u.get("I");P.isArray()&&(o.I=P.asJS());let F=u.get("Opt");F.isArray()&&(o.Opt=F.asJS()),n[o.oid]=o});let i=[],a=t.get("CO");return a.isArray()&&a.forEach(u=>{i.push({oid:u.asIndirect()})}),{fields:n,props:{CO:i}}},applyAnnotChanges:(s,e)=>{let t=T.get(e??L).document,r=new E(t);s.forEach(n=>{let i=t.loadPage(n.pageIndex);if(!i){console.error("Cannot find a page with annotations to apply the changes.");return}let a=[...i.getAnnotations(),...i.getWidgets()];n.annots.forEach(u=>{switch(u.action){case"create":r.apply(i.createAnnotation(u.subType),u);return;case"modify":case"remove":let o=u.NM;if(!o){console.error("The NM field of the annotation does not exist.");return}let p=a.find(f=>{let c=f.getObject().get("NM");return c.isString()?c.getString()===o:!1});if(!p){console.error(`No annotation for NM (${o})`);return}switch(u.action){case"modify":r.apply(p,u);return;case"remove":i.deleteAnnotation(p);return}}})})},applyAcroFieldChanges:(s,e)=>{let t=T.get(e??L).document,r=t.getTrailer().get("Root","AcroForm","Fields"),n=t.countPages(),i=new Map,a=new j(i);for(let u=0;u<n;u++)t.loadPage(u).getWidgets().forEach(p=>{let f=p.getObject().get("Parent");if(f.isNull())return;let c=f.asIndirect();if(i.has(c)){i.get(c).push(p);return}i.set(c,[p])});s.forEach(u=>{switch(u.action){case"create":case"remove":break;case"modify":let o=(()=>{let p=[];r.forEach(c=>p.push(c));let f=p.findIndex(c=>c.asIndirect()===u.oid);return f>-1?r.get(f):null})();if(o===null){console.error("AcroField could not be found.",u);return}a.applyAcroField(o,u);break}})},applyRedaction:(s,e)=>{let t=T.get(e??L).document,r=new E(t),n=(i,a)=>{let u=a.getObject().get("Rect");if(u.isNull())return;let o=c=>{let[D,g,m,P]=c;return{left:Math.min(D,m),top:Math.min(g,P),right:Math.max(D,m),bottom:Math.max(g,P)}},p=o(u.asJS());[...i.getAnnotations().filter(c=>c.getObject().get("Subtype").getName()!=="Redact"),...i.getWidgets()].forEach(c=>{let g=c.getObject().get("Rect");if(g.isNull())return;let m=o(g.asJS());m.right<p.left||m.left>p.right||m.top>p.bottom||m.bottom<p.top||i.deleteAnnotation(c)})};s.forEach(i=>{let a=t.loadPage(i.pageIdx),u=a.getAnnotations().filter(o=>o.getType()==="Redact");i.redactions.forEach(o=>{let p=u.find(f=>{let c=f.getObject().get("NM");return c.isString()&&c.getString()===o.NM});p||(p=a.createAnnotation("Redact"),r.apply(p,o)),n(a,p),p.applyRedaction(1,b.PDFPage.REDACT_IMAGE_PIXELS,b.PDFPage.REDACT_LINE_ART_REMOVE_IF_COVERED,b.PDFPage.REDACT_TEXT_REMOVE)})})},getStampTemplateImages:s=>{let t=T.get(s??L).document.loadPage(0),r=t.createAnnotation("Stamp"),n=[];return["Approved","AsIs","Confidential","Departmental","Draft","Experimental","Expired","Final","ForComment","ForPublicRelease","NotApproved","NotForPublicRelease","Sold","TopSecret"].forEach(a=>{r.setIcon(a),r.update();let u=W(r);n.push({name:a,data:`data:${u.type}/${u.format};base64, ${u.data}`})}),t.deleteAnnotation(r),n}};postMessage(["INIT",0,Object.keys(Z)]);