PDFные вопросы

Автор RedPython, 24 мая 2022, 00:33:50

« назад - далее »

RedPython

Есть же на свете уродцы, которые сканируют документы в формат пдф, сохраняя один скан в одну пдфку. Да ещё порой кверху ногами! Уууу, повбывав бы.
Короче, я не нашёл в интернетах пакетного конвертера пдф->жпг или типа того. Может кто из присутствующих знает?

Romich


abramcumner

Говорят imagemagick умеет конвертить:
convert -density 300 -quality 100 in.pdf out.jpg
Правда судя по параметру density, он его виртуально распечатывает, а не вытаскивает картинку.

Еще можно скачать xpdf command tools. Там есть утилита pdfimages, которая именно вытаскивает картинки из pdf.
Но скорей всего они будут не в формате jpg :) Придется тем же imagemagick`ом конвертить.

RedPython

Цитата: Romich от 24 мая 2022, 12:41:55
FineReader не подойдет?
Не, нужно что-то легковесное, безустановочное, коммандлайновое, типа конвертера бардака, чтобы написать батник и оно само сделало всю работу.
Цитата: abramcumner от 25 мая 2022, 10:24:50
Говорят imagemagick умеет конвертить:
convert -density 300 -quality 100 in.pdf out.jpg
Правда судя по параметру density, он его виртуально распечатывает, а не вытаскивает картинку.

Еще можно скачать xpdf command tools. Там есть утилита pdfimages, которая именно вытаскивает картинки из pdf.
Но скорей всего они будут не в формате jpg :) Придется тем же imagemagick`ом конвертить.
Во, то что надо, спасибо. С ключом -j сохраняет как раз в жпг.
pdfimages.exe -j 1.pdf -out
А батник сделал всё как я хочу, моментально и автоматически.
@echo off

set "IN_DIR=C:\test"
set "OUT_DIR=C:\test\exx"

if not exist "%OUT_DIR%" md "%OUT_DIR%"

for %%A in ("%IN_DIR%\*.pdf") do (pdfimages.exe -j "%%~A" "%OUT_DIR%\%%~nA")

pause

RedPython

У меня тут пдфка (издательский макет с форматированным текстом и интерактивным оглавлением, не сканированные изображения) на 300 страниц, в которой часть страниц перепутана местами. Есть способ разложить её и собрать по порядку?

abramcumner

Я такого способа не знаю. Может через акробат можно как-нибудь.

RedPython

А если есть две пдфки того же типа, то их можно склеить в одну с сохранением интерактивного оглавления?

abramcumner

Можно попробовать такую тулзу: https://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/

Якобы умеет объединять и переставлять страницы. Что творит с оглавлением, не знаю.

RedPython

Не, не вижу опции разбиения пдфок. В консольной утилите пишет это:C:\Program Files (x86)\PDFtk\bin>pdftk.exe
SYNOPSIS
       pdftk <input PDF files | - | PROMPT>
            [ input_pw <input PDF owner passwords | PROMPT> ]
            [ <operation> <operation arguments> ]
            [ output <output filename | - | PROMPT> ]
            [ encrypt_40bit | encrypt_128bit ]
            [ allow <permissions> ]
            [ owner_pw <owner password | PROMPT> ]
            [ user_pw <user password | PROMPT> ]
            [ flatten ] [ need_appearances ]
            [ compress | uncompress ]
            [ keep_first_id | keep_final_id ] [ drop_xfa ] [ drop_xmp ]
            [ verbose ] [ dont_ask | do_ask ]
       Where:
            <operation> may be empty, or:
            [ cat | shuffle | burst | rotate |
              generate_fdf | fill_form |
              background | multibackground |
              stamp | multistamp |
              dump_data | dump_data_utf8 |
              dump_data_fields | dump_data_fields_utf8 |
              dump_data_annots |
              update_info | update_info_utf8 |
              attach_files | unpack_files ]

       For Complete Help: pdftk --help
А в гуишной вообще денех хочет, но пан пендос не даёт заплатить разработчикам, и они останутся без моих $3.99

Остаётся только пухтоновое PyPDF2, теоретически оно должно мочь выдирать отдельные страницы из существующего и писать их в новый пдф:
ЦитироватьPyPDF2 is a free and open-source pure-python PDF library capable of splitting, merging, cropping, and transforming the pages of PDF files. It can also add custom data, viewing options, and passwords to PDF files. PyPDF2 can retrieve text and metadata from PDFs as well.
Дело за малым: изучить библу и написать скрипт, которая всё сделает за меня. Или не сделает - кто его знает, как оно выдирает данные из исходника.

abramcumner

Вроде как для разбиения так вызывается:
pdftk in.pdf burst

для перестановки:
pdftk in.pdf shuffle указываешь_диапазоны_страниц_из_старого_документа

поменять местами 7 и 8 страницу:
pdftk in.pdf shuffle 1-6 8 7 9-end

для слияния:pdftk A=in1.pdf B=in2.pdf cat A B output out.pdf
вот дока: https://www.pdflabs.com/docs/pdftk-man-page/#dest-op-burst

RedPython

Осилил, спасибо :)
:: собрать промежуточный файл без части страниц внутри (как бы вырезать диапазон ненужного)
pdftk A=in.pdf B=in.pdf cat A1-364 B378-382 output temp.pdf

:: собрать финальный файл, вставив вновь вырезанное в начало промежуточного файла
pdftk A=in.pdf B=temp.pdf cat A365-377 B output out.pdf

del temp.pdf
В итоге файл похудал на несколько десятков килобайт, но визуально ничего неправильного я не заметил, всё вырезалось и склеилось гладко и красиво. А интерактивное оглавление, как оказалось, изначально не работало.

abramcumner

> А интерактивное оглавление, как оказалось, изначально не работало.
:)

Что за оглавление такое? Скинь что ли скриншот.

По идее можно было в одну команду сделать:

pdftk A=in.pdf B=in.pdf cat A365-377 A1-364 B378-382 output out.pdf

то есть после cat можно сколько угодно повторять диапазоны и в любом порядке

RedPython

Так вообще офигенно. Но понятность ощутимо снижается.
Что за оглавление такое? Да обычное оглавление с гиперссылками, ктрл-клик - оно или на якорь по тексту прыгает, или веб-страничку открывает. Только в нашем случае не прыгает (см. 25 страницу, там, где синенькое оглавление)
https://drive.google.com/file/d/1X8h3i4UEaBPUSxYp5fCggFoV9dpcuPSP/view?usp=sharing
Эту книжку когда-то собирали из отдельных частей, которые выкладывали на одном из хабов научников, лишив пустых страниц, обычного оглавления и обложек, и засунув введение в конец книги, перед списком терминов. В итоге пришлось переставлять введение в начало, и пришивать обложку с оглавлением из демоверсии, доступной на сайте книжного издательства. Идеально было бы тырануть ещё и заднюю обложку с амазона, но там как-то хитро всё устроено, и вряд ли даже есть доступ к оригинальной пдфке. Да и не стоит оно того.