mirror of
https://github.com/mozilla/pdf.js.git
synced 2025-04-23 08:38:06 +02:00
[api-minor] Use the Fetch API, when supported, to load PDF documents in Node.js environments
Given that modern Node.js versions now implement support for a fair number of "browser" APIs, we can utilize the standard Fetch API to load PDF documents that are specified via http/https URLs. Please find compatibility information at: - https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API#browser_compatibility - https://nodejs.org/dist/latest-v18.x/docs/api/globals.html#fetch - https://developer.mozilla.org/en-US/docs/Web/API/Response#browser_compatibility - https://nodejs.org/dist/latest-v18.x/docs/api/globals.html#response
This commit is contained in:
parent
72b8b29147
commit
eded037d06
6 changed files with 123 additions and 54 deletions
|
@ -419,7 +419,16 @@ function getDocument(src) {
|
|||
PDFJSDev.test("GENERIC") &&
|
||||
isNodeJS
|
||||
) {
|
||||
return new PDFNodeStream(params);
|
||||
const isFetchSupported = function () {
|
||||
return (
|
||||
typeof fetch !== "undefined" &&
|
||||
typeof Response !== "undefined" &&
|
||||
"body" in Response.prototype
|
||||
);
|
||||
};
|
||||
return isFetchSupported() && isValidFetchUrl(params.url)
|
||||
? new PDFFetchStream(params)
|
||||
: new PDFNodeStream(params);
|
||||
}
|
||||
return isValidFetchUrl(params.url)
|
||||
? new PDFFetchStream(params)
|
||||
|
@ -762,6 +771,9 @@ class PDFDocumentProxy {
|
|||
|
||||
if (typeof PDFJSDev === "undefined" || PDFJSDev.test("TESTING")) {
|
||||
// For testing purposes.
|
||||
Object.defineProperty(this, "getNetworkStreamName", {
|
||||
value: () => this._transport.getNetworkStreamName(),
|
||||
});
|
||||
Object.defineProperty(this, "getXFADatasets", {
|
||||
value: () => this._transport.getXFADatasets(),
|
||||
});
|
||||
|
@ -2344,6 +2356,9 @@ class WorkerTransport {
|
|||
|
||||
if (typeof PDFJSDev === "undefined" || PDFJSDev.test("TESTING")) {
|
||||
// For testing purposes.
|
||||
Object.defineProperty(this, "getNetworkStreamName", {
|
||||
value: () => networkStream?.constructor?.name || null,
|
||||
});
|
||||
Object.defineProperty(this, "getXFADatasets", {
|
||||
value: () =>
|
||||
this.messageHandler.sendWithPromise("GetXFADatasets", null),
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue