iTextSharp用于合并PowerShell中的PDF文件

时间:2015-10-14 10:48:37

标签: powershell pdf itextsharp

我有一个包含数千个PDF文件的文件夹。我需要根据文件名过滤这些文件(将这些文件分组为2个或更多PDF文件),然后将这2个以上的PDF文件合并为1个PDF文件。

我可以对文件进行分组,但不确定将这些文件合并为1个PDF的最佳方法。我研究了iTextSharp,但无法在PowerShell中使用它。

iTextSharp是最好的方法吗?任何有关此代码的帮助都将非常感激。

非常感谢 保罗

1 个答案:

答案 0 :(得分:7)

已经看到一些这些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文件放在目录中。
  5. 不确定您打算如何根据文件名对PDF进行分组过滤,或者这是否是您的意图(无法判断您是否只是通过扩展名选择PDF),但这不应该太难添加。

    祝你好运。 :)