diff mupdf-source/platform/wasm/examples/streams/fetch-stream.js @ 2:b50eed0cc0ef upstream

ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4. The directory name has changed: no version number in the expanded directory now.
author Franz Glasner <fzglas.hg@dom66.de>
date Mon, 15 Sep 2025 11:43:07 +0200
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mupdf-source/platform/wasm/examples/streams/fetch-stream.js	Mon Sep 15 11:43:07 2025 +0200
@@ -0,0 +1,50 @@
+"use strict"
+
+import * as mupdf from "mupdf"
+
+class FetchStream {
+	constructor(url) {
+		fetch(url)
+			.then((response) => {
+				if (!response.ok)
+					throw new Error("HTTP " + response.status)
+				return response.arrayBuffer()
+			})
+			.then((buffer) => {
+				this.buffer = new Uint8Array(buffer)
+			})
+	}
+	fileSize() {
+		if (this.buffer)
+			return this.buffer.byteLength
+		return -1 // signal try later
+	}
+	read(memory, offset, size, position) {
+		if (this.buffer) {
+			size = Math.min(size, this.buffer.byteLength - position)
+			memory.set(this.buffer.subarray(position, position + size), offset)
+			return size
+		}
+		return -1 // signal try later
+	}
+	close() {
+		this.buffer = null
+	}
+}
+
+var stm = new mupdf.Stream(new FetchStream("https://mupdf.com/docs/mupdf_explored.pdf"))
+function loop() {
+	try {
+		var doc = mupdf.Document.openDocument(stm, "application/pdf")
+		var n = doc.countPages()
+		console.log("Document has " + n + " pages!")
+	} catch (err) {
+		if (err === "TRYLATER") {
+			console.log("Waiting...")
+			setTimeout(loop, 1000)
+		} else {
+			throw err
+		}
+	}
+}
+loop()