Convert PDF to JPEG2000
The JPedal Java PDF library converts PDF pages to JPG2000 images — supporting single files, whole directories, specific page ranges, thumbnails, and password-protected PDFs, with no third-party dependencies.
New to JPedal? Add it to your project first: Maven dependency | Gradle dependency
JPEG 2000 uses wavelet-based compression to achieve better quality at lower file sizes than standard JPEG, with support for both lossy and lossless modes. It is widely used in medical imaging (DICOM), digital cinema, and archival workflows.
Standard Java ImageIO does not support JPG2000. JPedal uses JDeli internally for this conversion (benchmark results) — JDeli also provides standalone JPG2000 reading and writing.
How do I convert a PDF to JPG2000 from the command line?
JPedal can run as a standalone tool to convert a file or an entire directory in a single command:
java -jar jpedal.jar --convert "inputFileOrFolder" "outputFolder" jpx
You can also provide additional settings to control the output:
java -jar jpedal.jar --convert "inputFileOrFolder" "outputFolder" jpx ScalingAsFloat
java -jar jpedal.jar --convert "inputFileOrFolder" "outputFolder" jpx ScalingAsFloat PageRange
Replace ScalingAsFloat with a float value and PageRange with a page range string:
ScalingAsFloat: a float value specifying the scaling applied to the output. This is the view scaling divided by 100 — for instance, 150% becomes1.5PageRange: the range of pages to convert, following SetOfIntegerSyntax rules — for example,"1,3,4-7"gives pages 1, 3, 4, 5, 6, 7
What is the simplest way to convert a PDF to JPG2000 in Java?
The static convenience method converts a whole file or directory in a single call, handling file opening and closing automatically:
ConvertPagesToImages.writeAllPagesAsImagesToDir(
"inputFileOrFolder",
"outputFolder",
"jpx",
1.33f);
How do I control the JPG2000 output options when converting from PDF in Java?
To configure output settings — such as compression or quality — create a ConvertPagesToImages instance and apply an options object before writing each page:
ConvertPagesToImages convert = new ConvertPagesToImages("inputFile.pdf");
try {
if (convert.openPDFFile()) {
for(int page = 1; page <= convert.getPageCount(); page++) {
final BufferedImage bi = convert.getPageAsImage(page);
final File out = new File("outputFolder" + page + ".jpx");
// Setters to control output (example with compression)
final Jpeg2000EncoderOptions options = new Jpeg2000EncoderOptions();
options.setQuality(90); //Default is 75. No compression is 100
options.setOutputSubtype(Jpeg2000OutputSubtype.JPX); //Default is JPX. JP2 also
JDeli.write(bi, options, out);
}
}
} catch (PdfException | IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
convert.closePDFfile();
How do I convert specific pages of a PDF to JPG2000 in Java?
Use setPageRange with a PageRanges string before opening the file. The range syntax supports single pages, dash-separated ranges, and comma-separated combinations:
ConvertPagesToImages convert = new ConvertPagesToImages("inputFile.pdf");
// setPageRange gives you the ability to chose the pages you'd like using '-' or ':' for range
// and ',' to move to the next range or you can simply put null for all the pages
convert.setPageRange(new PageRanges("1-5,8:10,15"));
// Above will give us pages 1 to 5(inclusive),8 to 10(inclusive) and 15
try {
if (convert.openPDFFile()) {
convert.getPageRange().forEachRemaining(page -> {
try {
final BufferedImage bi = convert.getPageAsImage(page);
final File out = new File("outputFolder" + page + ".jpx");
JDeli.write(bi, options, out);
} catch (Exception e) {
e.printStackTrace();
}
});
}
} catch (PdfException e) {
e.printStackTrace();
}
convert.closePDFfile();
How do I create fixed-size JPG2000 thumbnails from a PDF in Java?
The static method accepts a {width, height} array to produce thumbnails at a fixed size:
ConvertPagesToImages.writeAllPagesAsImagesToDir(
"inputFileOrFolder",
"outputFolder",
"jpx",
new int[] {width, height});
Alternatively, use setFitToSize on a ConvertPagesToImages instance — JPedal preserves the aspect ratio and fits within the given dimensions:
ConvertPagesToImages convert = new ConvertPagesToImages("inputFile.pdf");
//fit with aspect ratio preserved (width will be 300 or height will be 400)
convert.setFitToSize(new int[] {300,400});
try {
if (convert.openPDFFile()) {
for (int page = 1; page <= convert.getPageCount(); page++) {
final BufferedImage bi = convert.getPageAsImage(page);
final File out = new File("outputFolder" + page + ".jpx");
JDeli.write(bi, OutputFormat.JPEG2000, out);
}
}
} catch (PdfException | IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
convert.closePDFfile();
How do I set the scaling when converting a PDF to JPG2000 in Java?
Use setPageScaling to control the output resolution. A value of 1.33f matches the default 100% view in Acrobat:
ConvertPagesToImages convert = new ConvertPagesToImages("inputFile.pdf");
convert.setPageScaling(1.33f); //which gives same size as Acrobat at 100%
try {
if (convert.openPDFFile()) {
for (int page = 1; page <= convert.getPageCount(); page++) {
final BufferedImage bi = convert.getPageAsImage(page);
final File out = new File("outputFolder" + page + ".jpx");
JDeli.write(bi, OutputFormat.JPEG2000, out);
}
}
} catch (PdfException | IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
convert.closePDFfile();
How do I convert a password-protected PDF to JPG2000 in Java?
Call setPassword before openPDFFile — the rest of the conversion works identically to an unprotected file:
ConvertPagesToImages convert = new ConvertPagesToImages("inputFile.pdf");
convert.setPassword("password");
try {
if (convert.openPDFFile()) {
for (int page = 1; page <= convert.getPageCount(); page++) {
final BufferedImage bi = convert.getPageAsImage(page);
final File out = new File("outputFolder" + page + ".jpx");
JDeli.write(bi, OutputFormat.JPEG2000, out);
}
}
} catch (PdfException | IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
convert.closePDFfile();
For the full API, see the ConvertPagesToImages and Jpeg2000EncoderOptions Javadocs.
For high-resolution output or advanced rendering control, ConvertPagesToHiResImages provides additional rendering options including DPI overrides, color space control, and rendering hints.
The pdf-to-image demo project on GitHub shows a complete working example with Maven configuration.
Frequently Asked Questions
Can I convert a whole directory of PDFs to JPG2000?
Yes. Pass a folder path instead of a file path to any method — JPedal processes all PDFs found in that directory.
Can I convert specific pages of a PDF to JPG2000?
Yes. Call convert.setPageRange(new PageRanges("1-5,8")) before openPDFFile(). The range syntax supports single pages, dash-separated ranges, and comma-separated combinations.
Can I convert a password-protected PDF to JPG2000?
Yes. Call convert.setPassword("yourPassword") before openPDFFile().
How do I control the output resolution or DPI?
Use convert.setPageScaling(1.33f) — 1.33f matches Acrobat’s 100% view. For fixed pixel dimensions use convert.setFitToSize(new int[]{width, height}) instead.
Does JPedal require any third-party dependencies?
No. JPedal is a self-contained Java library with no third-party runtime dependencies.
What is the default output resolution when converting a PDF to JPG2000?
JPedal’s default scaling is 1.0f, which produces 72 DPI output. Use setPageScaling(1.33f) to match Acrobat’s 100% view (approximately 96 DPI), or setPageScaling(2.0f) for 144 DPI output.
Can I convert a PDF to JPG2000 without writing to disk?
Yes. Call convert.getPageAsImage(page) to get a BufferedImage for each page, then write it to any OutputStream using JDeli.write(bi, options, outputStream).