@f-o-t/pdf 0.3.10 → 0.4.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/README.md +11 -0
- package/dist/{index-18zt1kda.js → index-3qa5wvjk.js} +9 -13
- package/dist/{index-18zt1kda.js.map → index-3qa5wvjk.js.map} +3 -3
- package/dist/index-w5nfn63z.js +993 -0
- package/dist/index-w5nfn63z.js.map +13 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -2
- package/dist/index.js.map +1 -1
- package/dist/plugins/editing/document.d.ts.map +1 -1
- package/dist/plugins/editing/index.d.ts +7 -0
- package/dist/plugins/editing/index.d.ts.map +1 -1
- package/dist/plugins/editing/index.js +10 -911
- package/dist/plugins/editing/index.js.map +3 -7
- package/dist/plugins/editing/page.d.ts.map +1 -1
- package/dist/plugins/editing/parser.d.ts +14 -3
- package/dist/plugins/editing/parser.d.ts.map +1 -1
- package/dist/plugins/parsing/index.js +1 -1
- package/dist/plugins/parsing/reader.d.ts +4 -2
- package/dist/plugins/parsing/reader.d.ts.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -32,6 +32,17 @@ import { createLexer, createParser, createReader } from "@f-o-t/pdf/plugins/pars
|
|
|
32
32
|
|
|
33
33
|
Load existing PDFs, modify them, and save with incremental updates. Also supports creating signature placeholders for digital signing workflows.
|
|
34
34
|
|
|
35
|
+
#### `countPdfPages(data: Uint8Array): number`
|
|
36
|
+
|
|
37
|
+
Count the number of pages in a PDF without fully loading it for editing.
|
|
38
|
+
|
|
39
|
+
```ts
|
|
40
|
+
import { countPdfPages } from "@f-o-t/pdf";
|
|
41
|
+
// or: import { countPdfPages } from "@f-o-t/pdf/plugins/editing";
|
|
42
|
+
|
|
43
|
+
const pages = countPdfPages(pdfBytes);
|
|
44
|
+
```
|
|
45
|
+
|
|
35
46
|
#### `loadPdf(data: Uint8Array): PdfDocument`
|
|
36
47
|
|
|
37
48
|
Load an existing PDF for editing. Returns a `PdfDocument` that can be modified and saved.
|
|
@@ -451,17 +451,16 @@ class PDFReader {
|
|
|
451
451
|
};
|
|
452
452
|
}
|
|
453
453
|
findStartXRef() {
|
|
454
|
-
const
|
|
455
|
-
const
|
|
456
|
-
const match =
|
|
454
|
+
const tailSize = Math.min(256, this.data.length);
|
|
455
|
+
const tail = new TextDecoder().decode(this.data.subarray(this.data.length - tailSize));
|
|
456
|
+
const match = tail.match(/startxref\s+(\d+)/);
|
|
457
457
|
if (!match) {
|
|
458
458
|
throw new PDFParseError("Could not find startxref");
|
|
459
459
|
}
|
|
460
460
|
return parseInt(match[1], 10);
|
|
461
461
|
}
|
|
462
462
|
parseXRefTable(offset) {
|
|
463
|
-
const
|
|
464
|
-
const content = decoder.decode(this.data.slice(offset));
|
|
463
|
+
const content = new TextDecoder().decode(this.data.subarray(offset));
|
|
465
464
|
const lines = content.split(`
|
|
466
465
|
`);
|
|
467
466
|
const xref = new Map;
|
|
@@ -490,8 +489,7 @@ class PDFReader {
|
|
|
490
489
|
return xref;
|
|
491
490
|
}
|
|
492
491
|
parseTrailer(xrefOffset) {
|
|
493
|
-
const
|
|
494
|
-
const content = decoder.decode(this.data.slice(xrefOffset));
|
|
492
|
+
const content = new TextDecoder().decode(this.data.subarray(xrefOffset));
|
|
495
493
|
const trailerMatch = content.match(/trailer\s*<<[\s\S]*?>>/);
|
|
496
494
|
if (!trailerMatch) {
|
|
497
495
|
throw new PDFParseError("Could not find trailer");
|
|
@@ -502,7 +500,7 @@ class PDFReader {
|
|
|
502
500
|
readObjects(xrefTable) {
|
|
503
501
|
for (const [objectNum, offset] of xrefTable) {
|
|
504
502
|
try {
|
|
505
|
-
const objData = this.data.
|
|
503
|
+
const objData = this.data.subarray(offset);
|
|
506
504
|
const parser = new PDFParser(objData);
|
|
507
505
|
const obj = parser.parseIndirectObject();
|
|
508
506
|
this.objects.set(objectNum, obj.value);
|
|
@@ -510,8 +508,7 @@ class PDFReader {
|
|
|
510
508
|
}
|
|
511
509
|
}
|
|
512
510
|
parseVersion() {
|
|
513
|
-
const
|
|
514
|
-
const header = decoder.decode(this.data.slice(0, 20));
|
|
511
|
+
const header = new TextDecoder().decode(this.data.subarray(0, 20));
|
|
515
512
|
const match = header.match(/%PDF-(\d+\.\d+)/);
|
|
516
513
|
return match ? match[1] : "1.7";
|
|
517
514
|
}
|
|
@@ -556,8 +553,7 @@ class PDFReader {
|
|
|
556
553
|
const stream = this.objects.get(ref.objectNumber);
|
|
557
554
|
if (!stream || !stream.data)
|
|
558
555
|
return "";
|
|
559
|
-
const
|
|
560
|
-
const content = decoder.decode(stream.data);
|
|
556
|
+
const content = new TextDecoder().decode(stream.data);
|
|
561
557
|
const texts = [];
|
|
562
558
|
const tjRegex = /\(([^)]*)\)\s*Tj/g;
|
|
563
559
|
let match;
|
|
@@ -586,4 +582,4 @@ class PDFReader {
|
|
|
586
582
|
}
|
|
587
583
|
export { PDFError, PDFParseError, PDFGenerationError, InvalidPDFObjectError, FontNotFoundError, InvalidImageError, PDFSignatureError, PDFEncryptionError, NotImplementedError, TokenType, PDFLexer, PDFParser, PDFReader };
|
|
588
584
|
|
|
589
|
-
//# debugId=
|
|
585
|
+
//# debugId=97FAF14114124ACE64756E2164756E21
|
|
@@ -5,9 +5,9 @@
|
|
|
5
5
|
"/**\n * PDF token types\n */\nexport enum TokenType {\n // Primitives\n NUMBER = \"NUMBER\",\n STRING = \"STRING\",\n NAME = \"NAME\",\n BOOLEAN = \"BOOLEAN\",\n NULL = \"NULL\",\n\n // Delimiters\n ARRAY_START = \"ARRAY_START\", // [\n ARRAY_END = \"ARRAY_END\", // ]\n DICT_START = \"DICT_START\", // <<\n DICT_END = \"DICT_END\", // >>\n\n // Keywords\n OBJ = \"OBJ\", // obj\n ENDOBJ = \"ENDOBJ\", // endobj\n STREAM = \"STREAM\", // stream\n ENDSTREAM = \"ENDSTREAM\", // endstream\n XREF = \"XREF\", // xref\n TRAILER = \"TRAILER\", // trailer\n STARTXREF = \"STARTXREF\", // startxref\n R = \"R\", // R (reference)\n\n // Special\n EOF = \"EOF\",\n}\n\n/**\n * PDF token\n */\nexport interface Token {\n type: TokenType;\n value: any;\n position: number;\n}\n\n/**\n * PDF Lexer\n */\nexport class PDFLexer {\n private data: Uint8Array;\n private position: number = 0;\n\n constructor(data: Uint8Array) {\n this.data = data;\n }\n\n /**\n * Get next token\n */\n nextToken(): Token {\n this.skipWhitespace();\n\n if (this.position >= this.data.length) {\n return { type: TokenType.EOF, value: null, position: this.position };\n }\n\n const char = String.fromCharCode(this.data[this.position]!);\n\n // Delimiters\n if (char === \"[\") {\n this.position++;\n return { type: TokenType.ARRAY_START, value: \"[\", position: this.position - 1 };\n }\n if (char === \"]\") {\n this.position++;\n return { type: TokenType.ARRAY_END, value: \"]\", position: this.position - 1 };\n }\n if (char === \"<\" && this.peek() === \"<\") {\n this.position += 2;\n return { type: TokenType.DICT_START, value: \"<<\", position: this.position - 2 };\n }\n if (char === \">\" && this.peek() === \">\") {\n this.position += 2;\n return { type: TokenType.DICT_END, value: \">>\", position: this.position - 2 };\n }\n\n // Name (starts with /)\n if (char === \"/\") {\n return this.readName();\n }\n\n // String (starts with ()\n if (char === \"(\") {\n return this.readString();\n }\n\n // Number or keyword\n if (char === \"-\" || char === \"+\" || char === \".\" || (char >= \"0\" && char <= \"9\")) {\n return this.readNumber();\n }\n\n // Keyword or boolean\n return this.readKeyword();\n }\n\n /**\n * Peek at next character without consuming\n */\n private peek(): string {\n if (this.position + 1 >= this.data.length) return \"\";\n return String.fromCharCode(this.data[this.position + 1]!);\n }\n\n /**\n * Skip whitespace and comments\n */\n private skipWhitespace(): void {\n while (this.position < this.data.length) {\n const char = this.data[this.position]!;\n\n // Whitespace\n if (char === 0x20 || char === 0x09 || char === 0x0A || char === 0x0D || char === 0x00) {\n this.position++;\n continue;\n }\n\n // Comment (starts with %)\n if (char === 0x25) {\n while (this.position < this.data.length && this.data[this.position]! !== 0x0A && this.data[this.position]! !== 0x0D) {\n this.position++;\n }\n continue;\n }\n\n break;\n }\n }\n\n /**\n * Read a name token\n */\n private readName(): Token {\n const start = this.position;\n this.position++; // Skip /\n\n let value = \"\";\n while (this.position < this.data.length) {\n const char = String.fromCharCode(this.data[this.position]!);\n if (this.isDelimiter(char) || this.isWhitespace(this.data[this.position]!)) {\n break;\n }\n value += char;\n this.position++;\n }\n\n return { type: TokenType.NAME, value, position: start };\n }\n\n /**\n * Read a string token\n */\n private readString(): Token {\n const start = this.position;\n this.position++; // Skip (\n\n let value = \"\";\n let depth = 1;\n\n while (this.position < this.data.length && depth > 0) {\n const char = String.fromCharCode(this.data[this.position]!);\n\n if (char === \"\\\\\") {\n // Escape sequence\n this.position++;\n if (this.position < this.data.length) {\n const escaped = String.fromCharCode(this.data[this.position]!);\n value += escaped === \"n\" ? \"\\n\" : escaped === \"r\" ? \"\\r\" : escaped === \"t\" ? \"\\t\" : escaped;\n }\n } else if (char === \"(\") {\n depth++;\n value += char;\n } else if (char === \")\") {\n depth--;\n if (depth > 0) value += char;\n } else {\n value += char;\n }\n\n this.position++;\n }\n\n return { type: TokenType.STRING, value, position: start };\n }\n\n /**\n * Read a number token\n */\n private readNumber(): Token {\n const start = this.position;\n let value = \"\";\n\n while (this.position < this.data.length) {\n const char = String.fromCharCode(this.data[this.position]!);\n if (char === \"-\" || char === \"+\" || char === \".\" || (char >= \"0\" && char <= \"9\")) {\n value += char;\n this.position++;\n } else {\n break;\n }\n }\n\n return { type: TokenType.NUMBER, value: value.includes(\".\") ? parseFloat(value) : parseInt(value, 10), position: start };\n }\n\n /**\n * Read a keyword token\n */\n private readKeyword(): Token {\n const start = this.position;\n let value = \"\";\n\n while (this.position < this.data.length) {\n const char = String.fromCharCode(this.data[this.position]!);\n if (this.isDelimiter(char) || this.isWhitespace(this.data[this.position]!)) {\n break;\n }\n value += char;\n this.position++;\n }\n\n // Check for keywords\n const upper = value.toUpperCase();\n if (upper === \"OBJ\") return { type: TokenType.OBJ, value, position: start };\n if (upper === \"ENDOBJ\") return { type: TokenType.ENDOBJ, value, position: start };\n if (upper === \"STREAM\") return { type: TokenType.STREAM, value, position: start };\n if (upper === \"ENDSTREAM\") return { type: TokenType.ENDSTREAM, value, position: start };\n if (upper === \"XREF\") return { type: TokenType.XREF, value, position: start };\n if (upper === \"TRAILER\") return { type: TokenType.TRAILER, value, position: start };\n if (upper === \"STARTXREF\") return { type: TokenType.STARTXREF, value, position: start };\n if (upper === \"R\") return { type: TokenType.R, value, position: start };\n if (upper === \"TRUE\") return { type: TokenType.BOOLEAN, value: true, position: start };\n if (upper === \"FALSE\") return { type: TokenType.BOOLEAN, value: false, position: start };\n if (upper === \"NULL\") return { type: TokenType.NULL, value: null, position: start };\n\n // Unknown keyword - treat as name without /\n return { type: TokenType.NAME, value, position: start };\n }\n\n /**\n * Check if character is delimiter\n */\n private isDelimiter(char: string): boolean {\n return [\"(\", \")\", \"<\", \">\", \"[\", \"]\", \"{\", \"}\", \"/\", \"%\"].includes(char);\n }\n\n /**\n * Check if byte is whitespace\n */\n private isWhitespace(byte: number): boolean {\n return byte === 0x20 || byte === 0x09 || byte === 0x0A || byte === 0x0D || byte === 0x00;\n }\n}\n",
|
|
6
6
|
"// @ts-nocheck\nimport { PDFLexer, TokenType, type Token } from \"./lexer.ts\";\nimport type { PDFValue, PDFDictionary, PDFArray, PDFRef, PDFStream } from \"../../types.ts\";\nimport { createDictionary, createArray, createRef, createName, createStream } from \"../../core/objects.ts\";\n\n/**\n * PDF Parser\n */\nexport class PDFParser {\n private lexer: PDFLexer;\n private currentToken: Token;\n private nextToken: Token | null = null;\n private data: Uint8Array;\n\n constructor(data: Uint8Array) {\n this.data = data;\n this.lexer = new PDFLexer(data);\n this.currentToken = this.lexer.nextToken();\n }\n\n /**\n * Parse a PDF value\n */\n parseValue(): PDFValue {\n switch (this.currentToken.type) {\n case TokenType.NUMBER:\n return this.parseNumberOrRef();\n case TokenType.STRING:\n return this.parseString();\n case TokenType.NAME:\n return this.parseName();\n case TokenType.BOOLEAN:\n return this.parseBoolean();\n case TokenType.NULL:\n return this.parseNull();\n case TokenType.ARRAY_START:\n return this.parseArray();\n case TokenType.DICT_START:\n return this.parseDictionary();\n default:\n throw new Error(`Unexpected token: ${this.currentToken.type}`);\n }\n }\n\n /**\n * Parse number or reference (number number R)\n */\n private parseNumberOrRef(): number | PDFRef {\n const first = this.currentToken.value as number;\n this.advance();\n\n // Check if this is a reference (two numbers followed by R)\n if (this.currentToken.type === TokenType.NUMBER) {\n const second = this.currentToken.value as number;\n this.advance();\n\n if ((this.currentToken.type as any) === TokenType.R) {\n this.advance();\n return createRef(first, second);\n }\n\n // Not a reference - we consumed the second number, need to put it back\n // Put the current token (third token) into nextToken buffer\n // Then restore second number as current token\n const thirdToken = this.currentToken;\n this.currentToken = { type: TokenType.NUMBER, value: second, position: 0 };\n this.nextToken = thirdToken;\n return first;\n }\n\n return first;\n }\n\n /**\n * Parse string\n */\n private parseString(): string {\n const value = this.currentToken.value as string;\n this.advance();\n return value;\n }\n\n /**\n * Parse name\n */\n private parseName(): PDFValue {\n const value = this.currentToken.value as string;\n this.advance();\n return createName(value);\n }\n\n /**\n * Parse boolean\n */\n private parseBoolean(): boolean {\n const value = this.currentToken.value as boolean;\n this.advance();\n return value;\n }\n\n /**\n * Parse null\n */\n private parseNull(): null {\n this.advance();\n return null;\n }\n\n /**\n * Parse array\n */\n private parseArray(): PDFArray {\n this.advance(); // Skip [\n const values: PDFValue[] = [];\n\n while (this.currentToken.type !== TokenType.ARRAY_END) {\n if (this.currentToken.type === TokenType.EOF) {\n throw new Error(\"Unexpected EOF in array\");\n }\n values.push(this.parseValue());\n }\n\n this.advance(); // Skip ]\n return createArray(values);\n }\n\n /**\n * Parse dictionary\n */\n private parseDictionary(): PDFDictionary {\n this.advance(); // Skip <<\n const entries: Record<string, PDFValue> = {};\n\n while (this.currentToken.type !== TokenType.DICT_END) {\n if (this.currentToken.type === TokenType.EOF) {\n throw new Error(\"Unexpected EOF in dictionary\");\n }\n\n // Key must be a name\n if (this.currentToken.type !== TokenType.NAME) {\n throw new Error(`Expected name in dictionary, got ${this.currentToken.type}`);\n }\n const key = this.currentToken.value as string;\n this.advance();\n\n // Value\n const value = this.parseValue();\n entries[key] = value;\n }\n\n this.advance(); // Skip >>\n return createDictionary(entries);\n }\n\n /**\n * Parse indirect object\n */\n parseIndirectObject(): { ref: PDFRef; value: PDFValue } {\n // Parse: objectNumber generation obj\n if (this.currentToken.type !== TokenType.NUMBER) {\n throw new Error(\"Expected object number\");\n }\n const objectNumber = this.currentToken.value as number;\n this.advance();\n\n if (this.currentToken.type !== TokenType.NUMBER) {\n throw new Error(\"Expected generation number\");\n }\n const generation = this.currentToken.value as number;\n this.advance();\n\n if ((this.currentToken.type as any) !== TokenType.OBJ) {\n throw new Error(\"Expected 'obj' keyword\");\n }\n this.advance();\n\n // Parse object value\n let value: PDFValue = this.parseValue();\n\n // Check for stream\n if (this.currentToken.type === TokenType.STREAM) {\n value = this.parseStream(value as PDFDictionary);\n }\n\n // Expect endobj\n if (this.currentToken.type !== TokenType.ENDOBJ) {\n throw new Error(\"Expected 'endobj' keyword\");\n }\n this.advance();\n\n return {\n ref: createRef(objectNumber, generation),\n value,\n };\n }\n\n /**\n * Parse stream (dictionary already parsed)\n */\n private parseStream(dictionary: PDFDictionary): PDFStream {\n // Get current position where 'stream' keyword is\n const streamKeywordPos = this.currentToken.position;\n this.advance(); // Skip 'stream'\n\n // Find the actual start of stream data (after 'stream' keyword and newline)\n // The stream keyword is followed by either \\n or \\r\\n\n let streamDataStart = streamKeywordPos + 6; // 'stream' is 6 characters\n \n // Skip the newline after 'stream'\n while (streamDataStart < this.data.length) {\n const byte = this.data[streamDataStart];\n if (byte === 0x0D || byte === 0x0A) { // \\r or \\n\n streamDataStart++;\n // Handle \\r\\n\n if (byte === 0x0D && this.data[streamDataStart] === 0x0A) {\n streamDataStart++;\n }\n break;\n }\n streamDataStart++;\n }\n\n // Get stream length\n const length = dictionary.Length as number;\n if (typeof length !== \"number\") {\n throw new Error(\"Stream dictionary missing Length\");\n }\n\n // Extract stream data\n const data = this.data.slice(streamDataStart, streamDataStart + length);\n\n // Skip to endstream\n while (this.currentToken.type !== TokenType.ENDSTREAM && this.currentToken.type !== TokenType.EOF) {\n this.advance();\n }\n\n if (this.currentToken.type !== TokenType.ENDSTREAM) {\n throw new Error(\"Expected 'endstream' keyword\");\n }\n this.advance();\n\n return createStream(data, dictionary);\n }\n\n /**\n * Advance to next token\n */\n private advance(): void {\n if (this.nextToken !== null) {\n this.currentToken = this.nextToken;\n this.nextToken = null;\n } else {\n this.currentToken = this.lexer.nextToken();\n }\n }\n\n /**\n * Check if more tokens available\n */\n hasMore(): boolean {\n return this.currentToken.type !== TokenType.EOF;\n }\n}\n",
|
|
7
7
|
"/**\n * Base error class for all PDF errors\n */\nexport class PDFError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"PDFError\";\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n }\n }\n}\n\n/**\n * Error thrown when PDF parsing fails\n */\nexport class PDFParseError extends PDFError {\n constructor(\n message: string,\n public readonly offset?: number,\n ) {\n super(message);\n this.name = \"PDFParseError\";\n }\n}\n\n/**\n * Error thrown when PDF generation fails\n */\nexport class PDFGenerationError extends PDFError {\n constructor(message: string) {\n super(message);\n this.name = \"PDFGenerationError\";\n }\n}\n\n/**\n * Error thrown when PDF object is invalid\n */\nexport class InvalidPDFObjectError extends PDFError {\n constructor(\n public readonly objectType: string,\n reason: string,\n ) {\n super(`Invalid ${objectType}: ${reason}`);\n this.name = \"InvalidPDFObjectError\";\n }\n}\n\n/**\n * Error thrown when font is not found\n */\nexport class FontNotFoundError extends PDFError {\n constructor(public readonly fontName: string) {\n super(`Font not found: ${fontName}`);\n this.name = \"FontNotFoundError\";\n }\n}\n\n/**\n * Error thrown when image is invalid\n */\nexport class InvalidImageError extends PDFError {\n constructor(reason: string) {\n super(`Invalid image: ${reason}`);\n this.name = \"InvalidImageError\";\n }\n}\n\n/**\n * Error thrown when PDF signature fails\n */\nexport class PDFSignatureError extends PDFError {\n constructor(reason: string) {\n super(`PDF signature error: ${reason}`);\n this.name = \"PDFSignatureError\";\n }\n}\n\n/**\n * Error thrown when PDF encryption fails\n */\nexport class PDFEncryptionError extends PDFError {\n constructor(reason: string) {\n super(`PDF encryption error: ${reason}`);\n this.name = \"PDFEncryptionError\";\n }\n}\n\n/**\n * Error thrown when required feature is not implemented\n */\nexport class NotImplementedError extends PDFError {\n constructor(feature: string) {\n super(`Feature not yet implemented: ${feature}`);\n this.name = \"NotImplementedError\";\n }\n}\n",
|
|
8
|
-
"import { PDFParser } from \"./parser.ts\";\nimport type { PDFDictionary, PDFRef, PDFArray } from \"../../types.ts\";\nimport { PDFParseError } from \"../../errors.ts\";\n\n/**\n * Parsed PDF Document\n */\nexport interface ParsedPDF {\n version: string;\n catalog: PDFRef;\n pages: ParsedPDFPage[];\n objects: Map<number, any>;\n}\n\n/**\n * Parsed PDF Page\n */\nexport interface ParsedPDFPage {\n ref: PDFRef;\n size: { width: number; height: number };\n content: string;\n}\n\n/**\n * PDF Reader - reads and parses existing PDFs\n */\nexport class PDFReader {\n private data: Uint8Array;\n private objects: Map<number, any> = new Map();\n\n constructor(data: Uint8Array) {\n this.data = data;\n }\n\n /**\n * Parse PDF file\n */\n parse(): ParsedPDF {\n // 1. Find and parse xref table\n const xrefOffset = this.findStartXRef();\n const xrefTable = this.parseXRefTable(xrefOffset);\n\n // 2. Parse trailer\n const trailer = this.parseTrailer(xrefOffset);\n const catalogRef = trailer.Root as PDFRef;\n\n // 3. Read all objects using xref table\n this.readObjects(xrefTable);\n\n // 4. Get PDF version from header\n const version = this.parseVersion();\n\n // 5. Parse pages\n const pages = this.parsePages(catalogRef);\n\n return {\n version,\n catalog: catalogRef,\n pages,\n objects: this.objects,\n };\n }\n\n /**\n * Find startxref offset
|
|
8
|
+
"import { PDFParser } from \"./parser.ts\";\nimport type { PDFDictionary, PDFRef, PDFArray } from \"../../types.ts\";\nimport { PDFParseError } from \"../../errors.ts\";\n\n/**\n * Parsed PDF Document\n */\nexport interface ParsedPDF {\n version: string;\n catalog: PDFRef;\n pages: ParsedPDFPage[];\n objects: Map<number, any>;\n}\n\n/**\n * Parsed PDF Page\n */\nexport interface ParsedPDFPage {\n ref: PDFRef;\n size: { width: number; height: number };\n content: string;\n}\n\n/**\n * PDF Reader - reads and parses existing PDFs\n */\nexport class PDFReader {\n private data: Uint8Array;\n private objects: Map<number, any> = new Map();\n\n constructor(data: Uint8Array) {\n this.data = data;\n }\n\n /**\n * Parse PDF file\n */\n parse(): ParsedPDF {\n // 1. Find and parse xref table\n const xrefOffset = this.findStartXRef();\n const xrefTable = this.parseXRefTable(xrefOffset);\n\n // 2. Parse trailer\n const trailer = this.parseTrailer(xrefOffset);\n const catalogRef = trailer.Root as PDFRef;\n\n // 3. Read all objects using xref table\n this.readObjects(xrefTable);\n\n // 4. Get PDF version from header\n const version = this.parseVersion();\n\n // 5. Parse pages\n const pages = this.parsePages(catalogRef);\n\n return {\n version,\n catalog: catalogRef,\n pages,\n objects: this.objects,\n };\n }\n\n /**\n * Find startxref offset by scanning backwards from EOF.\n * Only decodes the last 256 bytes instead of the entire PDF.\n */\n private findStartXRef(): number {\n const tailSize = Math.min(256, this.data.length);\n const tail = new TextDecoder().decode(\n this.data.subarray(this.data.length - tailSize),\n );\n const match = tail.match(/startxref\\s+(\\d+)/);\n if (!match) {\n throw new PDFParseError(\"Could not find startxref\");\n }\n return parseInt(match[1]!, 10);\n }\n\n /**\n * Parse xref table\n */\n private parseXRefTable(offset: number): Map<number, number> {\n const content = new TextDecoder().decode(this.data.subarray(offset));\n const lines = content.split(\"\\n\");\n\n const xref = new Map<number, number>();\n let i = 0;\n\n // Skip \"xref\" keyword\n while (i < lines.length && !lines[i]!.trim().startsWith(\"xref\")) i++;\n i++;\n\n // Parse subsections\n while (i < lines.length && !lines[i]!.trim().startsWith(\"trailer\")) {\n const subsection = lines[i]!.trim().split(/\\s+/);\n if (subsection.length === 2) {\n const start = parseInt(subsection[0]!, 10);\n const count = parseInt(subsection[1]!, 10);\n i++;\n\n // Parse entries\n for (let j = 0; j < count; j++) {\n const entry = lines[i]!.trim().split(/\\s+/);\n if (entry.length >= 3 && entry[2] === \"n\") {\n const offset = parseInt(entry[0]!, 10);\n xref.set(start + j, offset);\n }\n i++;\n }\n } else {\n i++;\n }\n }\n\n return xref;\n }\n\n /**\n * Parse trailer dictionary\n */\n private parseTrailer(xrefOffset: number): PDFDictionary {\n const content = new TextDecoder().decode(this.data.subarray(xrefOffset));\n const trailerMatch = content.match(/trailer\\s*<<[\\s\\S]*?>>/);\n if (!trailerMatch) {\n throw new PDFParseError(\"Could not find trailer\");\n }\n\n const parser = new PDFParser(new TextEncoder().encode(trailerMatch[0].replace(\"trailer\", \"\")));\n return parser.parseValue() as PDFDictionary;\n }\n\n /**\n * Read all objects from xref table.\n * Uses subarray (zero-copy view) instead of slice to avoid O(N × fileSize) allocations.\n */\n private readObjects(xrefTable: Map<number, number>): void {\n for (const [objectNum, offset] of xrefTable) {\n try {\n const objData = this.data.subarray(offset);\n const parser = new PDFParser(objData);\n const obj = parser.parseIndirectObject();\n this.objects.set(objectNum, obj.value);\n } catch (error) {\n // Skip malformed objects\n }\n }\n }\n\n /**\n * Parse PDF version from header\n */\n private parseVersion(): string {\n const header = new TextDecoder().decode(this.data.subarray(0, 20));\n const match = header.match(/%PDF-(\\d+\\.\\d+)/);\n return match ? match[1]! : \"1.7\";\n }\n\n /**\n * Parse pages from catalog\n */\n private parsePages(catalogRef: PDFRef): ParsedPDFPage[] {\n const catalog = this.objects.get(catalogRef.objectNumber) as PDFDictionary;\n if (!catalog) {\n throw new PDFParseError(\"Catalog not found\");\n }\n\n const pagesRef = catalog.Pages as PDFRef;\n const pagesTree = this.objects.get(pagesRef.objectNumber) as PDFDictionary;\n if (!pagesTree) {\n throw new PDFParseError(\"Pages tree not found\");\n }\n\n const kids = pagesTree.Kids as PDFArray;\n const pages: ParsedPDFPage[] = [];\n\n for (const kidRef of kids) {\n if (kidRef != null && typeof kidRef === \"object\" && \"objectNumber\" in kidRef) {\n const page = this.parsePage(kidRef as PDFRef);\n if (page) pages.push(page);\n }\n }\n\n return pages;\n }\n\n /**\n * Parse a single page\n */\n private parsePage(ref: PDFRef): ParsedPDFPage | null {\n const pageDict = this.objects.get(ref.objectNumber) as PDFDictionary;\n if (!pageDict) return null;\n\n const mediaBox = pageDict.MediaBox as PDFArray;\n const size = {\n width: mediaBox[2] as number,\n height: mediaBox[3] as number,\n };\n\n // Extract content\n let content = \"\";\n const contentsRef = pageDict.Contents as PDFRef;\n if (contentsRef && typeof contentsRef === \"object\" && \"objectNumber\" in contentsRef) {\n content = this.extractText(contentsRef);\n }\n\n return { ref, size, content };\n }\n\n /**\n * Extract text from content stream\n */\n private extractText(ref: PDFRef): string {\n const stream = this.objects.get(ref.objectNumber);\n if (!stream || !stream.data) return \"\";\n\n const content = new TextDecoder().decode(stream.data);\n\n const texts: string[] = [];\n\n // Match (text) Tj — single string show\n const tjRegex = /\\(([^)]*)\\)\\s*Tj/g;\n let match;\n while ((match = tjRegex.exec(content)) !== null) {\n texts.push(match[1]!);\n }\n\n // Match [...] TJ — array show (mix of strings and kerning numbers)\n const tjArrayRegex = /\\[((?:[^[\\]]*?))\\]\\s*TJ/gi;\n while ((match = tjArrayRegex.exec(content)) !== null) {\n const arrayContent = match[1]!;\n const stringParts: string[] = [];\n const partRegex = /\\(([^)]*)\\)/g;\n let partMatch;\n while ((partMatch = partRegex.exec(arrayContent)) !== null) {\n stringParts.push(partMatch[1]!);\n }\n if (stringParts.length > 0) {\n texts.push(stringParts.join(\"\"));\n }\n }\n\n // Match ' and \" operators (move to next line and show)\n const quoteRegex = /\\(([^)]*)\\)\\s*['\"]/g;\n while ((match = quoteRegex.exec(content)) !== null) {\n texts.push(match[1]!);\n }\n\n return texts.join(\" \");\n }\n}\n"
|
|
9
9
|
],
|
|
10
|
-
"mappings": "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",
|
|
11
|
-
"debugId": "
|
|
10
|
+
"mappings": "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",
|
|
11
|
+
"debugId": "97FAF14114124ACE64756E2164756E21",
|
|
12
12
|
"names": []
|
|
13
13
|
}
|