2015-10-14 121 views
2

我有一个包含数千个PDF文件的文件夹。我需要根据文件名(这些文件将这些文件分组成2个或更多PDF文件)来筛选这些文件,然后将这2个更多的PDF文件合并为一个PDF文件。iTextSharp在PowerShell中合并PDF文件

我很喜欢将文件分组,但不确定将这些文件合并为1 PDF的最佳方式。我研究过iTextSharp,但一直无法使它在PowerShell中工作。

iTextSharp是做这件事的最好方法吗?任何与此代码的帮助将不胜感激。

非常感谢 保罗

+0

[这个问题和答案](http://stackoverflow.com/q/32888527/231316)有两个PowerShell与iTextSharp以及合并良好的开端。 –

+0

是的 - 我已经看到了这个问题\答案。看起来像'合并PDF'功能没有工作,并没有得到我的头转换从C#到PowerShell ....... – Paul

回答

4

见过其中的一些PowerShell的标记问题,这也标有iTextSharp的,并且一直想知道为什么的答案在.NET中给出,它可以是非常除非的人混淆问这个问题是否精通PowerShell开始。总之,这里是一个简单的工作的PowerShell脚本,让你开始:

$workingDirectory = Split-Path -Parent $MyInvocation.MyCommand.Path; 
$pdfs = ls $workingDirectory -recurse | where {-not $_.PSIsContainer -and $_.Extension -imatch "^\.pdf$"}; 

[void] [System.Reflection.Assembly]::LoadFrom(
    [System.IO.Path]::Combine($workingDirectory, 'itextsharp.dll') 
); 

$output = [System.IO.Path]::Combine($workingDirectory, 'output.pdf'); 
$fileStream = New-Object System.IO.FileStream($output, [System.IO.FileMode]::OpenOrCreate); 
$document = New-Object iTextSharp.text.Document; 
$pdfCopy = New-Object iTextSharp.text.pdf.PdfCopy($document, $fileStream); 
$document.Open(); 

foreach ($pdf in $pdfs) { 
    $reader = New-Object iTextSharp.text.pdf.PdfReader($pdf.FullName); 
    $pdfCopy.AddDocument($reader); 
    $reader.Dispose(); 
} 

$pdfCopy.Dispose(); 
$document.Dispose(); 
$fileStream.Dispose(); 

测试:

  1. 创建一个空目录。
  2. 将上面的代码复制到目录中的Powershell脚本文件中。
  3. 将itextsharp.dll复制到该目录。
  4. 将一些PDF文件放在目录中。

不确定你打算如何根据文件名来筛选PDF,或者如果这是你的意图(无法分辨是否只是通过扩展选择PDF),但这不应该太难加上。

祝你好运。 :)

+0

非常感谢这 - 这工作了一个治疗:-) – Paul

+0

我有另一个问题你可能可以帮忙? – Paul

+0

http://stackoverflow.com/questions/33755936/problems-loading-itextsharp-in-powershell – Paul