def combine(file_list,out_file):
file_info=""
for i in file_list:
file_info=file_info+" "+i
com="pdftk "+file_info+" cat output "+out_file
os.system(com)
合并PDF
发表评论
def combine(file_list,out_file):
file_info=""
for i in file_list:
file_info=file_info+" "+i
com="pdftk "+file_info+" cat output "+out_file
os.system(com)
# libreoffice --convert-to pdf:writer_pdf_Export --outdir <保存的目录> a.docx
#保存在当前的download文件夹
def topdf(nfile):
com="libreoffice --convert-to pdf:writer_pdf_Export "+nfile+" --outdir ./download"
os.system(com)
name=nfile[nfile.rfind('/')+1:nfile.rfind('.')]+".pdf"
newa="./download/"+name
return newa
代码
from PIL import Image
import os
def create_img_pdf(file_name,ouput_pdf):
page = Image.new('RGB', (2480, 3508), 'white')
image=Image.open(file_name)
i_w,i_h=image.size
if i_w>i_h:
i_n_w=2000
i_n_h=int(i_h*2000/i_w)
else:
i_n_h=3000
i_n_w=int(i_w*3000/i_h)
n_img=image.resize((i_n_w,i_n_h))
page.paste(n_img,(100,100))
page.save(ouput_pdf,"PDF", resolution=100.0)
create_img_pdf("./image/2.jpg","op.pdf")
imageMagick 模块的调用,本质是处理图片转为PDF。
<?php
// 图片所在的文件夹路径
$imageFolder = 'path/to/your/images/';
// 输出的 PDF 文件路径
$pdfPath = 'path/to/your/output.pdf';
// 获取文件夹中的所有图片文件
$images = glob($imageFolder . '*.{jpg,jpeg,png,gif}', GLOB_BRACE);
// 实例化 Imagick 对象
$imagick = new Imagick();
// A4 纸张的尺寸(以像素为单位),假设使用 300 DPI
$a4WidthPx = 2480; // 8.27 英寸 * 300 DPI
$a4HeightPx = 3508; // 11.69 英寸 * 300 DPI
// 循环加载所有图片,并调整尺寸
foreach ($images as $image) {
// 实例化一个新的 Imagick 对象用于当前图片
$imagickImage = new Imagick($image);
// 获取图片的原始尺寸
$originalWidth = $imagickImage->getImageWidth();
$originalHeight = $imagickImage->getImageHeight();
// 计算图片的宽高比
$aspectRatio = $originalWidth / $originalHeight;
// 根据宽高比和 A4 纸张尺寸计算新的尺寸,确保不超过 A4 纸张大小
if ($originalWidth / $a4WidthPx > $originalHeight / $a4HeightPx) {
$newWidth = $a4WidthPx;
$newHeight = (int)($newWidth / $aspectRatio);
} else {
$newHeight = $a4HeightPx;
$newWidth = (int)($newHeight * $aspectRatio);
}
// 调整图片尺寸以适应 A4 纸张大小,保持比例
$imagickImage->resizeImage($newWidth, $newHeight, Imagick::FILTER_LANCZOS, 1);
// 创建一个 A4 大小的白色图层
$canvas = new Imagick();
$canvas->newImage($a4WidthPx, $a4HeightPx, new ImagickPixel('white'));
// 计算图片相对于 A4 纸张的位置(居中)
$x = ($a4WidthPx - $newWidth) / 2;
$y = ($a4HeightPx - $newHeight) / 2;
// 将调整后的图片复制到 A4 画布上
$canvas->compositeImage($imagickImage, Imagick::COMPOSITE_OVER, $x, $y);
// 将画布添加到 Imagick 集合中
$imagick->addImage($canvas);
}
// 设置输出格式为 PDF,并设置分辨率为 300 DPI
$imagick->setImageResolution(300, 300);
// 写入图像到文件,合并成一个 PDF
$imagick->writeImages($pdfPath, true);
echo "图片已成功合并为一个 A4 大小的 PDF 文件,分辨率为 300 DPI。";
?>
liberoffice
libreoffice --convert-to pdf:writer_pdf_Export --outdir <保存的目录> a.docx
会生成一个a.pdf在设置的保存下的目录下。
pdftk 安装
pdftk file1.pdf file2.pdf file3.pdf cat output merged.pdf
file1.pdf file2.pdf file3.pdf 全部合并成一个 merged.pdf 文件
pdftk 的PDF处理
pdftk 是一个功能强大的命令行工具,用于处理 PDF 文件。以下是一些常用的 pdftk 命令参数:
pdftk file1.pdf file2.pdf cat output merged.pdf这将把 file1.pdf 和 file2.pdf 合并成一个名为 merged.pdf 的新文件。pdftk input.pdf burst output output%03d.pdf这将把 input.pdf 拆分成多个名为 output001.pdf、output002.pdf 等的文件。pdftk input.pdf cat 1-2east 3-end output output.pdf这将把 input.pdf 的第1和第2页顺时针旋转90度,其他页面保持不变。pdftk input.pdf output output.pdf owner_pw password这将对 input.pdf 进行加密,设置所有者密码为 password。pdftk secured.pdf input_pw password output unsecured.pdf这将移除 secured.pdf 的所有者密码,生成一个无需密码即可打开的 unsecured.pdf。pdftk input.pdf background watermark.pdf output output.pdf这将把 watermark.pdf 作为水印添加到 input.pdf 中。pdftk input.pdf output output.pdf compress这将压缩 input.pdf 以减小文件大小。pdftk input.pdf output output.pdf repair这将尝试修复损坏的 input.pdf 文件。pdftk input.pdf cat 1-3 5-10 output selected_pages.pdf这将从 input.pdf 中提取第1到第3页和第5到第10页,生成一个名为 selected_pages.pdf 的新文件。pdftk input.pdf cat 1-2 4-end output output.pdf这将从 input.pdf 中删除第3页,生成一个名为 output.pdf 的新文件。这些是 pdftk 的一些基本命令参数,可以帮助你执行日常的 PDF 文件操作。更多高级功能和详细用法,可以参考 pdftk 的官方文档或使用 pdftk --help 命令查看帮助信息。