Skip to content

Commit 525db91

Browse files
committed
Add a pdf.renderer.js entrypoint and gulp function to build renderer
1 parent a6ed00a commit 525db91

File tree

3 files changed

+46
-3
lines changed

3 files changed

+46
-3
lines changed

gulpfile.mjs

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -589,6 +589,18 @@ function createWorkerBundle(defines) {
589589
.pipe(webpack2Stream(workerFileConfig));
590590
}
591591

592+
function createRendererWorkerBundle(defines) {
593+
const rendererWorkerFileConfig = createWebpackConfig(defines, {
594+
filename: defines.MINIFIED ? "pdf.renderer.min.mjs" : "pdf.renderer.mjs",
595+
library: {
596+
type: "module",
597+
},
598+
});
599+
return gulp
600+
.src("./src/pdf.renderer.js", { encoding: false })
601+
.pipe(webpack2Stream(rendererWorkerFileConfig));
602+
}
603+
592604
function createWebBundle(defines, options) {
593605
const viewerFileConfig = createWebpackConfig(
594606
defines,
@@ -1103,6 +1115,7 @@ function buildGeneric(defines, dir) {
11031115
return ordered([
11041116
createMainBundle(defines).pipe(gulp.dest(dir + "build")),
11051117
createWorkerBundle(defines).pipe(gulp.dest(dir + "build")),
1118+
createRendererWorkerBundle(defines).pipe(gulp.dest(dir + "build")),
11061119
createSandboxBundle(defines).pipe(gulp.dest(dir + "build")),
11071120
createWebBundle(defines, {
11081121
defaultPreferencesDir: defines.SKIP_BABEL
@@ -1293,6 +1306,7 @@ function buildMinified(defines, dir) {
12931306
return ordered([
12941307
createMainBundle(defines).pipe(gulp.dest(dir + "build")),
12951308
createWorkerBundle(defines).pipe(gulp.dest(dir + "build")),
1309+
createRendererWorkerBundle(defines).pipe(gulp.dest(dir + "build")),
12961310
createSandboxBundle(defines).pipe(gulp.dest(dir + "build")),
12971311
createImageDecodersBundle({ ...defines, IMAGE_DECODERS: true }).pipe(
12981312
gulp.dest(dir + "image_decoders")
@@ -1438,6 +1452,9 @@ gulp.task(
14381452
createWorkerBundle(defines).pipe(
14391453
gulp.dest(MOZCENTRAL_CONTENT_DIR + "build")
14401454
),
1455+
createRendererWorkerBundle(defines).pipe(
1456+
gulp.dest(MOZCENTRAL_CONTENT_DIR + "build")
1457+
),
14411458
createWebBundle(defines, { defaultPreferencesDir: "mozcentral/" }).pipe(
14421459
gulp.dest(MOZCENTRAL_CONTENT_DIR + "web")
14431460
),
@@ -1535,6 +1552,9 @@ gulp.task(
15351552
createWorkerBundle(defines).pipe(
15361553
gulp.dest(CHROME_BUILD_CONTENT_DIR + "build")
15371554
),
1555+
createRendererWorkerBundle(defines).pipe(
1556+
gulp.dest(CHROME_BUILD_CONTENT_DIR + "build")
1557+
),
15381558
createSandboxBundle(defines).pipe(
15391559
gulp.dest(CHROME_BUILD_CONTENT_DIR + "build")
15401560
),

src/display/api.js

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2345,9 +2345,14 @@ class RendererWorker {
23452345
#handler;
23462346

23472347
constructor(channelPort, enableHWA) {
2348-
this.#worker = new Worker("../src/display/renderer_worker.js", {
2349-
type: "module",
2350-
});
2348+
const src =
2349+
// eslint-disable-next-line no-nested-ternary
2350+
typeof PDFJSDev === "undefined"
2351+
? "../src/pdf.worker.js"
2352+
: PDFJSDev.test("MOZCENTRAL")
2353+
? "resource://pdf.js/build/pdf.worker.mjs"
2354+
: "../build/pdf.worker.mjs";
2355+
this.#worker = new Worker(src, { type: "module" });
23512356
this.#handler = new MessageHandler("main", "renderer", this.#worker);
23522357
this.#handler.send("configure", { channelPort, enableHWA }, [channelPort]);
23532358
this.#handler.on("ready", () => {

src/pdf.renderer.js

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
/* Copyright 2025 Mozilla Foundation
2+
*
3+
* Licensed under the Apache License, Version 2.0 (the "License");
4+
* you may not use this file except in compliance with the License.
5+
* You may obtain a copy of the License at
6+
*
7+
* http://www.apache.org/licenses/LICENSE-2.0
8+
*
9+
* Unless required by applicable law or agreed to in writing, software
10+
* distributed under the License is distributed on an "AS IS" BASIS,
11+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
* See the License for the specific language governing permissions and
13+
* limitations under the License.
14+
*/
15+
16+
import { RendererMessageHandler } from "./display/renderer_worker.js";
17+
18+
export { RendererMessageHandler };

0 commit comments

Comments
 (0)