Skip to content

Improve client-side support #320

@tim-we

Description

@tim-we

First of all thanks for this library.

Your README states:

A Portable Document Format (PDF) generation library targeting both the server- and client-side.

However the library does not work out of the box in a browser environment. Document extends Readable which uses Stream which is not defined in a browser env. To make it work you have to add polyfills. Using vite I can make it work using this configuration:

import { defineConfig } from "vite";
import { nodePolyfills } from "vite-plugin-node-polyfills";

export default defineConfig({
  plugins: [
    nodePolyfills({
      include: ["stream"]
    }),
  ]
});

I think there should be at least some documentation on how to use the library in a client-side environment if that is explicitly targeted. (Related: #207)

I'm happy to provide a PR with a new markdown file stating the above. Is there a chance that would be accepted?

I also think it would be a good idea to add a check for the existence of Stream before using it and throw a error with custom message explaining the problem and perhaps linking to the documentation (hopefully existing by then). That check should be placed in the Document constructor before

pdfjs/lib/document.js

Lines 25 to 27 in b6cdd70

super({
highWaterMark: opts.highWaterMark || 16384, // 16kB
});

Also happy to provide a PR for that.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions