Утилита для сканирования стопок двусторонних документов

У меня есть симплексный сканер с устройством подачи документов, и я ищу лучший способ сканирования двусторонних заметок. Было бы полезно иметь возможность сканировать один и тот же стек дважды, после переворачивания, и иметь утилиту для автоматического чередования отсканированных изображений. Многостраничный экспорт PDF также был бы хорош. Есть ли инструмент для этого?

В противном случае я подумываю написать его на Python с модулем imagescanner, если он может использовать АПД - http://pypi.python.org/pypi/imagescanner/0.9

Спасибо

2 ответа

Старый вопрос, все еще актуальный:

Используйте "простое сканирование". Он имеет функцию "переупорядочить страницы". Я нашел этот намек здесь.

Отсканируйте документ как PDF со страницами, упорядоченными по мере сканирования, то есть сначала все нечетные страницы, затем все четные. Затем исправьте это с помощью:

pdftk raw.pdf cat odd even output ordered.pdf

См. Также " Объединение двух файлов PDF, содержащих четные и нечетные страницы книги".

Я делаю следующее на своем сканере с автоподатчиком документов (АПД):

  1. Сканировать нечетные страницы с 1-й до последней, сохранить как первый файл pdf
  2. Переверните стопку страниц и отсканируйте четные страницы с последней на вторую, сохраните как второй файл PDF
  3. Объедините оба файла с помощью небольшого скрипта 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, чтобы получить четные страницы в обратном порядке.

Другие вопросы по тегам