У меня есть симплексный сканер с податчиком документов, и я ищу лучший способ сканирования двусторонних заметок. Было бы полезно иметь возможность сканировать одну и ту же стопку дважды, после переворота, и иметь утилиту, которая автоматически чередует отсканированные изображения. Экспорт многостраничных PDF-файлов также был бы хорош. Есть ли инструмент для этого?
В противном случае я рассматриваю возможность написания на Python с модулем imagescanner, если он сможет использовать ADF --http://pypi.python.org/pypi/imagescanner/0.9
Спасибо
решение1
Старый вопрос, все еще актуальный:
Использовать"простое сканирование". Он имеет функцию "переупорядочить страницы". Я нашел эту подсказкуздесь.
решение2
Отсканируйте документ как PDF с упорядоченными страницами, как они были отсканированы, т.е. сначала все нечетные страницы, затем все четные. Затем исправьте это с помощью:
pdftk raw.pdf cat odd even output ordered.pdf
Смотрите такжеОбъединить два PDF-файла, содержащих четные и нечетные страницы книги.
решение3
На сканере с устройством автоматической подачи документов (АПД) я делаю следующее:
- Сканировать нечетные страницы с первой по последнюю, сохранить как первый файл 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 {
}
решение4
Низкотехнологичное решение. Сканируйте один раз с шагом ADF, установленным на +2, чтобы получить нечетные страницы. Переверните стопку, установите начальный номер на номер последней нечетной страницы +1 и шаг на -2, чтобы получить четные страницы в обратном порядке.