Утилита для сканирования стопок двусторонних документов
У меня есть симплексный сканер с устройством подачи документов, и я ищу лучший способ сканирования двусторонних заметок. Было бы полезно иметь возможность сканировать один и тот же стек дважды, после переворачивания, и иметь утилиту для автоматического чередования отсканированных изображений. Многостраничный экспорт PDF также был бы хорош. Есть ли инструмент для этого?
В противном случае я подумываю написать его на Python с модулем imagescanner, если он может использовать АПД - http://pypi.python.org/pypi/imagescanner/0.9
Спасибо
2 ответа
Старый вопрос, все еще актуальный:
Используйте "простое сканирование". Он имеет функцию "переупорядочить страницы". Я нашел этот намек здесь.
Отсканируйте документ как PDF со страницами, упорядоченными по мере сканирования, то есть сначала все нечетные страницы, затем все четные. Затем исправьте это с помощью:
pdftk raw.pdf cat odd even output ordered.pdf
См. Также " Объединение двух файлов PDF, содержащих четные и нечетные страницы книги".
Я делаю следующее на своем сканере с автоподатчиком документов (АПД):
- Сканировать нечетные страницы с 1-й до последней, сохранить как первый файл pdf
- Переверните стопку страниц и отсканируйте четные страницы с последней на вторую, сохраните как второй файл PDF
- Объедините оба файла с помощью небольшого скрипта PowerShell, который использует библиотеку PDFSharp (двоичные файлы необходимо скопировать рядом со скриптом PowerShell)
Вот мой сценарий - немного грубоватый, но он мне подходит. Надеюсь, это поможет.
# Not entirely my code, this is based on Mike Pfeiffer - http://mikepfeiffer.net/2010/03/how-to-merge-pdf-files-using-powershell-and-pdfsharp/
# Requires PDFSharp assembly libraries http://sourceforge.net/projects/pdfsharp/
# You need to load the assembly before you can use the function
#
# Usage:
# Merge-PDF -firstPdfPath 1.pdf -secondPdfPath 2.pdf -targetPdfPath merged.pdf
[CmdletBinding()]
param
(
$firstPdfPath,
$secondPdfPath,
$targetPdfPath
)
begin {
$scriptPath = split-path -parent $MyInvocation.MyCommand.Definition
Add-Type -Path .\PdfSharp.dll
}
process {
$output = New-Object PdfSharp.Pdf.PdfDocument
$PdfReader = [PdfSharp.Pdf.IO.PdfReader]
$PdfDocumentOpenMode = [PdfSharp.Pdf.IO.PdfDocumentOpenMode]
$firstPdfPath = Join-Path $PSScriptRoot $firstPdfPath
$secondPdfPath = Join-Path $PSScriptRoot $secondPdfPath
$targetPdfPath = Join-Path $PSScriptRoot $targetPdfPath
$firstPdf = New-Object PdfSharp.Pdf.PdfDocument
$firstPdf = $PdfReader::Open($firstPdfPath, $PdfDocumentOpenMode::Import)
$secondPdf = New-Object PdfSharp.Pdf.PdfDocument
$secondPdf = $PdfReader::Open($secondPdfPath, $PdfDocumentOpenMode::Import)
$secondIndex = $secondPdf.Pages.Count-1
foreach($page in $firstPdf.Pages) {
$output.AddPage($page)
if ($secondIndex -ge 0) {
$output.AddPage($secondPdf.Pages[$secondIndex--])
}
}
$output.Save($targetPdfPath)
}
end {
}
Низкотехнологичное решение. Сканируйте один раз с шагом АПД, установленным на +2, чтобы получить нечетные страницы. Переверните стопку, установите начальный номер на номер последней нечетной страницы +1 и приращение до -2, чтобы получить четные страницы в обратном порядке.