File size: 1,504 Bytes
2212506
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
import fitz  # PyMuPDF
import argparse
import os

def convert_pdf_to_images(pdf_path, output_dir, dpi=300, image_format="png"):
    """

    Convert a PDF to a series of images.

    """
    if not os.path.exists(output_dir):
        os.makedirs(output_dir)

    try:
        doc = fitz.open(pdf_path)
        print(f"Opened {pdf_path}. Total pages: {len(doc)}")
        
        for page_num in range(len(doc)):
            page = doc.load_page(page_num)
            # alpha=False ensures a white background instead of transparent
            pix = page.get_pixmap(dpi=dpi, alpha=False)
            
            output_file = os.path.join(output_dir, f"page_{page_num + 1:02d}.{image_format}")
            pix.save(output_file)
            print(f"Saved {output_file}")
            
        print("Conversion complete.")
    except Exception as e:
        print(f"Error processing PDF: {e}")

if __name__ == "__main__":
    parser = argparse.ArgumentParser(description="Convert a PDF to images.")
    parser.add_argument("pdf_path", help="Path to the input PDF file")
    parser.add_argument("--output", "-o", default="output", help="Output directory")
    parser.add_argument("--dpi", type=int, default=300, help="Output image DPI (default: 300)")
    parser.add_argument("--format", "-f", default="png", help="Output image format (default: png)")
    
    args = parser.parse_args()
    
    convert_pdf_to_images(args.pdf_path, args.output, args.dpi, args.format)