@robinpath/pdf 0.1.0

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 ADDED
@@ -0,0 +1,94 @@
1
+ # @robinpath/pdf
2
+
3
+ > PDF generation (documents, tables, HTML-to-PDF) and parsing (text extraction, metadata, page count)
4
+
5
+ ![Category](https://img.shields.io/badge/category-Documents-blue) ![Functions](https://img.shields.io/badge/functions-7-green) ![Auth](https://img.shields.io/badge/auth-none-lightgrey) ![License](https://img.shields.io/badge/license-MIT-brightgreen)
6
+
7
+ ## Why use this module?
8
+
9
+ The `pdf` module lets you:
10
+
11
+ - Generate a PDF document with title, content, and sections
12
+ - Parse a PDF file and extract text, metadata, and page count
13
+ - Extract all text from a PDF file
14
+ - Get the number of pages in a PDF
15
+ - Get PDF metadata (author, title, creation date, etc.)
16
+
17
+ All functions are callable directly from RobinPath scripts with a simple, consistent API.
18
+
19
+ ## Installation
20
+
21
+ ```bash
22
+ npm install @robinpath/pdf
23
+ ```
24
+
25
+ ## Quick Start
26
+
27
+ No credentials needed — start using it right away:
28
+
29
+ ```robinpath
30
+ pdf.parse "./document.pdf"
31
+ ```
32
+
33
+ ## Available Functions
34
+
35
+ | Function | Description |
36
+ |----------|-------------|
37
+ | `pdf.generate` | Generate a PDF document with title, content, and sections |
38
+ | `pdf.parse` | Parse a PDF file and extract text, metadata, and page count |
39
+ | `pdf.extractText` | Extract all text from a PDF file |
40
+ | `pdf.pageCount` | Get the number of pages in a PDF |
41
+ | `pdf.metadata` | Get PDF metadata (author, title, creation date, etc.) |
42
+ | `pdf.generateTable` | Generate a PDF with a formatted table |
43
+ | `pdf.generateFromHtml` | Generate a PDF from basic HTML content |
44
+
45
+ ## Examples
46
+
47
+ ### Parse a PDF file and extract text, metadata, and page count
48
+
49
+ ```robinpath
50
+ pdf.parse "./document.pdf"
51
+ ```
52
+
53
+ ### Extract all text from a PDF file
54
+
55
+ ```robinpath
56
+ pdf.extractText "./document.pdf"
57
+ ```
58
+
59
+ ### Get the number of pages in a PDF
60
+
61
+ ```robinpath
62
+ pdf.pageCount "./document.pdf"
63
+ ```
64
+
65
+ ## Integration with RobinPath
66
+
67
+ ```typescript
68
+ import { RobinPath } from "@wiredwp/robinpath";
69
+ import Module from "@robinpath/pdf";
70
+
71
+ const rp = new RobinPath();
72
+ rp.registerModule(Module.name, Module.functions);
73
+ rp.registerModuleMeta(Module.name, Module.functionMetadata);
74
+
75
+ const result = await rp.executeScript(`
76
+ pdf.parse "./document.pdf"
77
+ `);
78
+ ```
79
+
80
+ ## Full API Reference
81
+
82
+ See [MODULE.md](./MODULE.md) for complete documentation including all parameters, return types, error handling, and advanced examples.
83
+
84
+ ## Related Modules
85
+
86
+ - [`@robinpath/excel`](../excel) — Excel module for complementary functionality
87
+ - [`@robinpath/office`](../office) — Office module for complementary functionality
88
+ - [`@robinpath/docusign`](../docusign) — DocuSign module for complementary functionality
89
+ - [`@robinpath/pandadoc`](../pandadoc) — PandaDoc module for complementary functionality
90
+ - [`@robinpath/hellosign`](../hellosign) — HelloSign module for complementary functionality
91
+
92
+ ## License
93
+
94
+ MIT
@@ -0,0 +1,6 @@
1
+ import type { ModuleAdapter } from "@wiredwp/robinpath";
2
+ declare const PdfModule: ModuleAdapter;
3
+ export default PdfModule;
4
+ export { PdfModule };
5
+ export { PdfFunctions, PdfFunctionMetadata, PdfModuleMetadata } from "./pdf.js";
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGxD,QAAA,MAAM,SAAS,EAAE,aAMhB,CAAC;AAEF,eAAe,SAAS,CAAC;AACzB,OAAO,EAAE,SAAS,EAAE,CAAC;AACrB,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,12 @@
1
+ import { PdfFunctions, PdfFunctionMetadata, PdfModuleMetadata } from "./pdf.js";
2
+ const PdfModule = {
3
+ name: "pdf",
4
+ functions: PdfFunctions,
5
+ functionMetadata: PdfFunctionMetadata,
6
+ moduleMetadata: PdfModuleMetadata,
7
+ global: false,
8
+ }; // as ModuleAdapter
9
+ export default PdfModule;
10
+ export { PdfModule };
11
+ export { PdfFunctions, PdfFunctionMetadata, PdfModuleMetadata } from "./pdf.js";
12
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAEhF,MAAM,SAAS,GAAkB;IAC/B,IAAI,EAAE,KAAK;IACX,SAAS,EAAE,YAAY;IACvB,gBAAgB,EAAE,mBAA0B;IAC5C,cAAc,EAAE,iBAAwB;IACxC,MAAM,EAAE,KAAK;CACd,CAAC,CAAC,mBAAmB;AAEtB,eAAe,SAAS,CAAC;AACzB,OAAO,EAAE,SAAS,EAAE,CAAC;AACrB,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC"}
package/dist/pdf.d.ts ADDED
@@ -0,0 +1,100 @@
1
+ import type { BuiltinHandler } from "@wiredwp/robinpath";
2
+ export declare const PdfFunctions: Record<string, BuiltinHandler>;
3
+ export declare const PdfFunctionMetadata: {
4
+ generate: {
5
+ description: string;
6
+ parameters: {
7
+ name: string;
8
+ dataType: string;
9
+ description: string;
10
+ formInputType: string;
11
+ required: boolean;
12
+ }[];
13
+ returnType: string;
14
+ returnDescription: string;
15
+ example: string;
16
+ };
17
+ parse: {
18
+ description: string;
19
+ parameters: {
20
+ name: string;
21
+ dataType: string;
22
+ description: string;
23
+ formInputType: string;
24
+ required: boolean;
25
+ }[];
26
+ returnType: string;
27
+ returnDescription: string;
28
+ example: string;
29
+ };
30
+ extractText: {
31
+ description: string;
32
+ parameters: {
33
+ name: string;
34
+ dataType: string;
35
+ description: string;
36
+ formInputType: string;
37
+ required: boolean;
38
+ }[];
39
+ returnType: string;
40
+ returnDescription: string;
41
+ example: string;
42
+ };
43
+ pageCount: {
44
+ description: string;
45
+ parameters: {
46
+ name: string;
47
+ dataType: string;
48
+ description: string;
49
+ formInputType: string;
50
+ required: boolean;
51
+ }[];
52
+ returnType: string;
53
+ returnDescription: string;
54
+ example: string;
55
+ };
56
+ metadata: {
57
+ description: string;
58
+ parameters: {
59
+ name: string;
60
+ dataType: string;
61
+ description: string;
62
+ formInputType: string;
63
+ required: boolean;
64
+ }[];
65
+ returnType: string;
66
+ returnDescription: string;
67
+ example: string;
68
+ };
69
+ generateTable: {
70
+ description: string;
71
+ parameters: {
72
+ name: string;
73
+ dataType: string;
74
+ description: string;
75
+ formInputType: string;
76
+ required: boolean;
77
+ }[];
78
+ returnType: string;
79
+ returnDescription: string;
80
+ example: string;
81
+ };
82
+ generateFromHtml: {
83
+ description: string;
84
+ parameters: {
85
+ name: string;
86
+ dataType: string;
87
+ description: string;
88
+ formInputType: string;
89
+ required: boolean;
90
+ }[];
91
+ returnType: string;
92
+ returnDescription: string;
93
+ example: string;
94
+ };
95
+ };
96
+ export declare const PdfModuleMetadata: {
97
+ description: string;
98
+ methods: string[];
99
+ };
100
+ //# sourceMappingURL=pdf.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pdf.d.ts","sourceRoot":"","sources":["../src/pdf.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAA2C,MAAM,oBAAoB,CAAC;AA4KlG,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAEvD,CAAC;AAEF,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAQ/B,CAAC;AAEF,eAAO,MAAM,iBAAiB;;;CAG7B,CAAC"}
package/dist/pdf.js ADDED
@@ -0,0 +1,166 @@
1
+ import PDFDocument from "pdfkit";
2
+ import pdfParse from "pdf-parse";
3
+ import { createWriteStream, readFileSync } from "node:fs";
4
+ // ── Function Handlers ───────────────────────────────────────────────
5
+ const generate = async (args) => {
6
+ const outputPath = String(args[0] ?? "output.pdf");
7
+ const opts = (typeof args[1] === "object" && args[1] !== null ? args[1] : {});
8
+ return new Promise((resolve, reject) => {
9
+ const doc = new PDFDocument({
10
+ size: String(opts.size ?? "A4"),
11
+ margin: Number(opts.margin ?? 50),
12
+ });
13
+ const stream = createWriteStream(outputPath);
14
+ doc.pipe(stream);
15
+ // Title
16
+ if (opts.title) {
17
+ doc.fontSize(Number(opts.titleSize ?? 24)).font("Helvetica-Bold").text(String(opts.title), { align: "center" });
18
+ doc.moveDown();
19
+ }
20
+ // Author
21
+ if (opts.author) {
22
+ doc.fontSize(12).font("Helvetica").text(`By: ${opts.author}`, { align: "center" });
23
+ doc.moveDown(2);
24
+ }
25
+ // Content
26
+ if (opts.content) {
27
+ doc.fontSize(Number(opts.fontSize ?? 12)).font("Helvetica").text(String(opts.content));
28
+ }
29
+ // Sections
30
+ if (Array.isArray(opts.sections)) {
31
+ for (const section of opts.sections) {
32
+ if (section.heading) {
33
+ doc.moveDown().fontSize(Number(section.headingSize ?? 18)).font("Helvetica-Bold").text(String(section.heading));
34
+ doc.moveDown(0.5);
35
+ }
36
+ if (section.text) {
37
+ doc.fontSize(Number(section.fontSize ?? 12)).font("Helvetica").text(String(section.text));
38
+ }
39
+ if (section.list && Array.isArray(section.list)) {
40
+ doc.fontSize(12).font("Helvetica");
41
+ for (const item of section.list) {
42
+ doc.text(` • ${item}`);
43
+ }
44
+ }
45
+ if (section.pageBreak)
46
+ doc.addPage();
47
+ }
48
+ }
49
+ // Footer
50
+ if (opts.footer) {
51
+ const pages = doc.bufferedPageRange();
52
+ for (let i = 0; i < pages.count; i++) {
53
+ doc.switchToPage(i);
54
+ doc.fontSize(10).font("Helvetica").text(String(opts.footer), 50, doc.page.height - 50, { align: "center", width: doc.page.width - 100 });
55
+ }
56
+ }
57
+ doc.end();
58
+ stream.on("finish", () => resolve({ path: outputPath, pages: doc.bufferedPageRange().count }));
59
+ stream.on("error", reject);
60
+ });
61
+ };
62
+ const parse = async (args) => {
63
+ const filePath = String(args[0] ?? "");
64
+ const buffer = readFileSync(filePath);
65
+ const data = await pdfParse(buffer);
66
+ return {
67
+ text: data.text,
68
+ pages: data.numpages,
69
+ info: data.info,
70
+ metadata: data.metadata,
71
+ };
72
+ };
73
+ const extractText = async (args) => {
74
+ const filePath = String(args[0] ?? "");
75
+ const buffer = readFileSync(filePath);
76
+ const data = await pdfParse(buffer);
77
+ return data.text;
78
+ };
79
+ const pageCount = async (args) => {
80
+ const filePath = String(args[0] ?? "");
81
+ const buffer = readFileSync(filePath);
82
+ const data = await pdfParse(buffer);
83
+ return data.numpages;
84
+ };
85
+ const metadata = async (args) => {
86
+ const filePath = String(args[0] ?? "");
87
+ const buffer = readFileSync(filePath);
88
+ const data = await pdfParse(buffer);
89
+ return { info: data.info, metadata: data.metadata, pages: data.numpages };
90
+ };
91
+ const generateTable = async (args) => {
92
+ const outputPath = String(args[0] ?? "table.pdf");
93
+ const headers = Array.isArray(args[1]) ? args[1].map(String) : [];
94
+ const rows = Array.isArray(args[2]) ? args[2] : [];
95
+ const opts = (typeof args[3] === "object" && args[3] !== null ? args[3] : {});
96
+ return new Promise((resolve, reject) => {
97
+ const doc = new PDFDocument({ size: "A4", margin: 40, layout: opts.landscape ? "landscape" : "portrait" });
98
+ const stream = createWriteStream(outputPath);
99
+ doc.pipe(stream);
100
+ if (opts.title) {
101
+ doc.fontSize(16).font("Helvetica-Bold").text(String(opts.title), { align: "center" });
102
+ doc.moveDown();
103
+ }
104
+ const colWidth = (doc.page.width - 80) / headers.length;
105
+ const startX = 40;
106
+ let y = doc.y;
107
+ // Headers
108
+ doc.fontSize(10).font("Helvetica-Bold");
109
+ headers.forEach((h, i) => { doc.text(h, startX + i * colWidth, y, { width: colWidth, align: "left" }); });
110
+ y += 20;
111
+ doc.moveTo(startX, y).lineTo(doc.page.width - 40, y).stroke();
112
+ y += 5;
113
+ // Rows
114
+ doc.font("Helvetica").fontSize(9);
115
+ for (const row of rows) {
116
+ const cells = Array.isArray(row) ? row.map(String) : Object.values(row).map(String);
117
+ if (y > doc.page.height - 60) {
118
+ doc.addPage();
119
+ y = 40;
120
+ }
121
+ cells.forEach((cell, i) => { doc.text(cell, startX + i * colWidth, y, { width: colWidth, align: "left" }); });
122
+ y += 18;
123
+ }
124
+ doc.end();
125
+ stream.on("finish", () => resolve({ path: outputPath }));
126
+ stream.on("error", reject);
127
+ });
128
+ };
129
+ const generateFromHtml = async (args) => {
130
+ const outputPath = String(args[0] ?? "output.pdf");
131
+ const html = String(args[1] ?? "");
132
+ // Simple HTML to text conversion for PDFKit (basic support)
133
+ const text = html
134
+ .replace(/<h1[^>]*>(.*?)<\/h1>/gi, (_, t) => `\n\n### ${t}\n`)
135
+ .replace(/<h2[^>]*>(.*?)<\/h2>/gi, (_, t) => `\n\n## ${t}\n`)
136
+ .replace(/<h3[^>]*>(.*?)<\/h3>/gi, (_, t) => `\n# ${t}\n`)
137
+ .replace(/<p[^>]*>(.*?)<\/p>/gi, (_, t) => `${t}\n\n`)
138
+ .replace(/<br\s*\/?>/gi, "\n")
139
+ .replace(/<li[^>]*>(.*?)<\/li>/gi, (_, t) => `• ${t}\n`)
140
+ .replace(/<[^>]+>/g, "")
141
+ .replace(/&amp;/g, "&")
142
+ .replace(/&lt;/g, "<")
143
+ .replace(/&gt;/g, ">")
144
+ .replace(/&quot;/g, '"')
145
+ .replace(/&#39;/g, "'")
146
+ .trim();
147
+ return await generate([outputPath, { content: text }]);
148
+ };
149
+ // ── Exports ─────────────────────────────────────────────────────────
150
+ export const PdfFunctions = {
151
+ generate, parse, extractText, pageCount, metadata, generateTable, generateFromHtml,
152
+ };
153
+ export const PdfFunctionMetadata = {
154
+ generate: { description: "Generate a PDF document with title, content, and sections", parameters: [{ name: "outputPath", dataType: "string", description: "Output file path", formInputType: "text", required: true }, { name: "options", dataType: "object", description: "{title, author, content, sections, footer, size, margin, fontSize}", formInputType: "text", required: true }], returnType: "object", returnDescription: "{path, pages}", example: 'pdf.generate "./report.pdf" {"title": "Monthly Report", "content": "..."}' },
155
+ parse: { description: "Parse a PDF file and extract text, metadata, and page count", parameters: [{ name: "filePath", dataType: "string", description: "Path to PDF file", formInputType: "text", required: true }], returnType: "object", returnDescription: "{text, pages, info, metadata}", example: 'pdf.parse "./document.pdf"' },
156
+ extractText: { description: "Extract all text from a PDF file", parameters: [{ name: "filePath", dataType: "string", description: "Path to PDF file", formInputType: "text", required: true }], returnType: "string", returnDescription: "Extracted text content", example: 'pdf.extractText "./document.pdf"' },
157
+ pageCount: { description: "Get the number of pages in a PDF", parameters: [{ name: "filePath", dataType: "string", description: "Path to PDF file", formInputType: "text", required: true }], returnType: "number", returnDescription: "Page count", example: 'pdf.pageCount "./document.pdf"' },
158
+ metadata: { description: "Get PDF metadata (author, title, creation date, etc.)", parameters: [{ name: "filePath", dataType: "string", description: "Path to PDF file", formInputType: "text", required: true }], returnType: "object", returnDescription: "{info, metadata, pages}", example: 'pdf.metadata "./document.pdf"' },
159
+ generateTable: { description: "Generate a PDF with a formatted table", parameters: [{ name: "outputPath", dataType: "string", description: "Output file path", formInputType: "text", required: true }, { name: "headers", dataType: "array", description: "Column headers", formInputType: "text", required: true }, { name: "rows", dataType: "array", description: "Array of row arrays or objects", formInputType: "text", required: true }, { name: "options", dataType: "object", description: "{title, landscape}", formInputType: "text", required: false }], returnType: "object", returnDescription: "{path}", example: 'pdf.generateTable "./table.pdf" ["Name","Email"] $rows' },
160
+ generateFromHtml: { description: "Generate a PDF from basic HTML content", parameters: [{ name: "outputPath", dataType: "string", description: "Output file path", formInputType: "text", required: true }, { name: "html", dataType: "string", description: "HTML content", formInputType: "text", required: true }], returnType: "object", returnDescription: "{path, pages}", example: 'pdf.generateFromHtml "./output.pdf" "<h1>Title</h1><p>Content</p>"' },
161
+ };
162
+ export const PdfModuleMetadata = {
163
+ description: "PDF generation (documents, tables, HTML-to-PDF) and parsing (text extraction, metadata, page count)",
164
+ methods: ["generate", "parse", "extractText", "pageCount", "metadata", "generateTable", "generateFromHtml"],
165
+ };
166
+ //# sourceMappingURL=pdf.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pdf.js","sourceRoot":"","sources":["../src/pdf.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,15 @@
1
+ {
2
+ "name": "@robinpath/pdf",
3
+ "version": "0.1.0",
4
+ "description": "PDF generation from HTML/text and text extraction from PDFs",
5
+ "publishConfig": { "access": "public" },
6
+ "type": "module",
7
+ "main": "dist/index.js",
8
+ "types": "dist/index.d.ts",
9
+ "exports": { ".": { "import": "./dist/index.js", "types": "./dist/index.d.ts" } },
10
+ "files": ["dist"],
11
+ "scripts": { "build": "tsc", "test": "node --import tsx --test tests/*.test.ts" },
12
+ "peerDependencies": { "@wiredwp/robinpath": ">=0.20.0" },
13
+ "dependencies": { "pdfkit": "^0.15.0", "pdf-parse": "^1.1.1" },
14
+ "devDependencies": { "@wiredwp/robinpath": "^0.30.1", "@types/pdfkit": "^0.13.0", "tsx": "^4.19.0", "typescript": "^5.6.0" }
15
+ }