-
Notifications
You must be signed in to change notification settings - Fork 10.6k
Closed
Labels
Description
Attach (recommended) or Link to PDF file here:
https://github.com/liu-dongyu/demo/blob/main/pdf/test.pdf
Configuration:
- Web browser and its version: Chrome 98.0.4758.80
- Operating system and its version: MacOS 10.15.5
- PDF.js version: v2.12.313 and v2.3.200
- Is a browser extension: no
Steps to reproduce the problem:
- A pdf online url which support range request
- set
disableAutoFetch: truedisableStream: truerangeChunkSize: 65536 * 16to getDocument getPage(1)thenrender
What is the expected behavior? (add screenshot)
With v2.12.313,first page need 60 range request,online demo
<script src="https://cdn.bootcdn.net/ajax/libs/pdf.js/2.12.313/pdf.min.js"></script>pdfjsLib.GlobalWorkerOptions.workerSrc = "https://cdn.bootcdn.net/ajax/libs/pdf.js/2.12.313/pdf.worker.min.js";
const loadingTask = pdfjsLib.getDocument({
url: "xx",
disableAutoFetch: true,
disableStream: true,
rangeChunkSize: 65536 * 16,
});
(async function () {
const pdfDocument = await loadingTask.promise;
const page = await pdfDocument.getPage(1);
page.render({
canvasContext: document
.getElementById("pageContainer")
.getContext("2d"),
viewport: page.getViewport({ scale: 1 }),
});
})();With v2.3.200,first page only need 3 range request (3 is the expected request times) online demo
<script src="https://cdn.bootcdn.net/ajax/libs/pdf.js/2.3.200/pdf.min.js"></script>pdfjsLib.GlobalWorkerOptions.workerSrc = "https://cdn.bootcdn.net/ajax/libs/pdf.js/2.3.200/pdf.worker.min.js";
const loadingTask = pdfjsLib.getDocument({
url: "xx",
disableAutoFetch: true,
disableStream: true,
rangeChunkSize: 65536 * 16,
});
(async function () {
const pdfDocument = await loadingTask.promise;
const page = await pdfDocument.getPage(1);
page.render({
canvasContext: document
.getElementById("pageContainer")
.getContext("2d"),
viewport: page.getViewport({ scale: 1 }),
});
})();What went wrong? (add screenshot)
Why v2.12.313 need too many chunks to render first page and it is possible to optimize it ?

