1const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/vendor-pdflib-BC_rCeQu.js","assets/vendor-react-C_xdI0Ng.js","assets/vendor-excel--wYEJF5V.js"])))=>i.map(i=>d[i]); 2import{_ as k}from"./index-BLFiW9lJ.js";import{f as Ft}from"./fontkit.es-MhQaB983.js";import"./vendor-react-C_xdI0Ng.js";import"./vendor-pdflib-BC_rCeQu.js";const xt={width:595.28,height:841.89},Mt={width:841.89,height:595.28},_t=9,Et=9,W=12,Ct=8,K=12,At=4,Tt=3,S=20,Q=20,kt=20,tt={r:.96,g:.96,b:.96},et={r:.85,g:.85,b:.85},p={r:.1,g:.1,b:.1};function Nt(t){return t.length>=4&&t[0]===80&&t[1]===75}function $t(t){return t.length>=8&&t[0]===208&&t[1]===207&&t[2]===17&&t[3]===224&&t[4]===161&&t[5]===177&&t[6]===26&&t[7]===225}function Ut(t){return Nt(t)||$t(t)}function St(t){if(t==null)return null;if(typeof t=="number"||typeof t=="string")return t;if(t instanceof Date)return t.toISOString();if(typeof t=="boolean")return t?"TRUE":"FALSE";if(typeof t=="object"){if("result"in t)return St(t.result);if("text"in t&&typeof t.text=="string")return t.text;if("richText"in t&&Array.isArray(t.richText))return t.richText.map(n=>n.text??"").join("")}return String(t)}function nt(t){return t==null?"":String(t).trim()}function rt(t){const n=t.reduce((r,e)=>Math.max(r,e.length),0);return n===0?[]:t.map(r=>r.length===n?r:[...r,...Array.from({length:n-r.length},()=>null)])}function Rt(t){let n=0;for(let r=0;r<t.length;r+=1)n=n*26+(t.charCodeAt(r)-64);return n-1}function Wt(t){const n=new Set;if(!Array.isArray(t))return n;for(const r of t){if(typeof r!="string")continue;const[e,a=e]=r.split(":"),o=e.match(/^([A-Z]+)/i),i=a.match(/^([A-Z]+)/i);if(!o||!i)continue;const s=Rt(o[1].toUpperCase()),c=Rt(i[1].toUpperCase());for(let l=Math.min(s,c);l<=Math.max(s,c);l+=1)n.add(l)}return n}function zt(t,n=new Set){var o;const r=rt(t),e=((o=r[0])==null?void 0:o.length)??0,a=[];for(let i=0;i<e;i+=1){if(n.has(i)){a.push(i);continue}let s=!1;for(let c=0;c<r.length;c+=1)if(nt(r[c][i])!==""){s=!0;break}s&&a.push(i)}return a}function Vt(t,n=new Set){const r=rt(t);if(r.length===0)return[];const e=zt(r,n);return e.length===0?r.map(()=>[]):r.map(a=>e.map(o=>a[o]??null))}function vt(t){const n=nt(t);if(!n)return 42;const r=n.split(/\r?\n/).reduce((e,a)=>Math.max(e,a.length),0);return Math.min(260,Math.max(42,16+r*5.6))}function Gt(t){var a;const n=rt(t),r=((a=n[0])==null?void 0:a.length)??0,e=Array.from({length:r},()=>42);for(const o of n)for(let i=0;i<r;i+=1)e[i]=Math.max(e[i],vt(o[i]??null));return e}function ot(t){return t.reduce((n,r)=>n+r,0)}function Zt(t,n){return n<=t?"portrait":"landscape"}function jt(t,n,r=1){if(t.length===0)return[];if(ot(t)<=n)return[t.map((c,l)=>l)];const e=Math.max(0,Math.min(r,Math.max(0,t.length-1))),a=Array.from({length:e},(c,l)=>l),o=Array.from({length:t.length-e},(c,l)=>l+e),i=[];let s=0;for(;s<o.length;){const c=[...a];let l=a.reduce((d,h)=>d+t[h],0);for(;s<o.length;){const d=o[s],h=t[d];if(c.length>a.length&&l+h>n)break;if(c.length===a.length&&l+h>n){c.push(d),s+=1;break}c.push(d),l+=h,s+=1}c.length===a.length&&s<o.length&&(c.push(o[s]),s+=1),i.push(c)}return i.length>0?i:[t.map((c,l)=>l)]}function Xt(t,n){const r=ot(t);if(r<=n||r===0)return t;const e=n/r;return t.map(a=>Math.max(18,a*e))}function Ht(t,n){return t.map(r=>n.map(e=>r[e]??null))}function O(t){return new RegExp("\\p{Script=Cyrillic}","u").test(t)}function Yt(t){const n=t.match(/\S+\s*|\s+/g);return n&&n.length>0?n:[t]}function qt(t,n,r,e){const a=[];let o="";for(const i of t){const s=o+i;o.length>0&&V(n,s,r)>e?(a.push(o),o=i):o=s}return o.length>0&&a.push(o),a.length>0?a:[t]}function Jt(t,n,r,e){const a=t.replace(/\r\n/g,` 3`).split(` 4`),o=[];for(const i of a){const s=i.trim();if(!s){o.push("");continue}const c=Yt(s);let l="";for(const d of c){const h=l+d;if(l&&V(n,h,r)>e){if(o.push(l.trimEnd()),l=d.trimStart(),V(n,l,r)>e){const y=qt(l,n,r,e);o.push(...y.slice(0,-1)),l=y[y.length-1]??""}}else l=h}l.trim().length>0&&o.push(l.trimEnd())}return o.length>0?o:[""]}function V(t,n,r){try{return t.widthOfTextAtSize(n,r)}catch{return t.widthOfTextAtSize(Ot(n),r)}}function Kt(t){if(!t)return[];const n=[];let r="",e=O(t[0]??"");for(const a of t){const o=O(a);if(r.length>0&&o!==e){n.push({text:r,isCyrillic:e}),r=a,e=o;continue}r+=a}return r.length>0&&n.push({text:r,isCyrillic:e}),n}function It(t,n,r,e,a,o,i,s,c){let l=r;const d=Kt(n);for(const h of d){const y=h.isCyrillic?i:o;let b=h.text;
4try{t.drawText(b,{x:l,y:e,font:y,size:a,color:c(s.r,s.g,s.b)})}catch{b=Ot(b),t.drawText(b,{x:l,y:e,font:o,size:a,color:c(s.r,s.g,s.b)})}const B=h.isCyrillic?i:o;l+=V(B,b,a)}}function Qt(t){if(typeof t!="string"||t.trim()==="")return()=>!0;const n=t.split(",").map(e=>e.trim()).filter(Boolean);if(n.length===0)return()=>!0;const r=[];for(const e of n){const a=/^(\d+)-(\d+)$/.exec(e);if(a){const i=Number(a[1]),s=Number(a[2]);if(!Number.isInteger(i)||!Number.isInteger(s)||i<1||s<i)throw new Error(`Invalid page range: "${e}"`);r.push({start:i,end:s});continue}if(!/^\d+$/.test(e))throw new Error(`Invalid page token: "${e}"`);const o=Number(e);if(!Number.isInteger(o)||o<1)throw new Error(`Invalid page number: "${e}"`);r.push({start:o,end:o})}return e=>r.some(a=>e>=a.start&&e<=a.end)}async function z(t){if(t.startsWith("data:")){const e=/^data:[^;]+;base64,(.+)$/i.exec(t);if(!e)throw new Error("Unsupported data URL font payload");if(typeof atob!="function")throw new Error("Base64 decoder is unavailable in current runtime");const a=atob(e[1]),o=new Uint8Array(a.length);for(let i=0;i<a.length;i+=1)o[i]=a.charCodeAt(i);return o}let n=t;if(typeof self<"u"&&self.location&&!t.startsWith("http://")&&!t.startsWith("https://")&&!t.startsWith("blob:")&&!t.startsWith("data:")){const e=self.location.protocol==="blob:"?self.location.origin:self.location.href;n=new URL(t,e).href}const r=await fetch(n);if(!r.ok)throw new Error(`Failed to load font: ${r.status} ${n}`);return new Uint8Array(await r.arrayBuffer())}async function te(){try{const[t,n]=await Promise.all([k(()=>import("./noto-sans-latin-400-normal-BNj4ZgH_.js"),[]),k(()=>import("./noto-sans-cyrillic-400-normal-BPX53kJn.js"),[])]);return{latinBytes:await z(t.default),cyrillicBytes:await z(n.default)}}catch{}try{const[t,n]=await Promise.all([k(()=>import("./noto-sans-latin-400-normal-DZbyGt1h.js"),[]),k(()=>import("./noto-sans-cyrillic-400-normal-C2Ud1djk.js"),[])]);return{latinBytes:await z(t.default),cyrillicBytes:await z(n.default)}}catch{return null}}async function ee(t,n){const{PDFDocument:r}=await k(async()=>{const{PDFDocument:c}=await import("./vendor-pdflib-BC_rCeQu.js").then(l=>l.c);return{PDFDocument:c}},__vite__mapDeps([0,1])),e=await r.load(await t.arrayBuffer()),a=[];for(let c=0;c<e.getPageCount();c+=1)n(c+1)&&a.push(c);if(a.length===0)throw new Error("No pages matched selected range");const o=await r.create(),i=await o.copyPages(e,a);for(const c of i)o.addPage(c);const s=new Uint8Array(await o.save());return new Blob([s],{type:"application/pdf"})}function Ot(t){return t.replace(/[^\x20-\x7E]/g,"?")}const se=async({inputIds:t,fs:n,emitProgress:r,options:e})=>{var B,at;if(t.length===0)throw new Error("Excel to PDF requires at least one input file");const o=(B=(await k(()=>import("./vendor-excel--wYEJF5V.js").then(g=>g.e),__vite__mapDeps([2,1]))).default)==null?void 0:B.Workbook;if(!o)throw new Error("Excel parser is unavailable: Workbook constructor not found");const{PDFDocument:i,StandardFonts:s,rgb:c}=await k(async()=>{const{PDFDocument:g,StandardFonts:it,rgb:L}=await import("./vendor-pdflib-BC_rCeQu.js").then(v=>v.c);return{PDFDocument:g,StandardFonts:it,rgb:L}},__vite__mapDeps([0,1])),l=[],d=(e==null?void 0:e.range)==="active-sheet"?"active-sheet":"workbook",h=(e==null?void 0:e.showGrid)!==!1,y=(e==null?void 0:e.autoOrientation)===!1&&(e==null?void 0:e.orientation)==="portrait"?"portrait":(e==null?void 0:e.autoOrientation)===!1&&(e==null?void 0:e.orientation)==="landscape"?"landscape":null,b=Qt(e==null?void 0:e.pageSelection);for(let g=0;g<t.length;g+=1){const L=await(await n.read(t[g])).getBlob().then(f=>f.arrayBuffer()),v=new Uint8Array(L);if(!Ut(v))throw new Error(`Failed to parse Excel file ${t[g]}: unsupported container format`);const P=new o;if(await P.xlsx.load(L),P.worksheets.length===0)throw new Error(`Failed to parse Excel file ${t[g]}: no sheets found`);const x=await i.create();let _=await x.embedFont(s.Helvetica),D=_,G=!1;try{x.registerFontkit(Ft);const f=await te();if(!f)throw new Error("Noto font payload unavailable");const{latinBytes:F,cyrillicBytes:j}=f;_=await x.embedFont(F,{subset:!0}),D=await x.embedFont(j,{subset:!0}),G=!0}catch{}const ct=d==="active-sheet"?P.worksheets.slice(0,1):P.worksheets,Bt=Array.isArray(e==null?void 0:e.selectedSheets)?e.selectedSheets.filter(f=>typeof f=="string"&&f.trim().length>0):[],st=new Set(Bt.map(f=>f.trim())),lt=st.size>0?ct.filter(f=>st.has(f.name)):ct;if(lt.some(f=>
4O(f.name))&&!G)throw new Error("Cyrillic font is unavailable in this runtime. Cannot render sheet names without replacing text.");let ft=0;for(const f of lt){const F=[];f.eachRow({includeEmpty:!0},C=>{const N=Array.isArray(C.values)?C.values.slice(1):[];F.push(N.map($=>St($)))});const j=Wt((at=f.model)==null?void 0:at.merges),R=Vt(F,j);if(R.length===0||R[0]&&R[0].length===0)continue;const X=Gt(R),Dt=xt.width-S*2,E=(y??Zt(Dt,ot(X)))==="portrait"?xt:Mt,ut=E.width-S*2,M=jt(X,ut,R[0].length>1?1:0);for(let C=0;C<M.length;C+=1){const N=M[C],$=Ht(R,N),ht=$[0]??[],dt=$.slice(1),gt=Xt(N.map(I=>X[I]),ut);let H=0;const mt=I=>{ft+=1;const m=x.addPage([E.width,E.height]),w=M.length>1?` (${C+1}/${M.length})`:"",wt=`Sheet: ${f.name}${w}`;return It(m,wt,S,E.height-Q-W,W,_,D,p,c),I||m.drawText("(continued)",{x:E.width-S-60,y:E.height-Q-W,font:_,size:Ct,color:c(p.r,p.g,p.b)}),m.drawText(`Page ${ft}`,{x:S,y:kt-4,font:_,size:Ct,color:c(p.r,p.g,p.b)}),{page:m,y:E.height-Q-W-14,bodyBottom:kt+10}};let A=mt(!0);const Y=(I,m)=>{const w=I.map(u=>{const T=nt(u),J=O(T)?D:_;return{text:T,font:J,lines:[]}});for(let u=0;u<w.length;u+=1){const T=Math.max(8,gt[u]-At*2);w[u].lines=Jt(w[u].text,w[u].font,m?Et:_t,T)}const U=Math.max(1,...w.map(u=>u.lines.length))*K+Tt*2;A.y-U<A.bodyBottom&&!m&&(A=mt(!1),Y(ht,!0));let q=S;const pt=A.y;for(let u=0;u<I.length;u+=1){const T=gt[u];h&&A.page.drawRectangle({x:q,y:pt-U,width:T,height:U,borderWidth:.5,borderColor:c(et.r,et.g,et.b),color:m?c(tt.r,tt.g,tt.b):void 0,opacity:1});const J=w[u].lines;let yt=pt-Tt-K+2;
4for(const bt of J){if(O(bt)&&!G)throw new Error("Cyrillic font is unavailable in this runtime. Cannot render table text without replacement.");It(A.page,bt,q+At,yt,m?Et:_t,_,D,p,c),yt-=K}q+=T}A.y-=U};for(Y(ht,!0);H<dt.length;)Y(dt[H],!1),H+=1}}if(x.getPageCount()===0)throw new Error(`Failed to parse Excel file ${t[g]}: no renderable sheet data found`);const Lt=new Uint8Array(await x.save());let Z=new Blob([Lt],{type:"application/pdf"});typeof(e==null?void 0:e.pageSelection)=="string"&&e.pageSelection.trim()!==""&&(Z=await ee(Z,b));const Pt=await n.write(Z);l.push(Pt.id),r==null||r(Math.round((g+1)/t.length*100))}return{outputIds:l}};export{zt as findNonEmptyColumnIndexes,Qt as parsePageSelection,se as run,jt as splitIntoColumnBands,Vt as stripEmptyColumns};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.