PDF形式を維持しながらPowershellを使用してPDFからコンテンツを取り除くPowershellを使用してPDFからコンテンツを取り除く
マイタスク: ドキュメントがPDF形式でない場合、簡単な作業を実行しようとしています。使用可能なデータが大量に開始される前に不要なデータを持つPDFがたくさんある場合、これはドキュメント内の '%PDF'より前のものです。必要なデータをすべて取り出し、新しいファイルにエクスポートするスクリプトが必要でした。その部分は超簡単だった。
問題: エクスポートされたデータは、もはやPDFとして開かないことを除いて正しくフォーマットされているように見えます。私はメモ帳でそれを開くことができます+ +とそれは手動できれいだったし、動作するものと同じに見えます。 Powershellの変更されたPDFの生コードを調べると、 'lines'ははるかに短くなっているようです。
$Path = 'C:\FileLocation'
$Output = '.\MyFile.pdf'
$LineArr = @()
$Target = Get-ChildItem -Path $Path -Filter *.pdf -Recurse -ErrorAction SilentlyContinue | Get-Content -Encoding default | Out-String -stream
$Target.Where({ $_ -like '*%PDF*' }, 'SkipUntil') | ForEach-Object{
If ($_.contains('%PDF')){
$LineArr += "%" + $_.Split('%')[1]
}
else{
$LineArr += $_
}
}
$LineArr | Out-File -Encoding Default -FilePath $Output
PDF形式では実際に行が使用されないため、問題が発生している可能性があります。データが最初に配列に入れられているときや、書き込まれているときにPDF形式が壊れている可能性があります。 PDFが変更されて保存されている間、PDFの書式を保持する方法はありますか?たぶん私は単純なものを見逃しています。
"Powershellの変更されたPDFの生コードを調べると、 'lines'がはるかに短くなっているように見えます。*" - 何が欠けていますか? – TessellatingHeckler
私が知る限り、空白です。エンコードが維持され、すべての文字が同じに見えます。私は変更された何かがあると確信しています。 – KVB
PDFファイル構造には、ファイル開始からの相対的なバイナリオフセットへの参照があるため、正しく解析する必要があります(iTextSharpを使用)。(https://www.google.com/#q=itextsharp+pdf+read+write+ – wOxxOm