Super safe, Python synthesizes multiple images to PDF format

In daily life, we often encounter situations where we need to submit the proof materials on the front and back of the ID card, and most of these websites only accept pdf format. At this time, we need to combine the two pictures of the front and back of the ID card into a pdf file.

Under the macOS system, the preview software can easily do this. At the same time, open the picture to a preview window and click Export PDF to successfully export. However, there is no such convenient software for Windows system to achieve this. There are many websites for synthesizing PDF on the Internet, but these websites without exception need to upload PDF for synthesis. Personally, I think it is very unsafe.

Therefore, the safest way is to write a Python script by ourselves to implement the synthesis function.

1. Prepare

Please choose one of the following ways to enter the command to install dependencies :
1. Open Cmd in Windows environment (Start-Run-CMD).
2. Open Terminal in MacOS environment (command+space to enter Terminal).
3. If you are using the VSCode editor or Pycharm, you can directly use the Terminal at the bottom of the interface.

pip install pillow

2. Synthesis principle

The Pillow module, PIL: Python Imaging Library, is already the de facto standard library for image processing on the Python platform. PIL is very powerful, but the API is very simple and easy to use. With it, we can easily manipulate images and export to different formats.

To start with a simple example, we will open an image and save it in pdf format:

from PIL import Image
import os


def convert_img_pdf(filepath, output_path):
    """
    转换图片为pdf格式

    Args:
        filepath (str): 文件路径
        output_path (str): 输出路径
    """
    output = Image.open(filepath)
    output.save(output_path, "pdf", save_all=True)
    
    
if __name__ == "__main__":
    convert_img_pdf("1.jpeg", "./test.pdf")

Test it out with a random image:

After running the code, it was successfully converted to a PDF file:

The conversion is done in a few lines of code, and it's much more secure than websites that upload photos to the cloud.

3. Combine multiple photos into PDF

With the basic knowledge of photo conversion to PDF, it is very simple to understand the code of multi-image synthesis PDF below.

In fact, it uses a special parameter append_images of .save:

output.save(pdfFilePath, "pdf", save_all=True, append_images=sources)

By storing the images in a "sources" array, we can easily composite these images into a PDF.

from PIL import Image
import os

def combine_imgs_pdf(folder_path, pdf_file_path):
    """
    合成文件夹下的所有图片为pdf

    Args:
        folder_path (str): 源文件夹
        pdf_file_path (str): 输出路径
    """
    files = os.listdir(folder_path)
    png_files = []
    sources = []
    for file in files:
        if 'png' in file or 'jpg' in file:
            png_files.append(folder_path + file)
    png_files.sort()

    output = Image.open(png_files[0])
    png_files.pop(0)
    for file in png_files:
        png_file = Image.open(file)
        if png_file.mode == "RGB":
            png_file = png_file.convert("RGB")
        sources.append(png_file)
    output.save(pdf_file_path, "pdf", save_all=True, append_images=sources)

if __name__ == "__main__":
    folder = r"G:\证件\\"
    pdfFile = r"G:\证件\身份证.pdf"
    combine_imgs_pdf(folder, pdfFile)

In this way, as long as you put your ID photos in a folder and run this Python code, it can automatically synthesize these IDs into a PDF and output it to the path you specify. Very simple and convenient.

 

If you need it, you can type this code to try it out!

[python learning] Python learning
partners, welcome to join the new exchange [Junyang]: 1020465983
to discuss programming knowledge together, become a god, there are software installation packages, practical cases, learning materials in the group

Guess you like

Origin blog.csdn.net/weixin_56659172/article/details/124400509