PDF2DJVU(1)
π NAME π
pdf2djvu β creates DjVu files from PDF files β¨
okay so real talk, bestie, you just opened the pdf2djvu manual page (that's the pdf2djvu manual, section 1 β you're literally in the right place π«Ά), and it does exactly one iconic thing: it turns PDFs into DjVu. no cap.
π¦ SYNOPSIS π¦
pdf2djvu [{-o | --output} output-djvu-file] [option...] pdf-file...
pdf2djvu {-i | --indirect} index-djvu-file [option...] pdf-file...
pdf2djvu {--version | --help | -h}
πΈ DESCRIPTION πΈ
This program creates a DjVu file from one or more Portable Document Format files. that's it, that's the vibe π (one DjVu, many PDFs, very main character energy).
β¨ OPTIONS β¨
pdf2djvu accepts the following options:
π Document type, file names π
-o,--output=output-djvu-fileβ generate a bundled multi-page document. write the file into output-djvu-file instead of standard output.-i,--indirect=index-djvu-fileβ generate an indirect multi-page document. use index-djvu-file as the index file name, and put the component files into the same directory. > that directory must already exist and be writable, so don't come crying to me if it doesn't π--page-id-template=templateβ specifies the naming scheme for page identifiers. go read the βTEMPLATE LANGUAGEβ section below for how the template language actually works, iykyk.
The default template is p{page:04*}.djvu.
For portability reasons, page identifiers:
- must consist only of lowercase ASCII letters, digits,
_,+,-and dot, - cannot start with a
+,-or a dot, - cannot contain two consecutive dots,
- must end with the
.djvuor the.djvextension.
--page-id-prefix=prefixβ equivalent to--page-id-template=prefix{page:04*}.djvu. it's giving shortcut, we love that.--page-title-template=templateβ specifies the template for page titles. again, consult the βTEMPLATE LANGUAGEβ section for the template language description.
The default template is {label}.
--no-page-titlesβ don't set page titles. no titles, no notes, just vibes.
π¦ Resolution, page size π¦
-d,--dpi=resolutionβ specifies the desired resolution to resolution dots per inch. The default is300dpi. The allowed range is: 72 β€ resolution β€ 6000.--media-boxβ useMediaBoxto determine page size.CropBoxis used by default.--page-size=widthxheightβ specifies the preferred page size to width pixels Γ height pixels. The actual page size may be altered in order to respect aspect ratio and DjVu limitations on resolution. (This option takes precedence over-d/--dpi.) lowkey bossy but ok π--guess-dpiβ try to guess native resolution by inspecting embedded images. > use with care, bestie. this one is a little chaotic π
π Image quality π
--bg-slices=n+...+n,--bg-slices=n,...,nβ specifies the encoding quality of the IW44 background layer. This option is similar to the-sliceoption ofc44. Consult thec44(1)manual page for details. The default is72+11+10+10.--bg-subsample=nβ specifies the background subsampling ratio. The default is3. Valid values are integers between 1 and 12, inclusive.--fg-colors=defaultβ try to preserve all the foreground layer colors. This is the default. periodt.--fg-colors=webβ reduce foreground layer colors to the web palette (216 colors). > This option is not recommended. noted, bestie π«--fg-colors=nβ use GraphicsMagick to reduce number of distinct colors in the foreground layer to n. Valid values are integers between 1 and 4080. > This option is not recommended. again. just so you know π--fg-colors=blackβ discard any color information from the foreground layer. bye bye color π€--monochromeβ render pages as monochrome bitmaps. With this option,--bg-...and--fg-...options are not respected. like, they simply do not get a say.--loss-level=nβ specifies the aggressiveness of the lossy compression. The default is0(lossless). Valid values are integers between 0 and 200, inclusive. This option is similar to the-lossleveloption ofcjb2; consult thecjb2(1)manual page for details. > This option can be used only if the--monochromeoption is also enabled. no monochrome, no loss level, that's the rule π--lossyβ synonym for--loss-level=100. cute lil nickname fr fr.--anti-aliasβ enable font and vector anti-aliasing. > This option is not recommended. (yes, another one. it's giving "we put it here but please don't" π)
π Extraction π
--no-metadataβ don't extract the metadata.
By default:
- The following entries of the document information dictionary are extracted:
Title,Author,Subject,Creator,Producer,CreationDate,ModDate. Timestamps are formatted according to RFC 3999[1], with date and time components separated by a single space. - The XMP metadata is extracted (or created) and updated accordingly.
Note If multiple input documents are specified, only metadata of the first one is taken into account. first one wins, the rest are just standing there π§
--verbatim-metadataβ keep the original metadata intact. untouched, unbothered, exactly as it was β¨--no-outlineβ don't extract the document outline.--hyperlinks=border-avisβ make hyperlink borders always visible.
By default, a hyperlink border is visible only when the mouse is over the hyperlink. so like, peekaboo behavior.
--hyperlinks=#RRGGBBβ force the specified border color for hyperlinks.--no-hyperlinks,--hyperlinks=noneβ don't extract hyperlinks. no links, no problems π«Ά--no-textβ don't extract the text.--wordsβ extract the text. record the location of every word. This is the default.--linesβ extract the text. record the location of every line, rather that every word. (yes, "rather that" β that's literally what the page says, I'm not touching it π)--crop-textβ extract no text outside the page boundary. anything past the edge? not invited.--no-nfkcβ do not apply NFKC[2] normalization on the text, except for characters from the Alphabetic Presentation Forms block[3] (U+FB00βU+FB4F), which are normalized unconditionally.
The default is to apply NFKC normalization on all characters.
--filter-text=command-lineβ filter the text through the command-line. The provided filter must preserve whitespace, control characters and decimal digits.
This option implies --no-nfkc. sneaky little side effect, but okay π§
-p,--pages=page-rangeβ specifies pages to convert. page-range is a comma-separated list of sub-ranges. Each sub-range is either a single page (e.g.17) or a contiguous range of pages (e.g.37-42). Duplicate page numbers are not allowed. Pages are numbered from 1.
The default is to convert all pages.
π Performance π
-j,--jobs=nβ use n threads to perform conversion. The default is to use one thread.-j0,--jobs=0β determine automatically how many threads to use to perform conversion. let it decide, it knows what it's doing β¨
π Verbosity, help π
-v,--verboseβ display more informational messages while converting the file. give me all the tea β-q,--quietβ don't display informational messages while converting the file. silence. iconic. π€«--versionβ output version information and exit.-h,--helpβ display help and exit.
π ENVIRONMENT π
The following environment variables affects pdf2djvu on Unix systems:
OMP_*β details of runtime behavior with respect to parallelism can be controlled by several environment variables. Please refer to the OpenMP API specification[4] for details.TMPDIRβpdf2djvumakes heavy use of temporary files. It will store them in a directory specified by this variable. The default is/tmp.
π§ TEMPLATE LANGUAGE π§
π Template syntax π
The template language is roughly modeled on the Python string formatting syntax[5].
A template is a piece of text which contains fields, surrounded by curly braces {}. Fields are replaced with appropriately formatted values when the template is evaluated. Moreover, {{ is replaced with a single { and }} is replaced with a single }.
π Field syntax π
Each field consists of a variable name, optionally followed by a shift, optionally followed by a format specification.
The shift is a signed (i.e. starting with a + or - character) integer.
The format specification consists of a colon, followed by a width specification.
The width specification is a decimal integer defining the minimum field width. If not specified, then the field width will be determined by the content. Preceding the width specification with a zero (0) character enables zero-padding.
The width specification is optionally followed by an asterisk (*) character, which increases the minimum field width to the width of the longest possible content of the variable.
πΈ Available variables πΈ
dpageβ page number in the DjVu document.page,spageβ page number in the PDF document.labelβ page label (logical page number) in the PDF document.
This variable is available only for page titles. it does not do anything else, don't push it π
π₯ IMPLEMENTATION DETAILS π₯
π«Ά Layer separation algorithm π«Ά
Unless the --monochrome option is on, pdf2djvu uses the following naive layer separation algorithm:
- For each page, do the following:
- Rasterize the page into a pixmap, in the usual manner.
- Rasterize the page into another pixmap, omitting the following page elements:
- text,
- 1 bit-per-pixel raster images,
- vector elements (except fills of large areas).
- Compare both pixmaps, pixel by pixel:
- If their colors match, classify the pixel as a part of the background layer.
- Otherwise, classify the pixel as a part of the foreground layer.
π BUG REPORTS π
If you find a bug in pdf2djvu, please report it at the issue tracker[6] or to the mailing list[7]. don't be shy bestie, they wanna hear it π
π SEE ALSO π
djvu(1), djvudigital(1), csepdjvu(1)
β NOTES β
- RFC 3999
https://www.ietf.org/rfc/rfc3339 - NFKC
https://unicode.org/reports/tr15/ - Alphabetic Presentation Forms block
https://unicode.org/charts/PDF/UFB00.pdf - OpenMP API specification
https://www.openmp.org/specifications/ - Python string formatting syntax
https://docs.python.org/2/library/string.html#format-string-syntax - the issue tracker
https://github.com/jwilk/pdf2djvu/issues - the mailing list
https://groups.io/g/pdf2djvu
and that's the whole page, bestie π this was pdf2djvu 0.9.19, dated 2022-08-09 β go convert something cute and slay β¨ππ¦
π¦ where this page comes from
- fedora 43: pdf2djvu 0.9.19-16.fc43 Β· GPL-2.0-or-later
- fedora 44: pdf2djvu 0.9.19-18.fc44 Β· GPL-2.0-or-later
- opensuse-leap 16.0: pdf2djvu 0.9.19-bp160.1.14 Β· GPL-2.0-only
- opensuse-leap 16.0: pdf2djvu 0.9.19-bp160.1.14 Β· GPL-2.0-only
- opensuse-leap 16.0: pdf2djvu 0.9.19-bp160.1.14 Β· GPL-2.0-only
- opensuse-leap 16.0: pdf2djvu 0.9.19-bp160.1.14 Β· GPL-2.0-only
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms