从按日期/名称分组的单独目录中的JPEG生成PDF

时间:2015-09-02 17:24:15

标签: python powershell pdf jpeg

我希望在服务器上从JPEG生成PDF报告。 JPEG位于以它们拍摄的位置命名的文件夹中,并且JPEG基于它们拍摄的日期命名(... \ Location 1 \ 15 08 03 description.jpg)。基本上我需要抓住上个月在每个网站上拍摄的所有照片,将它们均匀地分组在一个页面上(最多4个/页面),用位置和日期标记页面,导出PDF。

我已经用Powershell和Python编写了项目,所以用这些语言操作会更容易,但我会考虑所有的建议。

到目前为止,我的想法是使用开关/案例来选择各种文件夹名称,循环选择所有案例,并选择一个月范围内具有.jpg扩展名的所有文件(可能是用户提示?)。正如我所描述的那样,我将JPEG格式排列成PDF格式。

编辑:因此,如果您按照下面的Mark Setchell的建议,创建他建议的图像并将它们放在C:\ New文件夹中。所以假设你在这个子目录中有3个文件夹(新文件夹,新文件夹(2)等),其中2个包含九个彩色JPEGS,第三个是空的:

clear
$path="C:\New folder\"
$array=@()
$name="file*.jpg"
foreach ($i in Get-ChildItem -path $path -Filter "New*")
{$i0=$path+$i; Get-ChildItem -path $i0 -Filter $name | ForEach-Object {$array+= $i0+"\"+$_.name}
montage $array -tile 2x2 -geometry +5+5 -title $i -page letter montage.pdf}`

我的代码用第3个空文件夹覆盖所有页面上的标题。此外,它开始将下一个文件夹中的JPEGS添加到上一页中,该页应标题为上一个文件夹,并且只包含那些JPEG。

3 个答案:

答案 0 :(得分:3)

想象一下,目录中有9个JPEG文件,名为SELECT employee.id, count(jobs.id) as job_count FROM employee LEFT OUTER JOIN jobs ON employee.id = jobs.employee_id AND jobs.startdatetime >= date(now()) where employee.state ='active' group by employee.id; ... file1.jpg,它们就像红色,绿色,蓝色,青色,洋红色,黄色,黑色和灰色。

file9.jpg

如果您现在进入该目录并运行以下convert -size 300x400 xc:red file1.jpg convert -size 300x400 xc:lime file2.jpg convert -size 300x400 xc:blue file3.jpg convert -size 300x400 xc:cyan file4.jpg convert -size 300x400 xc:magenta file5.jpg convert -size 300x400 xc:yellow file6.jpg convert -size 300x400 xc:black file7.jpg convert -size 300x400 xc:gray40 file8.jpg convert -size 300x400 xc:gray80 file9.jpg 脚本,它会将文件剪辑成A4页面,每页有4张图像。

bash

问题的关键在于首先根据文件名为每个图像添加标签,然后将标签和图像发送到能够容纳许多图像的MIFF文件。然后将合并后的图像组合输入#!/bin/bash for f in file*jpg; do convert -label "$f" "$f" -depth 8 miff:- done | montage -tile 2x2 -geometry +5+5 miff:- -page A4 montage.pdf ,因为montage,它们将四个排列到一页。几何设置图片之间的间距 - 更大的数字意味着更大的空间。最后我们告诉-tile 2x2纸张尺寸是A4,我们想要所有输入图像的PDF - 请!

当然,您可以使用背景,尺寸,间距和标签,直到您满意为止 - 但这应该为您提供基本的想法。

您将使用以下三个页面获取名为montage的PDF:

<强>第1页

enter image description here

第2页

enter image description here

第3页

enter image description here

将循环转换为丑陋的Windows-y montage.pdf循环 - for loop help是非常简单的。

答案 1 :(得分:1)

要将您的jpg转换为pdf文件,您可以使用ImageMagick。 imagemagick也有不同类型的python APIs,但在你的情况下最好编写一个简单的PowerShell脚本并直接执行imagemagick。

只需使用以下imagemagick命令:

convert <yourfile.jpg> <newfile.pdf>

注意:必须在命令中使用文件扩展名。否则,imagemagick不知道该怎么做。

答案 2 :(得分:0)

您可以使用glob来获取文件(然后根据需要对其进行排序)。我认为转换太复杂了。

至于转换部分:Shibumi's回答。