XRay-Engine.org

Общий раздел => Форум => Тема начата: RedPython от 24 мая 2022, 00:33:50

Название: PDFные вопросы
Отправлено: RedPython от 24 мая 2022, 00:33:50
Есть же на свете уродцы, которые сканируют документы в формат пдф, сохраняя один скан в одну пдфку. Да ещё порой кверху ногами! Уууу, повбывав бы.
Короче, я не нашёл в интернетах пакетного конвертера пдф->жпг или типа того. Может кто из присутствующих знает?
Название: Re: Как извлечь картинки из PDF?
Отправлено: Romich от 24 мая 2022, 12:41:55
FineReader не подойдет?
Название: Re: Как извлечь картинки из PDF?
Отправлено: abramcumner от 25 мая 2022, 10:24:50
Говорят imagemagick умеет конвертить:
convert -density 300 -quality 100 in.pdf out.jpg
Правда судя по параметру density, он его виртуально распечатывает, а не вытаскивает картинку.

Еще можно скачать xpdf command tools (https://www.xpdfreader.com/download.html). Там есть утилита pdfimages, которая именно вытаскивает картинки из pdf.
Но скорей всего они будут не в формате jpg :) Придется тем же imagemagick`ом конвертить.
Название: Re: Как извлечь картинки из PDF?
Отправлено: RedPython от 25 мая 2022, 17:23:00
Цитата: 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 (https://www.xpdfreader.com/download.html). Там есть утилита pdfimages, которая именно вытаскивает картинки из pdf.
Но скорей всего они будут не в формате jpg :) Придется тем же imagemagick`ом конвертить.
Во, то что надо, спасибо. С ключом -j (https://www.xpdfreader.com/pdfimages-man.html) сохраняет как раз в жпг.
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
Название: Re: Как извлечь картинки из PDF?
Отправлено: RedPython от 13 ноября 2022, 01:12:07
У меня тут пдфка (издательский макет с форматированным текстом и интерактивным оглавлением, не сканированные изображения) на 300 страниц, в которой часть страниц перепутана местами. Есть способ разложить её и собрать по порядку?
Название: Re: Как извлечь картинки из PDF?
Отправлено: abramcumner от 14 ноября 2022, 11:29:14
Я такого способа не знаю. Может через акробат можно как-нибудь.
Название: Re: Как извлечь картинки из PDF?
Отправлено: RedPython от 14 ноября 2022, 15:13:18
А если есть две пдфки того же типа, то их можно склеить в одну с сохранением интерактивного оглавления?
Название: Re: Как извлечь картинки из PDF?
Отправлено: abramcumner от 14 ноября 2022, 17:39:56
Можно попробовать такую тулзу: https://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/

Якобы умеет объединять и переставлять страницы. Что творит с оглавлением, не знаю.
Название: Re: Как извлечь картинки из PDF?
Отправлено: RedPython от 18 ноября 2022, 16:44:22
Не, не вижу опции разбиения пдфок. В консольной утилите пишет это: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 (https://pypdf2.readthedocs.io/en/latest/user/merging-pdfs.html), cropping, and transforming (https://pypdf2.readthedocs.io/en/latest/user/cropping-and-transforming.html) the pages of PDF files. It can also add custom data, viewing options, and passwords (https://pypdf2.readthedocs.io/en/latest/user/encryption-decryption.html) to PDF files. PyPDF2 can retrieve text (https://pypdf2.readthedocs.io/en/latest/user/extract-text.html) and metadata (https://pypdf2.readthedocs.io/en/latest/user/metadata.html) from PDFs as well.
Дело за малым: изучить библу и написать скрипт, которая всё сделает за меня. Или не сделает - кто его знает, как оно выдирает данные из исходника.
Название: Re: Как извлечь картинки из PDF?
Отправлено: abramcumner от 18 ноября 2022, 16:52:32
Вроде как для разбиения так вызывается:
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
Название: Re: Как извлечь картинки из PDF?
Отправлено: RedPython от 18 ноября 2022, 18:13:44
Осилил, спасибо :)
:: собрать промежуточный файл без части страниц внутри (как бы вырезать диапазон ненужного)
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
В итоге файл похудал на несколько десятков килобайт, но визуально ничего неправильного я не заметил, всё вырезалось и склеилось гладко и красиво. А интерактивное оглавление, как оказалось, изначально не работало.
Название: Re: Как извлечь картинки из PDF?
Отправлено: abramcumner от 18 ноября 2022, 18:24:10
> А интерактивное оглавление, как оказалось, изначально не работало.
:)

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

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

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

то есть после cat можно сколько угодно повторять диапазоны и в любом порядке
Название: Re: Как извлечь картинки из PDF?
Отправлено: RedPython от 18 ноября 2022, 19:26:33
Так вообще офигенно. Но понятность ощутимо снижается.
Что за оглавление такое? Да обычное оглавление с гиперссылками, ктрл-клик - оно или на якорь по тексту прыгает, или веб-страничку открывает. Только в нашем случае не прыгает (см. 25 страницу, там, где синенькое оглавление)
https://drive.google.com/file/d/1X8h3i4UEaBPUSxYp5fCggFoV9dpcuPSP/view?usp=sharing (https://drive.google.com/file/d/1X8h3i4UEaBPUSxYp5fCggFoV9dpcuPSP/view?usp=sharing)
Эту книжку когда-то собирали из отдельных частей, которые выкладывали на одном из хабов научников (https://www.sciencedirect.com/science/article/pii/B9780123785787000193?via%3Dihub), лишив пустых страниц, обычного оглавления и обложек, и засунув введение в конец книги, перед списком терминов. В итоге пришлось переставлять введение в начало, и пришивать обложку с оглавлением из демоверсии, доступной на сайте книжного издательства. Идеально было бы тырануть ещё и заднюю обложку с амазона, но там как-то хитро всё устроено, и вряд ли даже есть доступ к оригинальной пдфке. Да и не стоит оно того.