私はPowerShellのV2にthisを再コーディングしようとしているが、私は、引数としてのMemoryStreamを使用してiTextSharp.text.pdf.PdfReaderを作成するTIFFを挿入しようとすると、私が過負荷エラーが出る:itextsharp PdfReader過負荷エラー
"New-Object : Cannot find an overload for "PdfReader" and the argument count: "18270"."
は、私がここで5.5.9
をitextsharp使用している私のコードです:
[System.Reflection.Assembly]::LoadFrom(c:\temp\itextsharp.dll) | Out-Null
$List = gc C:\temp\filelist.txt
$Dest = "C:\destPDF.pdf"
$document = New-Object iTextSharp.text.Document([iTextSharp.text.PageSize]::A4, 0, 0, 0, 0)
$copy = New-Object iTextSharp.text.pdf.PdfCopy($document, (New-Object System.IO.FileStream $RutaDestino, 'Create'))
$document.Open();
foreach ($file in $List)
{
$extension = (Get-Item $file).extension.toupper()
switch ($extension)
{
".PDF" {
[iTextSharp.text.pdf.PdfReader] $reader = New-Object iTextSharp.text.pdf.PdfReader $file
$reader.ConsolidateNamedDestinations()
for ($i = 1; $i -le $reader.NumberOfPages; $i++)
{
[iTextSharp.text.pdf.PdfImportedPage] $page = $copy.GetImportedPage($reader, $i)
$copy.addpage($page)
}
$reader.Close()
}
".TIF" {
[iTextSharp.text.Rectangle] $pageSize = $null;
[System.Drawing.Bitmap] $bm = New-Object System.Drawing.Bitmap($file)
$pageSize = New-Object iTextSharp.text.Rectangle(0, 0, $bm.Width, $bm.Height);
$m = New-Object System.IO.MemoryStream
$d = New-Object iTextSharp.text.Document($pageSize, 0, 0, 0, 0)
$w = [iTextSharp.text.pdf.PdfWriter]::GetInstance($d, $m)
$d.Open();
$d.Add([iTextSharp.text.Image]::GetInstance($file));
$d.Close();
$r = New-Object iTextSharp.text.pdf.PdfReader($m.ToArray());
$copy.AddDocument($r);
}
}
}
$document.Close();
PdfReader constructorがそれをサポートしているので、私はこのエラーを取得していますなぜ私にはわからない(また、それはです元のコードで使用される)
はまた...、x86の& x64のをPOSH V2およびV3を使用して
感謝を試してみました!
このエラーは、 'PdfReader'インスタンスを構築中に18270パラメータを提供していることを示しています。これはiTextの問題ではありません。これはPowerShellの問題です。単一のパラメータで 'PdfReader'を使用してください。 –
こんにちはブルーノは、https://msdn.microsoft.com/en-us/library/system.io.memorystream.toarray(v=vs.110).aspxにあるように、 'toArray'メソッドはバイト配列を返しますあなたが言ったように、コンストラクタは配列として取得していません。 powershellを使用しているpdfリーダーのすべてのサンプルは、ファイルをソースとして使用し、いずれもバイト配列を使用しています。おそらくそれは偽の非互換性です... – SalvaG
私が言ったように、私はPowerShellを知らないのですが、誰かが時には 'New-Object iTextSharp.text.pdf.PdfReader $ (括弧なし、セミコロンなし)、時には 'New-Object iTextSharp.text.pdf.PdfReader($ m.ToArray());'(カッコとセミコロン)を使用しています。それは非常に悪いコーディング規律のように見えます。 –