Рассмотрите следующую процедуру:
1) Откройте файл PDF с помощью (Ubuntu) средство просмотра документов.
2) Файл Goto
3) Печать Goto
4) Выберите 'Print as file' и проверьте метку "PDF"
Да, я печатаю PDF как файл PDF. Я должен сделать это для большого количества файлов. Я хотел бы сделать это запускающее скрипт на терминале.
Возможно, Вы думаете, что эта процедура не имеет никакого смысла вообще, но это на самом деле был единственный безопасный способ, которым я нашел, чтобы заниматься проблемой, которую рассматривают здесь. Этот вопрос о StackOverflow показывает проблему с файлами PDF, которыми не найден маркер EOF. Когда я делаю процедуру, описанную выше, я могу решить эту проблему [Это не решение, представленное в сайте StackOverflow, который не работает здесь.]
Я хотел бы к этому автоматически со всеми файлами, которые представляют эту проблему.
Я знаю, что должен создать один сценарий (.sh) к этому, но я не знаю, как продолжить двигаться.
Пример файла (1) PDF с проблемами здесь
Исправленный файл (2) PDF здесь
Единственная разница между ними - то, что я открыл первое использование "Средства просмотра документов Ubuntu", я перешел к "Файлу", "Печати", "Печать в Файл", "Output=pdf".
Я хочу сделать это автоматически.
Править:
Я НЕ хочу объединять файлы.
Удостоверьтесь, что Вы имеете cups-pdf
установленный и добавленный как принтер. Отметьте название принтера PDF. (дополнительно) Редактирование /etc/cups/cups-pdf.conf
: не прокомментируйте и измените строку, где, говорит #Out /var/spool/cups-pdf/${USER}
желаемому выходному каталогу.
Затем перезапуск CUPS: sudo systemctl restart cups
Теперь для печати, сделайте:
SOURCEDIR="/path/to/source/pdfs"
for i in "$SOURCEDIR"
do
lpr -P <pdf printer name> "$i"
done
Теперь копируют файлы от выходного каталога по умолчанию до желаемого местоположения, если Вы не отредактировали cups-pdf.conf
Install poppler-utils
и работали pdfunite input1.pdf input2.pdf input3.pdf output.pdf
.
Можно достигнуть того, что Вы хотите наиболее легко с помощью Ghostscript. Я успешно протестировал это с версией 9.26 Ghostscript:
gs \
-o out.pdf \
-sDEVICE=pdfwrite \
in.pdf
я должен признать, я действительно не постигаю Вашу проблему с маркером EOF в неизмененный файл в качестве примера здесь , потому что я могу ясно видеть, что этот маркер EOF присутствует в нем.
Однако я вижу дополнительную проблему, которая показывает в Вашем , 'исправил' файл в качестве примера здесь : этот теперь использует размер страницы A4 (595 x 842 pts) с большими белыми полями, тогда как Ваш неизмененный файл имеет маленькие поля и размер страницы 362 x 558 pts (который является меньше чем половиной A4!)
Мой метод имеет преимущество для сохранения исходных размеров страницы.
Для применения это ко всем файлам PDF в текущем каталоге, включая все подкаталоги, использует следующую команду:
find . -name "*.pdf" -type f | while read line; do
gs -o mod-${line} -sDEVICE=pdfwrite "${line}"
done