How the PCL to PDF converter works

What happens to your file, which printer languages are supported, and the limits. No AI is involved; conversion is done by GhostPDL.

Where your file goes

Converted entirely in your browser. When you choose a file, the page downloads the conversion engine, GhostPDL 10.08.0 compiled to WebAssembly, and runs it in a separate background thread on your device. Your file is copied into that thread's memory, converted, and the PDF is handed back to the page. Nothing is uploaded. Closing or reloading the page discards both.

Step by step

  1. Detect: the first 64 KB are checked for known signatures: PJL headers and their ENTER LANGUAGE value, the PCL XL stream header, PCL 5 escape sequences, PostScript and PDF headers, and signatures of unsupported formats. The file name is ignored. Anything not clearly recognized is reported as unknown rather than guessed at.
  2. Load the engine: GhostPCL (gpcl6, about 5–6 MB compressed) for PCL 5 and PCL XL, or Ghostscript (gs, about 7–8 MB compressed) for PostScript. All fonts and resources are built in, so nothing else is fetched.
  3. Convert: the engine runs with a fixed set of options (safe mode, PDF output device, at most 500 pages). Nothing from your file is used as an option.
  4. Verify: the output must be a non-empty PDF with at least one page, or the conversion is reported as failed.

Supported formats

FormatConverted?Notes
PCL 5 (5e, 5c)YesText with the printer's built-in fonts, raster graphics, color PCL 5c. Also PCL 3 raster from older DeskJet drivers, including KCMY color.
PCL XL / PCL 6YesMono and color, multi-page.
PostScriptYesOutput of PostScript printer drivers.
PJL-wrapped jobsYesPrinter job commands around PCL, PCL XL or PostScript are handled.
PDFAlready a PDFSome “print to file” outputs are PDFs; they're given back with a .pdf name.
Host-based (GDI) formatsNoHP ZjStream, XQX, JetReady and LIDIL, Canon CAPT and UFR II, Samsung/Xerox SPL, Brother HBP, Konica Minolta LAVAFLOW, Oki HIPERC, Fuji Xerox/Dell HBPL, Lexmark SLX and similar. Pages are pre-rendered for one printer model.
Inkjet raster formatsNoHP PCL3GUI, Epson ESC/P and ESC/P-R, PWG, CUPS and Apple URF raster.
XPS, HP-GL/2 plotter filesNoNot in this version.

Limits

  • Files up to 100 MB.
  • A conversion that runs longer than 3 minutes is stopped by ending its background thread.
  • The engine can use up to 2 GB of browser memory; phones may allow less.
  • PDFs are capped at 500 pages.
  • PostScript text in Chinese, Japanese or Korean fonts that aren't included in the file won't render, because the fallback CJK font is left out to keep the download small.
  • A truncated file may convert partially without an error. Check the page count.
  • Host-based jobs that label themselves as PCL, such as Brother HBP, are recognized by their private compression, but an unfamiliar one could still produce unreadable pages.
  • Some unusual driver output converts without an error but renders incorrectly, the same way it does in desktop GhostPCL. Check the pages.

Tested with

The converter is tested against print jobs generated by Ghostscript's LaserJet (PCL 5), Color LaserJet (PCL 5c), DeskJet 500C (PCL 3) and PCL XL mono and color drivers, hand-written PCL 5 text jobs using the printer's built-in fonts, PJL-wrapped PCL XL and PostScript jobs, and damaged, empty, random and unsupported files. Output was compared page by page with the native GhostPCL and Ghostscript programs and was pixel-identical to theirs — that means the in-browser engine matches the desktop one, not that a page matches what a physical printer would have printed. It is also tested with real driver output: GhostPDL's sample jobs, the macOS CUPS LaserJet, DeskJet, Epson and PostScript drivers, open-source host-based drivers, and 45 public spool files from Windows PCL 5, PCL 6 and PostScript drivers.

Open source

GhostPDL is licensed under the GNU AGPL 3.0. The exact source, build script and patches used for this site, and this site's own source code, are listed on the source page.