pdf-to-markdown-mcp 1.0.2 → 1.0.4

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/dist/src/index.js CHANGED
@@ -61,9 +61,10 @@ async function main() {
61
61
  if (!apiUrl || !apiKey) {
62
62
  throw new Error("Missing required environment variables: QWEN_API_URL and QWEN_API_KEY must be set");
63
63
  }
64
+ const se = "1.0.4";
64
65
  const server = new McpServer({
65
66
  name: "pdf-to-markdown-mcp",
66
- version: "1.0.2",
67
+ version: se,
67
68
  });
68
69
  // Register tool
69
70
  server.registerTool("convert_pdf_page_to_markdown", {
@@ -120,7 +121,7 @@ async function main() {
120
121
  // Start the server
121
122
  const transport = new StdioServerTransport();
122
123
  await server.connect(transport);
123
- console.error("PDF to Markdown MCP server running on stdio");
124
+ console.error(`PDF to Markdown MCP server (v${se}) running on stdio`);
124
125
  }
125
126
  try {
126
127
  await main();
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"pdfConverter.d.ts","sourceRoot":"","sources":["../../src/pdfConverter.ts"],"names":[],"mappings":"AAcA;;;;GAIG;AACH,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,CAAC,CAoCjB"}
1
+ {"version":3,"file":"pdfConverter.d.ts","sourceRoot":"","sources":["../../src/pdfConverter.ts"],"names":[],"mappings":"AAwDA;;;;GAIG;AACH,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,CAAC,CAyCjB"}
@@ -1,6 +1,10 @@
1
1
  // Polyfill DOM APIs required by pdfjs-dist in Node.js environment
2
- import { createCanvas } from "canvas";
2
+ import { createCanvas, Canvas } from "canvas";
3
3
  import * as fs from "node:fs/promises";
4
+ // Polyfill Canvas for pdfjs-dist
5
+ if (typeof globalThis !== "undefined") {
6
+ globalThis.Canvas = Canvas;
7
+ }
4
8
  // Lazy load pdfjs-dist
5
9
  let pdfjsLib = null;
6
10
  async function getPdfjsLib() {
@@ -10,6 +14,40 @@ async function getPdfjsLib() {
10
14
  }
11
15
  return pdfjsLib;
12
16
  }
17
+ class NodeCanvasFactory {
18
+ create(width, height) {
19
+ if (width <= 0 || height <= 0) {
20
+ throw new Error("Invalid canvas size");
21
+ }
22
+ const canvas = createCanvas(width, height);
23
+ const context = canvas.getContext("2d");
24
+ return {
25
+ canvas,
26
+ context,
27
+ };
28
+ }
29
+ reset(canvasAndContext, width, height) {
30
+ if (!canvasAndContext.canvas) {
31
+ throw new Error("Canvas is not specified");
32
+ }
33
+ if (width <= 0 || height <= 0) {
34
+ throw new Error("Invalid canvas size");
35
+ }
36
+ canvasAndContext.canvas.width = width;
37
+ canvasAndContext.canvas.height = height;
38
+ }
39
+ destroy(canvasAndContext) {
40
+ if (!canvasAndContext.canvas) {
41
+ throw new Error("Canvas is not specified");
42
+ }
43
+ // Zeroing the width and height cause Firefox to release graphics
44
+ // resources immediately, which can be important with complex documents.
45
+ canvasAndContext.canvas.width = 0;
46
+ canvasAndContext.canvas.height = 0;
47
+ canvasAndContext.canvas = null;
48
+ canvasAndContext.context = null;
49
+ }
50
+ }
13
51
  /**
14
52
  * Convert a PDF page to a PNG image buffer
15
53
  *
@@ -34,9 +72,13 @@ export async function convertPdfPageToImage(pdfPath, pageNumber) {
34
72
  const viewport = page.getViewport({ scale: 1 });
35
73
  const canvas = createCanvas(viewport.width, viewport.height);
36
74
  const context = canvas.getContext("2d");
75
+ // Set white background
76
+ context.fillStyle = "white";
77
+ context.fillRect(0, 0, canvas.width, canvas.height);
37
78
  const renderContext = {
38
79
  canvasContext: context,
39
80
  viewport: viewport,
81
+ canvasFactory: new NodeCanvasFactory(),
40
82
  background: "white",
41
83
  };
42
84
  await page.render(renderContext).promise;
@@ -1 +1 @@
1
- {"version":3,"file":"pdfConverter.js","sourceRoot":"","sources":["../../src/pdfConverter.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAEvC,uBAAuB;AACvB,IAAI,QAAQ,GAAQ,IAAI,CAAC;AACzB,KAAK,UAAU,WAAW;IACxB,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,aAAa;QACb,QAAQ,GAAG,MAAM,MAAM,CAAC,iCAAiC,CAAC,CAAC;IAC7D,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,OAAe,EACf,UAAkB;IAElB,MAAM,QAAQ,GAAG,MAAM,WAAW,EAAE,CAAC;IACrC,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAE3C,MAAM,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC;QACvC,IAAI,EAAE,IAAI,UAAU,CAAC,OAAO,CAAC;QAC7B,cAAc,EAAE,KAAK;QACrB,eAAe,EAAE,KAAK;QACtB,cAAc,EAAE,IAAI;QACpB,0DAA0D;QAC1D,eAAe,EAAE,IAAI;KACtB,CAAC,CAAC;IAEH,MAAM,WAAW,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC;IAE9C,IAAI,UAAU,GAAG,CAAC,IAAI,UAAU,GAAG,WAAW,CAAC,QAAQ,EAAE,CAAC;QACxD,MAAM,IAAI,KAAK,CACb,gCAAgC,WAAW,CAAC,QAAQ,SAAS,CAC9D,CAAC;IACJ,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACnD,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;IAEhD,MAAM,MAAM,GAAG,YAAY,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC7D,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAExC,MAAM,aAAa,GAAG;QACpB,aAAa,EAAE,OAAc;QAC7B,QAAQ,EAAE,QAAQ;QAClB,UAAU,EAAE,OAAO;KACpB,CAAC;IAEF,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC;IAEzC,OAAO,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;AACtC,CAAC"}
1
+ {"version":3,"file":"pdfConverter.js","sourceRoot":"","sources":["../../src/pdfConverter.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pdf-to-markdown-mcp",
3
- "version": "1.0.2",
3
+ "version": "1.0.4",
4
4
  "description": "MCP server that converts PDF pages to markdown using Qwen VL model",
5
5
  "type": "module",
6
6
  "main": "dist/src/index.js",
package/src/index.ts CHANGED
@@ -96,9 +96,10 @@ async function main() {
96
96
  );
97
97
  }
98
98
 
99
+ const se = "1.0.4";
99
100
  const server = new McpServer({
100
101
  name: "pdf-to-markdown-mcp",
101
- version: "1.0.2",
102
+ version: se,
102
103
  });
103
104
 
104
105
  // Register tool
@@ -178,7 +179,7 @@ async function main() {
178
179
  const transport = new StdioServerTransport();
179
180
  await server.connect(transport);
180
181
 
181
- console.error("PDF to Markdown MCP server running on stdio");
182
+ console.error(`PDF to Markdown MCP server (v${se}) running on stdio`);
182
183
  }
183
184
 
184
185
  try {
@@ -1,7 +1,12 @@
1
1
  // Polyfill DOM APIs required by pdfjs-dist in Node.js environment
2
- import { createCanvas } from "canvas";
2
+ import { createCanvas, Canvas } from "canvas";
3
3
  import * as fs from "node:fs/promises";
4
4
 
5
+ // Polyfill Canvas for pdfjs-dist
6
+ if (typeof globalThis !== "undefined") {
7
+ (globalThis as any).Canvas = Canvas;
8
+ }
9
+
5
10
  // Lazy load pdfjs-dist
6
11
  let pdfjsLib: any = null;
7
12
  async function getPdfjsLib() {
@@ -12,6 +17,43 @@ async function getPdfjsLib() {
12
17
  return pdfjsLib;
13
18
  }
14
19
 
20
+ class NodeCanvasFactory {
21
+ create(width: number, height: number) {
22
+ if (width <= 0 || height <= 0) {
23
+ throw new Error("Invalid canvas size");
24
+ }
25
+ const canvas = createCanvas(width, height);
26
+ const context = canvas.getContext("2d");
27
+ return {
28
+ canvas,
29
+ context,
30
+ };
31
+ }
32
+
33
+ reset(canvasAndContext: any, width: number, height: number) {
34
+ if (!canvasAndContext.canvas) {
35
+ throw new Error("Canvas is not specified");
36
+ }
37
+ if (width <= 0 || height <= 0) {
38
+ throw new Error("Invalid canvas size");
39
+ }
40
+ canvasAndContext.canvas.width = width;
41
+ canvasAndContext.canvas.height = height;
42
+ }
43
+
44
+ destroy(canvasAndContext: any) {
45
+ if (!canvasAndContext.canvas) {
46
+ throw new Error("Canvas is not specified");
47
+ }
48
+ // Zeroing the width and height cause Firefox to release graphics
49
+ // resources immediately, which can be important with complex documents.
50
+ canvasAndContext.canvas.width = 0;
51
+ canvasAndContext.canvas.height = 0;
52
+ canvasAndContext.canvas = null;
53
+ canvasAndContext.context = null;
54
+ }
55
+ }
56
+
15
57
  /**
16
58
  * Convert a PDF page to a PNG image buffer
17
59
  *
@@ -47,9 +89,14 @@ export async function convertPdfPageToImage(
47
89
  const canvas = createCanvas(viewport.width, viewport.height);
48
90
  const context = canvas.getContext("2d");
49
91
 
92
+ // Set white background
93
+ context.fillStyle = "white";
94
+ context.fillRect(0, 0, canvas.width, canvas.height);
95
+
50
96
  const renderContext = {
51
97
  canvasContext: context as any,
52
98
  viewport: viewport,
99
+ canvasFactory: new NodeCanvasFactory(),
53
100
  background: "white",
54
101
  };
55
102