我被要求编写一个脚本,自动将PDF文件转换为TIFF文件,以便进一步处理它们。借助Google和本网站的大量帮助。 (我从未研究过任何编程语言)我在下面创建了代码。 即使它现在正在工作,但它并不是我所希望的,因为它每次运行时都会创建13个文件,它应该只创建1个文件。
有人能够好好看看剧本并告诉我哪里出错了吗?
提前谢谢!
编辑: 在这个(测试)的情况下,文件夹中只有一个PDF,它名为test.pdf,但是这个想法是脚本查看给定文件夹中的所有PDF,因为它是不确定在任何给定时间文件夹中有多少PDF。让它作为服务在后台运行(?)
我会在找到如何获取错误代码/说明后编辑帖子,我无法跟上命令行。
#Path to your Ghostscript EXE
$tool = 'C:\\Program Files\\gs\\gs9.10\\bin\\gswin64c.exe'
#Directory containing the PDF files that will be converted
$inputDir = 'C:\\test\\'
#Output path where converted PDF files will be stored
$outputDirPDF = 'C:\\test\\oud\\'
#Output path where the TIF files will be saved
$outputDir = 'C:\\test\\TIFF'
$pdfs = get-childitem $inputDir -recurse | where {$_.Extension -match "pdf"}
foreach($pdf in $pdfs)
{
$tif = $outputDir + $pdf.BaseName + ".tif"
if(test-path $tif)
{
"tif file already exists " + $tif
}
else
{
'Processing ' + $pdf.Name
$param = "-sOutputFile=$tif"
& $tool -q -dNOPAUSE -sDEVICE=tiffg4 $param -r300 $pdf.FullName -c quit
}
Move-Item $pdf $outputDirPDF
}
答案 0 :(得分:2)
它现在正在工作,显然我错过了一个"退出"在代码的最后。它可能不是最美丽的代码,但它似乎可以完成这项工作,所以我很满意它。 在实际工作的代码下面;
#Path to your Ghostscript EXE
$tool = 'C:\\Program Files\\gs\\gs9.10\\bin\\gswin64c.exe'
#Directory containing the PDF files that will be converted
$inputDir = 'C:\\test\\'
#Output path where converted PDF files will be stored
$outputDirPDF = 'C:\\test\\oud\\'
#Output path where the TIF files will be saved
$outputDir = 'C:\\test\\TIFF\\'
$pdfs = get-childitem $inputDir -recurse | where {$_.Extension -match "pdf"}
foreach($pdf in $pdfs)
{
$tif = $outputDir + $pdf.BaseName + ".tif"
if(test-path $tif)
{
"tif file already exists " + $tif
}
else
{
'Processing ' + $pdf.Name
$param = "-sOutputFile=$tif"
& $tool -q -dNOPAUSE -sDEVICE=tiffg4 $param -r300 $pdf.FullName -c quit
}
Move-Item $pdf $outputDirPDF
}
EXIT
答案 1 :(得分:0)
它似乎为源目录中的每个PDF文件创建一个TIFF文件。目录(和任何子目录)中有多少PDF文件?输入PDF文件中有多少页?
我注意到您从' InputDir'移动了原始PDF。到' OutputDirPDF'完成后,但是' OutputDirPDF'是InputDir'的孩子,所以如果你在查找输入文件时递归子目录,你可能会找到你已经处理过的文件。 NB我对Powershell一无所知,所以这可能没问题。
我建议制作' InputDir'和' OutputDirPDF'在同一级别,例如" c:\ temp \ input"和" c:\ temp \ outputPDF"。
关于我在这里所说的所有信息,您可以说明输入的PDF文件名和输出文件名是什么,以及处理消息的内容。