Link
Skip to main content

Convert PDF to BMP

The JPedal Java PDF library converts PDF pages to BMP 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

BMP stores pixels without compression, producing large files but ensuring maximum compatibility with Windows-native applications and legacy software that cannot process compressed image formats.

JPedal uses JDeli for BMP output. JDeli outperforms standard ImageIO for BMP in benchmarks — it also provides standalone BMP reading and writing.

How do I convert a PDF to BMP 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" bmp

You can also provide additional settings to control the output:

java -jar jpedal.jar --convert "inputFileOrFolder" "outputFolder" bmp ScalingAsFloat 
java -jar jpedal.jar --convert "inputFileOrFolder" "outputFolder" bmp 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% becomes 1.5
  • PageRange: 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 BMP 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",
        "bmp",
        1.33f);

How do I control the BMP 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 + ".bmp");
            // Setters to control output 
            final BmpEncoderOptions options = new BmpEncoderOptions();
            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 BMP 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 + ".bmp");
                JDeli.write(bi, options, out);  
            } catch (Exception e) {
                e.printStackTrace();
            }
       });  
    }
} catch (PdfException e) {
    e.printStackTrace();
}                  

convert.closePDFfile();

How do I create fixed-size BMP 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",
        "bmp",
        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 + ".bmp");
            JDeli.write(bi, OutputFormat.BMP, 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 BMP 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 + ".bmp");
            JDeli.write(bi, OutputFormat.BMP, out);           
        }
    }
} catch (PdfException | IOException e) {
    e.printStackTrace();
}  catch (Exception e) {
    e.printStackTrace();
}

convert.closePDFfile();

How do I convert a password-protected PDF to BMP 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 + ".bmp");
            JDeli.write(bi, OutputFormat.BMP, out); 
        }
    }
} catch (PdfException | IOException e) { 
    e.printStackTrace(); 
}  catch (Exception e) {
    e.printStackTrace();
}

convert.closePDFfile();

For the full API, see the ConvertPagesToImages and BmpEncoderOptions 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 BMP?

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 BMP?

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 BMP?

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 BMP?

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 BMP 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).


Why JPedal?

  • Actively developed commercial library with full support and no third party dependencies.
  • Process PDF files up to 3x faster than alternative Java PDF libraries.
  • Simple licensing options and source code access for OEM users.

Learn more about JPedal

Start Your Free Trial


Customer Downloads

Select Download