Разделение большого PDF в маленькие файлы

Чтец протеста: Я ничего не знаю о VMS. Однако я нашел эту документацию, которая объясняет, как удаленно соединиться с X с поля Linux на сервер VMS и по-видимому подает заявку отлично к Вашей проблеме. Эта другая документация предоставляет некоторым больше окровавленную подробную информацию в случае, если Вы нуждаетесь в помощи, настраивая XDMCP и т.п..

2
12.05.2013, 14:04
3 ответа

Я нашел этот сценарий Python названным smpdf, который имеет эту функцию. Этот сценарий записан на немецком языке (часть его), но достаточно легко выяснить то, что он делает и как использовать его. Это требует PyPdf.

Установка и Установка

Сначала загрузите сценарий:

svn checkout http://smpdf.googlecode.com/svn/trunk/ smpdf

Затем загрузите и установите PyPdf:

wget http://pybrary.net/pyPdf/pyPdf-1.13.tar.gz
tar zxvf pyPdf-1.13.tar.gz
cd pyPdf-1.13
sudo python setup.py install
cd ../smpdf

Затем я загрузил демонстрационный файл PDF с example5.com. Конкретно этот файл.

Использование smpdf:

[ERROR] Ung�ltiger Aufruf
===========================================================================
                         PDF Manipulator
               (c) 2007 by Franz Buchinger
---------------------------------------------------------------------------

   Verwendung:

   pdfm split 5 file.pdf       Datei file.pdf in PDFs mit jeweils 5 Seiten splitten
   pdfm chunk 3 file.pdf       Datei file.pdf in max. 3 MB grosse PDFs splitten
   pdfm burst file.pdf         Jede Einzelseite in file.pdf in ein PDF schreiben
   pdfm merge f1.pdf f2.pdf    f1.pdf und f2.pdf in ein PDF mergen
   pdfm merge output.pdf dir   mergt alle PDFs im Verzeichnis dir in die Datei output.pdf
   pdfm info f1.pdf            zeigt Dokumentinformationen (Groesse, Seitenzahl, Titel,..) zu f1.pdf an

Файл примера, который мы загрузили, следующие:

$ pdfinfo chickering04a.pdf 
Title:          chickering04a.dvi
Creator:        dvips(k) 5.94a Copyright 2003 Radical Eye Software
Producer:       AFPL Ghostscript 8.0
CreationDate:   Fri Oct  8 17:53:18 2004
ModDate:        Fri Oct  8 17:53:18 2004
Tagged:         no
Pages:          44
Encrypted:      no
Page size:      612 x 792 pts (letter)
File size:      386372 bytes
Optimized:      no
PDF version:    1.3

Таким образом, этот файл примера имеет 44 страницы и составляет 386 КБ в размере. Используя следующую команду мы можем разделить PDF на файлы блока, которые являются ~0.1MB (~100KB).

python pdfsm.py chunk 0.1 chickering04a.pdf

Который производит следующий вывод:

    ======== NEUES PDF ========
    Seite:0, Groesse: 12696
    Seite:1, Groesse: 11515
    Seite:2, Groesse: 17209
    Seite:3, Groesse: 17411
    Seite:4, Groesse: 17060
    Seite:5, Groesse: 26303
======== NEUES PDF ========
    Seite:9, Groesse: 31014
    Seite:10, Groesse: 27666
    Seite:11, Groesse: 18548
...
...
======== NEUES PDF ========
    Seite:40, Groesse: 19059
    Seite:41, Groesse: 20912
    Seite:42, Groesse: 17685
    Seite:43, Groesse: 5362

Наш каталог теперь содержит следующие файлы:

$ ls -l
total 1220
-rw-rw-r-- 1 saml saml  74471 May 12 09:23 chickering04a-chunk001.pdf
-rw-rw-r-- 1 saml saml  78673 May 12 09:23 chickering04a-chunk002.pdf
-rw-rw-r-- 1 saml saml  89259 May 12 09:23 chickering04a-chunk003.pdf
-rw-rw-r-- 1 saml saml  92569 May 12 09:23 chickering04a-chunk004.pdf
-rw-rw-r-- 1 saml saml  96953 May 12 09:23 chickering04a-chunk005.pdf
-rw-rw-r-- 1 saml saml  86390 May 12 09:23 chickering04a-chunk006.pdf
-rw-rw-r-- 1 saml saml  90815 May 12 09:23 chickering04a-chunk007.pdf
-rw-rw-r-- 1 saml saml  92094 May 12 09:23 chickering04a-chunk008.pdf
-rw-rw-r-- 1 saml saml  78909 May 12 09:23 chickering04a-chunk009.pdf
-rw-rw-r-- 1 saml saml 386372 May 12 08:30 chickering04a.pdf
-rwxrwxr-x 1 saml saml   9324 May 12 07:41 pdfsm.py
drwxr-xr-x 4 saml saml   4096 May 12 08:25 pyPdf-1.13
-rw-rw-r-- 1 saml saml  35699 May 12 08:24 pyPdf-1.13.tar.gz

Я использовал эту "взломанную" команду для показа статистики сгенерированных файлов PDF:

$ printf "%7s%6s\n" "# pages" "size"; for i in chickering04a-chunk00*; do pdfinfo $i | egrep "File size|Pages"|cut -d":" -f2;done|sed 's/[\t ]\+/ /'|paste - -
# pages  size
 5       74471 bytes
 3       78673 bytes
 3       89259 bytes
 5       92569 bytes
 4       96953 bytes
 3       86390 bytes
 5       90815 bytes
 6       92094 bytes
 5       78909 bytes
5
27.01.2020, 21:55

pdftk не имеет такой опции. Но можно разорвать полный файл на единственных страницах и объединить наборы этих страниц, пока Вы не пробежались бы через 5 МБ.

Было бы немного допуска на погрешность, поскольку единственная страница PDF имеет немного служебные по сравнению с объединенными (приводящий к блокам, которые, возможно, имели еще одну страницу перед осмотром через 5 МБ). Но с в среднем 0.2M на файл, который, вероятно, приемлем.

У меня есть программа (в Python), который делает это при объединении отсканированных страниц в файле TIFF, поскольку мое tiff→djvu преобразование имеет предел размера.

1
27.01.2020, 21:55

Как упоминалось выше, pdftk не предоставляет такой возможности, однако похоже, что PDFSam предоставляет:

With the split by size module you can tell PDFsam Basic to divide a PDF file into smaller ones of a given size. An example can be a 10Mb PDF split into 3 files with the size of 4Mb, 4Mb and 2Mb. Given the nature of the PDF files it is not always possible to get an accurate result.

Поскольку в исходном вопросе в качестве тега использовалась «командная -строка», фактическое правильное имя инструмента — вместоsejda-console(бэкэнд для пользовательского интерфейса PDFSam):

0
12.10.2020, 13:50

Теги

Похожие вопросы