@f-o-t/pdf 0.3.8 → 0.3.10

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.
@@ -559,9 +559,26 @@ class PDFReader {
559
559
  const decoder = new TextDecoder;
560
560
  const content = decoder.decode(stream.data);
561
561
  const texts = [];
562
- const regex = /\(([^)]*)\)\s*Tj/g;
562
+ const tjRegex = /\(([^)]*)\)\s*Tj/g;
563
563
  let match;
564
- while ((match = regex.exec(content)) !== null) {
564
+ while ((match = tjRegex.exec(content)) !== null) {
565
+ texts.push(match[1]);
566
+ }
567
+ const tjArrayRegex = /\[((?:[^[\]]*?))\]\s*TJ/gi;
568
+ while ((match = tjArrayRegex.exec(content)) !== null) {
569
+ const arrayContent = match[1];
570
+ const stringParts = [];
571
+ const partRegex = /\(([^)]*)\)/g;
572
+ let partMatch;
573
+ while ((partMatch = partRegex.exec(arrayContent)) !== null) {
574
+ stringParts.push(partMatch[1]);
575
+ }
576
+ if (stringParts.length > 0) {
577
+ texts.push(stringParts.join(""));
578
+ }
579
+ }
580
+ const quoteRegex = /\(([^)]*)\)\s*['"]/g;
581
+ while ((match = quoteRegex.exec(content)) !== null) {
565
582
  texts.push(match[1]);
566
583
  }
567
584
  return texts.join(" ");
@@ -569,4 +586,4 @@ class PDFReader {
569
586
  }
570
587
  export { PDFError, PDFParseError, PDFGenerationError, InvalidPDFObjectError, FontNotFoundError, InvalidImageError, PDFSignatureError, PDFEncryptionError, NotImplementedError, TokenType, PDFLexer, PDFParser, PDFReader };
571
588
 
572
- //# debugId=084165B12C841F7C64756E2164756E21
589
+ //# debugId=0A68790EB0D2BB9864756E2164756E21
@@ -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\n */\n private findStartXRef(): number {\n const decoder = new TextDecoder();\n const content = decoder.decode(this.data);\n const match = content.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 decoder = new TextDecoder();\n const content = decoder.decode(this.data.slice(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 decoder = new TextDecoder();\n const content = decoder.decode(this.data.slice(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 */\n private readObjects(xrefTable: Map<number, number>): void {\n for (const [objectNum, offset] of xrefTable) {\n try {\n const objData = this.data.slice(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 decoder = new TextDecoder();\n const header = decoder.decode(this.data.slice(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 decoder = new TextDecoder();\n const content = decoder.decode(stream.data);\n\n // Simple text extraction - look for (text) Tj patterns\n const texts: string[] = [];\n const regex = /\\(([^)]*)\\)\\s*Tj/g;\n let match;\n while ((match = regex.exec(content)) !== null) {\n texts.push(match[1]!);\n }\n\n return texts.join(\" \");\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\n */\n private findStartXRef(): number {\n const decoder = new TextDecoder();\n const content = decoder.decode(this.data);\n const match = content.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 decoder = new TextDecoder();\n const content = decoder.decode(this.data.slice(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 decoder = new TextDecoder();\n const content = decoder.decode(this.data.slice(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 */\n private readObjects(xrefTable: Map<number, number>): void {\n for (const [objectNum, offset] of xrefTable) {\n try {\n const objData = this.data.slice(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 decoder = new TextDecoder();\n const header = decoder.decode(this.data.slice(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 decoder = new TextDecoder();\n const content = decoder.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": "084165B12C841F7C64756E2164756E21",
10
+ "mappings": "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",
11
+ "debugId": "0A68790EB0D2BB9864756E2164756E21",
12
12
  "names": []
13
13
  }
package/dist/index.js CHANGED
@@ -42,7 +42,7 @@ import {
42
42
  PDFReader,
43
43
  PDFSignatureError,
44
44
  TokenType
45
- } from "./index-kjz7by1m.js";
45
+ } from "./index-18zt1kda.js";
46
46
  import {
47
47
  createArray,
48
48
  createDictionary,
@@ -0,0 +1,55 @@
1
+ /**
2
+ * PdfDocument implementation for the editing plugin
3
+ *
4
+ * Manages loading an existing PDF, tracking modifications, and producing an
5
+ * incremental update (appended after the original %%EOF) that adds or
6
+ * overrides objects without rewriting the original content.
7
+ */
8
+ import type { PdfDocument, PdfImage, PdfPage, SignaturePlaceholderOptions } from "./types.ts";
9
+ export declare class PdfDocumentImpl implements PdfDocument {
10
+ private originalData;
11
+ private pdfStr;
12
+ private structure;
13
+ private pages;
14
+ private nextObjNum;
15
+ private fontObjNum;
16
+ private embeddedImages;
17
+ constructor(data: Uint8Array);
18
+ get pageCount(): number;
19
+ getPage(index: number): PdfPage;
20
+ embedPng(data: Uint8Array): PdfImage;
21
+ /**
22
+ * Save the modified PDF using an incremental update
23
+ */
24
+ save(): Uint8Array;
25
+ /**
26
+ * Save with a signature placeholder for digital signing
27
+ */
28
+ saveWithPlaceholder(options: SignaturePlaceholderOptions): {
29
+ pdf: Uint8Array;
30
+ byteRange: [number, number, number, number];
31
+ };
32
+ private buildIncrementalUpdate;
33
+ private hasImagesForPage;
34
+ }
35
+ /**
36
+ * Find the ByteRange and Contents placeholder in a signed PDF
37
+ */
38
+ export declare function findByteRange(pdfData: Uint8Array): {
39
+ byteRange: [number, number, number, number];
40
+ contentsStart: number;
41
+ contentsEnd: number;
42
+ placeholderLength: number;
43
+ };
44
+ /**
45
+ * Extract the bytes that need to be signed according to the ByteRange
46
+ */
47
+ export declare function extractBytesToSign(pdfData: Uint8Array, byteRange: [number, number, number, number]): Uint8Array;
48
+ /**
49
+ * Embed a signature (as raw bytes) into the Contents placeholder.
50
+ *
51
+ * **Mutates `pdfData` in-place** and returns the same buffer. Callers must not
52
+ * retain a reference to `pdfData` and expect it to remain unchanged after this call.
53
+ */
54
+ export declare function embedSignature(pdfData: Uint8Array, signature: Uint8Array): Uint8Array;
55
+ //# sourceMappingURL=document.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"document.d.ts","sourceRoot":"","sources":["../../../src/plugins/editing/document.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAUH,OAAO,KAAK,EACX,WAAW,EACX,QAAQ,EACR,OAAO,EACP,2BAA2B,EAC3B,MAAM,YAAY,CAAC;AAwFpB,qBAAa,eAAgB,YAAW,WAAW;IAClD,OAAO,CAAC,YAAY,CAAa;IACjC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,SAAS,CAAuC;IACxD,OAAO,CAAC,KAAK,CAAqB;IAClC,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,cAAc,CAOd;gBAEI,IAAI,EAAE,UAAU;IAwB5B,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAS/B,QAAQ,CAAC,IAAI,EAAE,UAAU,GAAG,QAAQ;IAqBpC;;OAEG;IACH,IAAI,IAAI,UAAU;IAIlB;;OAEG;IACH,mBAAmB,CAAC,OAAO,EAAE,2BAA2B,GAAG;QAC1D,GAAG,EAAE,UAAU,CAAC;QAChB,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;KAC5C;IAID,OAAO,CAAC,sBAAsB;IA4W9B,OAAO,CAAC,gBAAgB;CAGxB;AAsHD;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,UAAU,GAAG;IACnD,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5C,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,MAAM,CAAC;CAC1B,CAkBA;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CACjC,OAAO,EAAE,UAAU,EACnB,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GACzC,UAAU,CAoBZ;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAC7B,OAAO,EAAE,UAAU,EACnB,SAAS,EAAE,UAAU,GACnB,UAAU,CAwBZ"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * PDF Editing Plugin
3
+ *
4
+ * Load existing PDFs, modify them (draw text, rectangles, images),
5
+ * and save with incremental updates. Also supports creating signature
6
+ * placeholders for digital signing workflows.
7
+ */
8
+ export type { PdfDocument, PdfPage, PdfImage, TextOptions, RectOptions, ImageOptions, SignaturePlaceholderOptions, } from "./types.ts";
9
+ export { PdfDocumentImpl } from "./document.ts";
10
+ export { findByteRange, extractBytesToSign, embedSignature, } from "./document.ts";
11
+ import type { PdfDocument } from "./types.ts";
12
+ /**
13
+ * Load an existing PDF for editing
14
+ *
15
+ * @param data - The PDF file contents as a Uint8Array
16
+ * @returns A PdfDocument that can be modified and saved
17
+ */
18
+ export declare function loadPdf(data: Uint8Array): PdfDocument;
19
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/plugins/editing/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,YAAY,EACX,WAAW,EACX,OAAO,EACP,QAAQ,EACR,WAAW,EACX,WAAW,EACX,YAAY,EACZ,2BAA2B,GAC3B,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEhD,OAAO,EACN,aAAa,EACb,kBAAkB,EAClB,cAAc,GACd,MAAM,eAAe,CAAC;AAGvB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C;;;;;GAKG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,UAAU,GAAG,WAAW,CAErD"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * PdfPage implementation for the editing plugin
3
+ *
4
+ * Collects drawing operations as PDF content stream operators.
5
+ * The accumulated operators are later serialised as a new content stream
6
+ * object appended via incremental update.
7
+ */
8
+ import type { PdfImage, PdfPage, TextOptions, RectOptions, ImageOptions } from "./types.ts";
9
+ export declare class PdfPageImpl implements PdfPage {
10
+ readonly width: number;
11
+ readonly height: number;
12
+ /** The existing page object number in the original PDF */
13
+ readonly pageObjNum: number;
14
+ /** The raw dictionary content string of the original page */
15
+ readonly originalDictContent: string;
16
+ /** Accumulated content-stream operators added by draw* methods */
17
+ private operators;
18
+ /** Images referenced by drawImage (name -> obj num) */
19
+ private imageRefs;
20
+ /** Font object number allocated by the document (set externally) */
21
+ fontObjNum: number;
22
+ /** Whether any drawing operations have been recorded */
23
+ get dirty(): boolean;
24
+ constructor(pageObjNum: number, width: number, height: number, originalDictContent: string);
25
+ /**
26
+ * Draw text on the page using Helvetica
27
+ */
28
+ drawText(text: string, options: TextOptions): void;
29
+ /**
30
+ * Draw a rectangle on the page
31
+ */
32
+ drawRectangle(options: RectOptions): void;
33
+ /**
34
+ * Draw an embedded image on the page
35
+ */
36
+ drawImage(image: PdfImage, options: ImageOptions): void;
37
+ /**
38
+ * Build the content stream bytes for the accumulated operators
39
+ */
40
+ buildContentStream(): Uint8Array;
41
+ /**
42
+ * Get image references used in drawing operations
43
+ */
44
+ getImageRefs(): Map<string, number>;
45
+ }
46
+ //# sourceMappingURL=page.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"page.d.ts","sourceRoot":"","sources":["../../../src/plugins/editing/page.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAiB5F,qBAAa,WAAY,YAAW,OAAO;IAC1C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAExB,0DAA0D;IAC1D,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,6DAA6D;IAC7D,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IAErC,kEAAkE;IAClE,OAAO,CAAC,SAAS,CAAgB;IAEjC,uDAAuD;IACvD,OAAO,CAAC,SAAS,CAAkC;IAEnD,oEAAoE;IACpE,UAAU,SAAK;IAEf,wDAAwD;IACxD,IAAI,KAAK,IAAI,OAAO,CAEnB;gBAGA,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,mBAAmB,EAAE,MAAM;IAQ5B;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,IAAI;IAqBlD;;OAEG;IACH,aAAa,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI;IA6BzC;;OAEG;IACH,SAAS,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,YAAY,GAAG,IAAI;IAWvD;;OAEG;IACH,kBAAkB,IAAI,UAAU;IAKhC;;OAEG;IACH,YAAY,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;CAGnC"}
@@ -0,0 +1,90 @@
1
+ /**
2
+ * Lightweight PDF structure parser for incremental editing
3
+ *
4
+ * Parses just enough of an existing PDF to enable incremental updates:
5
+ * - Finds the cross-reference table via startxref
6
+ * - Reads the trailer to get Root, Size, Info
7
+ * - Follows Root -> Pages -> Kids to locate page objects
8
+ * - Extracts MediaBox dimensions from pages
9
+ *
10
+ * All public functions accept a pre-decoded latin1 string (`pdfStr`) rather
11
+ * than the raw Uint8Array so that the caller can decode ONCE and reuse the
12
+ * string across many calls — avoiding O(pages) redundant allocations.
13
+ */
14
+ /**
15
+ * Parsed PDF structure needed for incremental updates
16
+ */
17
+ export type PdfStructure = {
18
+ xrefOffset: number;
19
+ rootNum: number;
20
+ infoNum: number | null;
21
+ size: number;
22
+ pagesNum: number;
23
+ pageNums: number[];
24
+ rootDictContent: string;
25
+ pageDictContents: string[];
26
+ };
27
+ /**
28
+ * Find the byte offset recorded after the last `startxref` keyword
29
+ */
30
+ export declare function findStartXref(pdfStr: string): number;
31
+ /**
32
+ * Parse the trailer dictionary to extract Root, Size, Info, and Prev xref offset.
33
+ *
34
+ * Supports both traditional trailers (`trailer << ... >>`) and
35
+ * cross-reference streams (PDF 1.5+) where the trailer entries live
36
+ * inside the xref stream object dictionary.
37
+ */
38
+ export declare function parseTrailer(pdfStr: string): {
39
+ root: number;
40
+ size: number;
41
+ info: number | null;
42
+ prevXref: number;
43
+ };
44
+ /**
45
+ * Extract the dictionary content (between outer << and >>) for a given object number.
46
+ * Returns the content string without the delimiters.
47
+ */
48
+ export declare function extractObjectDictContent(pdfStr: string, objNum: number): string;
49
+ /**
50
+ * Find all LEAF page object numbers by following Root -> Pages -> Kids recursively.
51
+ *
52
+ * The PDF page tree can be arbitrarily deep — every ~100-200 pages, PDF tools
53
+ * create intermediate Pages nodes (Type=Pages) that group their children.
54
+ * This function recurses until it reaches actual Page leaves (Type=Page).
55
+ */
56
+ export declare function findPageObjects(pdfStr: string, rootNum: number): number[];
57
+ /**
58
+ * Get the MediaBox for a page object: [x1, y1, x2, y2].
59
+ *
60
+ * Per the PDF spec, /MediaBox is inherited: if the Page object itself does not
61
+ * carry the entry, we walk up the /Parent chain until we find one.
62
+ */
63
+ export declare function getMediaBox(pdfStr: string, pageObjNum: number): [number, number, number, number];
64
+ /**
65
+ * Parse the full PDF structure needed for incremental editing.
66
+ *
67
+ * @param pdfStr - The PDF file decoded as a latin1 string (decode ONCE and pass here)
68
+ */
69
+ export declare function parsePdfStructure(pdfStr: string): PdfStructure;
70
+ /**
71
+ * Parse a Resources dictionary from page content, handling both inline
72
+ * dictionaries and indirect references.
73
+ *
74
+ * Returns a map of resource type names to their dictionary/array content strings.
75
+ * Example: { "/Font": "<< /F1 10 0 R >>", "/ProcSet": "[/PDF /Text]" }
76
+ */
77
+ export declare function parseResourcesDict(pageContent: string, pdfStr: string): Record<string, string>;
78
+ /**
79
+ * Merge two Resources dictionaries, combining entries from both.
80
+ *
81
+ * For dictionary-type entries like /Font, /XObject, extracts individual
82
+ * name-reference pairs and combines them. For array-type entries like
83
+ * /ProcSet, uses the existing value (no merge needed).
84
+ *
85
+ * @param existing - Parsed Resources from original page
86
+ * @param additions - New Resources to add (from signature appearance)
87
+ * @returns Merged Resources dictionary entries
88
+ */
89
+ export declare function mergeResourcesDicts(existing: Record<string, string>, additions: Record<string, string>): Record<string, string>;
90
+ //# sourceMappingURL=parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../../src/plugins/editing/parser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,EAAE,CAAC;CAC3B,CAAC;AAEF;;GAEG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAKpD;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG;IAC7C,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CACjB,CA0CA;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CACvC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,GACZ,MAAM,CAmBR;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAOzE;AA4CD;;;;;GAKG;AACH,wBAAgB,WAAW,CAC1B,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,GAChB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CA0BlC;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,CAwB9D;AAkED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CACjC,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,GACZ,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CA4BxB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CAClC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAChC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC/B,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CA0BxB"}
@@ -0,0 +1,102 @@
1
+ /**
2
+ * Types for the PDF editing plugin
3
+ */
4
+ /**
5
+ * A loaded PDF document that can be modified and saved
6
+ */
7
+ export type PdfDocument = {
8
+ /** Number of pages in the document */
9
+ pageCount: number;
10
+ /** Get a page by zero-based index */
11
+ getPage(index: number): PdfPage;
12
+ /** Embed a PNG image for use with drawImage */
13
+ embedPng(data: Uint8Array): PdfImage;
14
+ /** Save the modified PDF with incremental update */
15
+ save(): Uint8Array;
16
+ /** Save with a signature placeholder for digital signing */
17
+ saveWithPlaceholder(options: SignaturePlaceholderOptions): {
18
+ pdf: Uint8Array;
19
+ byteRange: [number, number, number, number];
20
+ };
21
+ };
22
+ /**
23
+ * A page in a loaded PDF document
24
+ */
25
+ export type PdfPage = {
26
+ /** Page width in points */
27
+ width: number;
28
+ /** Page height in points */
29
+ height: number;
30
+ /** Draw text on the page */
31
+ drawText(text: string, options: TextOptions): void;
32
+ /** Draw a rectangle on the page */
33
+ drawRectangle(options: RectOptions): void;
34
+ /** Draw an embedded image on the page */
35
+ drawImage(image: PdfImage, options: ImageOptions): void;
36
+ };
37
+ /**
38
+ * An embedded image reference
39
+ */
40
+ export type PdfImage = {
41
+ /** Internal object number for the image XObject */
42
+ readonly objectNumber: number;
43
+ /** Image width in pixels */
44
+ readonly width: number;
45
+ /** Image height in pixels */
46
+ readonly height: number;
47
+ };
48
+ /**
49
+ * Options for drawing text
50
+ */
51
+ export type TextOptions = {
52
+ x: number;
53
+ y: number;
54
+ /** Font size in points (default: 12) */
55
+ size?: number;
56
+ /** Hex color string like "#000000" (default: black) */
57
+ color?: string;
58
+ };
59
+ /**
60
+ * Options for drawing a rectangle
61
+ */
62
+ export type RectOptions = {
63
+ x: number;
64
+ y: number;
65
+ width: number;
66
+ height: number;
67
+ /** Fill color as hex string */
68
+ color?: string;
69
+ /** Stroke/border color as hex string */
70
+ borderColor?: string;
71
+ /** Border line width in points */
72
+ borderWidth?: number;
73
+ };
74
+ /**
75
+ * Options for drawing an image
76
+ */
77
+ export type ImageOptions = {
78
+ x: number;
79
+ y: number;
80
+ width: number;
81
+ height: number;
82
+ };
83
+ /**
84
+ * Options for creating a signature placeholder
85
+ */
86
+ export type SignaturePlaceholderOptions = {
87
+ reason?: string;
88
+ name?: string;
89
+ location?: string;
90
+ contactInfo?: string;
91
+ /** Size of the signature contents in bytes (default: 16384) */
92
+ signatureLength?: number;
93
+ /** DocMDP permission level: 1 = no changes, 2 = form fill + sign, 3 = form fill + sign + annotate (default: 2) */
94
+ docMdpPermission?: 1 | 2 | 3;
95
+ /**
96
+ * Zero-based page index where the signature widget annotation should be placed.
97
+ * This should match the page where the visual signature appearance is drawn.
98
+ * Defaults to 0 (first page) for invisible signatures.
99
+ */
100
+ appearancePage?: number;
101
+ };
102
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/plugins/editing/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG;IACzB,sCAAsC;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,qCAAqC;IACrC,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;IAChC,+CAA+C;IAC/C,QAAQ,CAAC,IAAI,EAAE,UAAU,GAAG,QAAQ,CAAC;IACrC,oDAAoD;IACpD,IAAI,IAAI,UAAU,CAAC;IACnB,4DAA4D;IAC5D,mBAAmB,CAAC,OAAO,EAAE,2BAA2B,GAAG;QAC1D,GAAG,EAAE,UAAU,CAAC;QAChB,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;KAC5C,CAAC;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,OAAO,GAAG;IACrB,2BAA2B;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,4BAA4B;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,4BAA4B;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,IAAI,CAAC;IACnD,mCAAmC;IACnC,aAAa,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,CAAC;IAC1C,yCAAyC;IACzC,SAAS,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,YAAY,GAAG,IAAI,CAAC;CACxD,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG;IACtB,mDAAmD;IACnD,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,4BAA4B;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,6BAA6B;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG;IACzB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,wCAAwC;IACxC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,uDAAuD;IACvD,KAAK,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG;IACzB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,+BAA+B;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,wCAAwC;IACxC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kCAAkC;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG;IAC1B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CACf,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,2BAA2B,GAAG;IACzC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,+DAA+D;IAC/D,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,kHAAkH;IAClH,gBAAgB,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC7B;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC"}
@@ -4,7 +4,7 @@ import {
4
4
  PDFParser,
5
5
  PDFReader,
6
6
  TokenType
7
- } from "../../index-kjz7by1m.js";
7
+ } from "../../index-18zt1kda.js";
8
8
  import"../../index-4jtcmpfh.js";
9
9
  export {
10
10
  TokenType,
@@ -1 +1 @@
1
- {"version":3,"file":"reader.d.ts","sourceRoot":"","sources":["../../../src/plugins/parsing/reader.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAiB,MAAM,EAAY,MAAM,gBAAgB,CAAC;AAGtE;;GAEG;AACH,MAAM,WAAW,SAAS;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IACxC,OAAO,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,qBAAa,SAAS;IACnB,OAAO,CAAC,IAAI,CAAa;IACzB,OAAO,CAAC,OAAO,CAA+B;gBAElC,IAAI,EAAE,UAAU;IAI5B;;OAEG;IACH,KAAK,IAAI,SAAS;IA0BlB;;OAEG;IACH,OAAO,CAAC,aAAa;IAUrB;;OAEG;IACH,OAAO,CAAC,cAAc;IAqCtB;;OAEG;IACH,OAAO,CAAC,YAAY;IAYpB;;OAEG;IACH,OAAO,CAAC,WAAW;IAanB;;OAEG;IACH,OAAO,CAAC,YAAY;IAOpB;;OAEG;IACH,OAAO,CAAC,UAAU;IAyBlB;;OAEG;IACH,OAAO,CAAC,SAAS;IAoBjB;;OAEG;IACH,OAAO,CAAC,WAAW;CAiBrB"}
1
+ {"version":3,"file":"reader.d.ts","sourceRoot":"","sources":["../../../src/plugins/parsing/reader.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAiB,MAAM,EAAY,MAAM,gBAAgB,CAAC;AAGtE;;GAEG;AACH,MAAM,WAAW,SAAS;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IACxC,OAAO,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,qBAAa,SAAS;IACnB,OAAO,CAAC,IAAI,CAAa;IACzB,OAAO,CAAC,OAAO,CAA+B;gBAElC,IAAI,EAAE,UAAU;IAI5B;;OAEG;IACH,KAAK,IAAI,SAAS;IA0BlB;;OAEG;IACH,OAAO,CAAC,aAAa;IAUrB;;OAEG;IACH,OAAO,CAAC,cAAc;IAqCtB;;OAEG;IACH,OAAO,CAAC,YAAY;IAYpB;;OAEG;IACH,OAAO,CAAC,WAAW;IAanB;;OAEG;IACH,OAAO,CAAC,YAAY;IAOpB;;OAEG;IACH,OAAO,CAAC,UAAU;IAyBlB;;OAEG;IACH,OAAO,CAAC,SAAS;IAoBjB;;OAEG;IACH,OAAO,CAAC,WAAW;CAuCrB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@f-o-t/pdf",
3
- "version": "0.3.8",
3
+ "version": "0.3.10",
4
4
  "type": "module",
5
5
  "files": [
6
6
  "dist"
@@ -10,18 +10,26 @@
10
10
  "exports": {
11
11
  ".": {
12
12
  "types": "./dist/index.d.ts",
13
+ "module": "./dist/index.js",
14
+ "import": "./dist/index.js",
13
15
  "default": "./dist/index.js"
14
16
  },
15
17
  "./plugins/generation": {
16
18
  "types": "./dist/plugins/generation/index.d.ts",
19
+ "module": "./dist/plugins/generation/index.js",
20
+ "import": "./dist/plugins/generation/index.js",
17
21
  "default": "./dist/plugins/generation/index.js"
18
22
  },
19
23
  "./plugins/parsing": {
20
24
  "types": "./dist/plugins/parsing/index.d.ts",
25
+ "module": "./dist/plugins/parsing/index.js",
26
+ "import": "./dist/plugins/parsing/index.js",
21
27
  "default": "./dist/plugins/parsing/index.js"
22
28
  },
23
29
  "./plugins/editing": {
24
30
  "types": "./dist/plugins/editing/index.d.ts",
31
+ "module": "./dist/plugins/editing/index.js",
32
+ "import": "./dist/plugins/editing/index.js",
25
33
  "default": "./dist/plugins/editing/index.js"
26
34
  }
27
35
  },