Skip to content

Commit

Permalink
Add a comparison with other tools
Browse files Browse the repository at this point in the history
  • Loading branch information
attah committed Sep 30, 2023
1 parent b8cc61c commit db6d2c5
Showing 1 changed file with 54 additions and 0 deletions.
54 changes: 54 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,3 +36,57 @@ Install dependencies:
Build:

`make -j$(nproc)`

## pdf2printable vs the competition

(As of 2023-07-25)

A bit of friendly comparison helps make sure the featureset is well-rounded and performance is on par.

### Basics
| | PDF renderer | Language | License |
| ---------------------------------------------------- | --------------- | ----------- | ------------------ |
| pdf2printable | Poppler | C++ | GPL3 |
| [ipptransform](https://github.com/istopwg/ippsample) | XPDF or Poppler | C | Apache 2.0 |
| [mutool](https://mupdf.com/) | MuPDF | C | AGPL or commercial |
| [jrender](https://github.com/HPInc/jipp) | Apache PDFBox | Java/Kotlin | MIT |

Not in the running: cups-filters (can't get them to run outside CUPS), Android/Apple built-ins and Google Cloud Print (not available standalone).

### Format support

| | PDF | Postscript | PWG | URF | PCLm | PCL |
| ------------- | --- | ---------- | --- | --- | ---- | --- |
| pdf2printable |||||||
| ipptransform |||||||
| mutool |||||||
| jrender |||||||

Good printers should support PDF or PWG. After that, URF is the biggest enabler.
Postscript and PCL enable some more printers. It is not clear to me which is the bigger enabler nowadays.
However, PCL comes in many different dialects (even beyond the versions) so it might not work across all printers.
I have not yet seen a printer support PCLm and none of the other formats that pdf2printable supports.

### Features

| | back-xform¹ | color modes ²| rotate-to-fit | page selection | stdout |
| ------------- | ---------------- | ----------------- | ------------- | -------------- | --------- |
| pdf2printable || ✔(6) ||| ✔(+stdin) |
| ipptransform || ✔(5) ||||
| mutool || ✔(3?) ||||
| jrender || ✘(1) ||||

1. PWG, URF and PCLm printers may require the client to help transform backside pages for duplex printing, or they will come out incorrectly.
2. Two color modes (sRGB24 and sGray8) is enough for basically anything.

### Performance
Measured with a representative 90-page document for PWG-raster at 600 DPI on a AMD 3950X.

| | Speed (RGB) | Speed (Gray) | Size (RGB) | Size (Gray) |
| --------------- | ----------- | -------------| ----------- | ----------- |
| pdf2printable | 9s | 9s | 152MB | 76MB |
| ipptransform | 38s | 38s | 155MB | 78MB |
| mutool (AA off) | 15s | 22s | 152MB | 76MB |
| jrender | 23s | DNF | 334MB¹ | DNF |

1. Antialiasing seems to be enabled and would account for the size difference. However, at these resolutions that doesn't really provide much benefit. For pdf2printable and mutool it can be optionally enabled/disabled.

0 comments on commit db6d2c5

Please sign in to comment.