Question quotidienne—02 Comment fusionner des PDF ?

import PyPDF2

pdf_files = ['D:\\TJU\\1.pdf', 'D:\\TJU\\1.pdf']
pdf_writer = PyPDF2.PdfFileWriter()

for file_name in pdf_files:
    pdf_reader = PyPDF2.PdfFileReader(open(file_name, 'rb'))
    for page_num in range(pdf_reader.numPages):
        pdf_writer.addPage(pdf_reader.getPage(page_num))

with open('D:\\TJU\\merged_file.pdf', 'wb') as merged_file:
    pdf_writer.write(merged_file)

#include <iostream>
#include <fstream>
#include <vector>
#include <string>
#include <sstream>
#include <algorithm>

std::vector<std::string> pdf_files = {"D:\\TJU\\1.pdf", "D:\\TJU\\3.pdf"};

std::string read_pdf(std::string filename) {
    std::ifstream file(filename, std::ios::binary);
    std::stringstream buffer;
    buffer << file.rdbuf();
    return buffer.str();
}

int main() {
    std::ofstream merged_file("D:\\TJU\\merged_file.pdf", std::ios::binary | std::ios::app);
    for (const auto& file_name : pdf_files) {
        std::string pdf_content = read_pdf(file_name);
        merged_file << pdf_content;
    }
    merged_file.close();
    return 0;
}

Ce code ne fusionne pas correctement les fichiers PDF car il concatène simplement les fichiers PDF sous forme de données binaires. Les fichiers PDF ont une structure spécifique et ne peuvent pas être fusionnés directement. Pour fusionner des fichiers PDF, vous pouvez utiliser des bibliothèques spécialisées telles que PoDoFo pour C++ ou PyPDF2 pour Python 

#include <iostream>
#include <fstream>
#include <vector>
#include <string>
#include <sstream>
#include <algorithm>

// 定义要合并的 PDF 文件列表
std::vector<std::string> pdf_files = {"D:\\TJU\\1.pdf", "D:\\TJU\\1.pdf", "D:\\TJU\\1.pdf"};

// 读取 PDF 文件的内容
std::string read_pdf(std::string filename)
{
    std::ifstream file(filename, std::ios::binary | std::ios::app);
    std::stringstream buffer;
    buffer << file.rdbuf();
    return buffer.str();
}

int main()
{
    // 打开输出文件
    std::ofstream merged_file("D:\\TJU\\merged_file.pdf", std::ios::binary | std::ios::app);

    // 定义一个字符串变量,用于存储所有 PDF 文件的内容
    std::string all_pdf_content;

    // 循环遍历要合并的 PDF 文件列表
    for (const auto &file_name : pdf_files)
    {
        // 读取 PDF 文件的内容,并将其添加到 all_pdf_content 变量中
        all_pdf_content += read_pdf(file_name);
    }

    // 将 all_pdf_content 变量的值写入合并文件
    merged_file << all_pdf_content;

    // 关闭输出文件
    merged_file.close();
    std::cout << "PDF files merged successfully." << std::endl;
    return 0;
}

おすすめ

転載: blog.csdn.net/seek97/article/details/129827140