У меня есть приложение, которое открывает winform и просит пользователя ввести файл PDF. Поскольку я не могу легко читать строки в файлах PDF, мне нужно преобразовать их в формат .txt. Когда пользователь нажимает кнопку ОК, приложение делает это.
Проблема, с которой я столкнулся, теперь заключается в использовании объекта файла .txt и передаче его другой команде, не зная его имени. Когда я пытаюсь передать его другой команде, это не сработает, потому что у меня нет пути. Я думаю, это потому, что результатом преобразования является строка «ОК», а не фактический файл .txt.
Как я могу преобразовать PDF-файлы в текст (я использую Xpdf ) и передать преобразованный файл по конвейеру для дальнейшей обработки?
Если проблема связана с тем, что я использую, как я могу выполнить эту задачу другим способом?
Add-Type -AssemblyName System.Windows.Forms
$form = New-Object System.Windows.Forms.Form
$form.StartPosition = 'CenterScreen'
$button = New-Object System.Windows.Forms.Button
$form.Controls.Add($button)
$button.Text = 'Get file'
$button.Location = '10,10'
$button.Add_Click({
$ofd = New-Object system.windows.forms.Openfiledialog
$ofd.Filter = 'PDFs (*.pdf)|*.pdf'
$script:filename = 'Not found'
if ($ofd.ShowDialog() -eq 'Ok') {
$script:filename = $textbox.Text = $ofd.FileName
}
})
$buttonOK = New-Object System.Windows.Forms.Button
$form.Controls.Add($buttonOK)
$buttonOK.Text = 'Ok'
$buttonOK.Location = '10,40'
$buttonOK.DialogResult = 'OK'
$textbox = New-Object System.Windows.Forms.TextBox
$form.Controls.Add($textbox)
$textbox.Location = '100,10'
$textbox.Width += 50
$form.ShowDialog()
$output = & "C:\Users\eakinsa\Desktop\Style Guide Report\Includes\bin32\pdftotext" $filename
$output |
Get-Location -OutVariable textFile |
Select-String -Path $textFile -Pattern ed
За Ансгар:
Я изменил строки последних нескольких строк, чтобы на данный момент сохранить функциональность по умолчанию для pdftotext, где он создает файл в том же каталоге с тем же именем, что и с его предложением, я мог бы легко заменить .pdf на .txt на конец пути к файлу, что позволяет гибко передавать правильный путь к файлу последующим функциям. Это позволило мне найти текстовый файл.
& "C:\users\eakinsa\Desktop\Style Guide Report\Includes\bin32\pdftotext" $filename
$pdf = Get-Item $filename
$textfile = $filename -replace '\.pdf$', '.txt'
Select-String -Path $textfile -Pattern ed