Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

21 Ноябрь 2017, 10:48 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Часто задаваемые вопросы по LibreOffice и Apache OpenOffice.org
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: 1 2 »   Вниз
  Печать  
Автор Тема: [РЕШЕНО] Пакетный экспорт офисных документов в PDF  (Прочитано 2026 раз)
0 Пользователей и 1 Гость смотрят эту тему.
kompilainenn
Ветеран
*****
Offline Offline

Сообщений: 2 109



« Стартовое сообщение: 14 Март 2017, 12:42 »

Уважаемые, гуру. Либра может экспорт офисных форматов в PDF. Однако это все вручную и по одному документу отдельно. Есть ли способ заставить либру делать пакетный экспорт документов в ПДФ с возможностью выбора исходных документов и настройкой некоторых параметров (в данном случае интересует выбор, какие конкретно листы документа выводить в ПДФ)?
« Последнее редактирование: 16 Март 2017, 22:00 от kompilainenn » Записан

Поддержать разработчиков LibreOffice можно тут, а наш форум вот тут
mikekaganski
Ветеран
*****
Online Online

Пол: Мужской
Расположение: Хабаровск -> Москва
Сообщений: 662


« Ответ #1: 14 Март 2017, 13:18 »

Из коробки - можно только использовать командную строку. Там нельзя указать диапазон для экспорта.

Но можно написать макрос, который бы занимался экспортом сам, и (опять-таки) из командной строки открывать все нужные файлы с запуском нужного макроса. Конфигурабельность макроса - вопрос исправления исходного кода либо навороченность его с реализацией UI и хранения параметров. Вот, например, здесь макрос экспортирует в PDF один лист таблицы.
Записан

С уважением,
Михаил Каганский
economist
Ветеран
*****
Offline Offline

Сообщений: 741


« Ответ #2: 15 Март 2017, 08:24 »

Немного офф, но всё-же. Пробовал в свое время и макрос-переборщик, и безголовый режим, и расширения.

После массовой конвертации 5 тыс ODF/DOC/XL*-файлов в PDF - оказалось что 90% файлов - мусор, требующий ручного удаления (то есть бОльших трудозатрат). Почти всегда документ нужно открыть, посмотреть, поправить, и лишь потом его PDF-ить.

В итоге массовое "запэдээфиванеи" сделали путем размещения некоего текста-гиперссылки
на каждом нужном листе и макрос, подобный #1 его сохранял (с обновлением). Это оказалось намного лучше и "точнее" чем расширения multisave, PDFSaveAndSend итп.

Но еще более полезным оказалось развитие этого метода - "забазаданнивание". То есть перед каждым закрытием Calc/Writer - макрос все именованные особым образом диапазоны/поля - считывал и укладывал в БД SQLite/BASE. Это буквально преобразило офис и всю отчетность, поскольку стало ненужным наводить марафет в каждом "адчетике и далбичке", а иметь одноразмерные данные в сетевом расшаренном файле базы, доступном по сети нескольким десяткам пользователей Base, со всей силой и скоростью SQL-запросов.

Снизился и расход бумаги, так как из 1000 показателей (10-20 листов), распечатываемых на ежеутреннюю планерку для 30 чел. - на практике обсуждается всего 2-3 показателя. Остальные по DDE зеркалятся в презентацию и крутятся на большом ТВ, молча намекая на размышления об отпуске.
« Последнее редактирование: 15 Март 2017, 08:28 от economist » Записан

Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...
kompilainenn
Ветеран
*****
Offline Offline

Сообщений: 2 109



« Ответ #3: 15 Март 2017, 09:14 »

цель моей хотелки - именно экспорт ВСЕГО документа в ПДФ с возможностью выбора диапазона страниц, потому что часто нужно, чтобы ПДФ был без первого листа. Ничего кроме, никакие базы данных и прочая не требуется.
Записан

Поддержать разработчиков LibreOffice можно тут, а наш форум вот тут
mikekaganski
Ветеран
*****
Online Online

Пол: Мужской
Расположение: Хабаровск -> Москва
Сообщений: 662


« Ответ #4: 15 Март 2017, 09:22 »

Я бы воспользовался пакетным преобразованием в виде связки LO и ghostscript (для вырезания ненужных страниц из получившихся PDF).
Записан

С уважением,
Михаил Каганский
kompilainenn
Ветеран
*****
Offline Offline

Сообщений: 2 109



« Ответ #5: 15 Март 2017, 10:42 »

Я бы воспользовался пакетным преобразованием в виде связки LO и ghostscript (для вырезания ненужных страниц из получившихся PDF).
мне нужно на виндовс это все делать.
и я бы вообще воспользовался отдельной специализированной утилитой, но я таких просто не нашел
ps: это какой-то трешак. нашел, как я сам же в лохматых годах писал рецепт http://lna.org.ru/forum/index.php?topic=1948.0
кто понимает питон? можно этот скрипт доработать?
« Последнее редактирование: 15 Март 2017, 10:44 от kompilainenn » Записан

Поддержать разработчиков LibreOffice можно тут, а наш форум вот тут
mikekaganski
Ветеран
*****
Online Online

Пол: Мужской
Расположение: Хабаровск -> Москва
Сообщений: 662


« Ответ #6: 15 Март 2017, 11:04 »

Я понимаю, что это моветон, но вот для обычной командной строки Windows без питона:
Код:
for %f in ("D:\Documents\*.odt") do start "dummyTitle" /wait "C:\Program Files\LibreOffice 5\program\soffice.exe" --convert-to pdf --outdir "D:\Documents\pdf-out" "%f"

А вот устранение первых страниц у результата с помощью GhostScript:
Код:
for %f in ("D:\Documents\pdf-out\*.pdf") do start "dummyTitle" /wait "C:\Program Files\gs\gs9.20\bin\gswin64c.exe" -sDEVICE=pdfwrite -dNOPAUSE -dBATCH -dSAFER -dFirstPage=2 -sOutputFile="D:\Documents\pdf-out\stripped\%~nf.pdf" "%f"

Вместо GhostScript можно воспользоваться любой утилитой, умеющей вытаскивать страницы из PDF. Например, PDFtk. Преимущество специальных утилит для PDF может состоять в том, что GhostScript производит избыточные преобразования: например, растровые изображения могут пострадать внутри получающегося PDF.
« Последнее редактирование: 15 Март 2017, 11:23 от mikekaganski » Записан

С уважением,
Михаил Каганский
kompilainenn
Ветеран
*****
Offline Offline

Сообщений: 2 109



« Ответ #7: 15 Март 2017, 11:21 »

Я понимаю, что это моветон
а это не моветон, вопрос в том, как задать диапазон страниц для каждого файла?
Записан

Поддержать разработчиков LibreOffice можно тут, а наш форум вот тут
mikekaganski
Ветеран
*****
Online Online

Пол: Мужской
Расположение: Хабаровск -> Москва
Сообщений: 662


« Ответ #8: 15 Март 2017, 11:24 »

@kompilainenn: если требуется отдельный процессинг каждого файла, то о каком пакетном преобразовании речь?

Вот .bat на основе вышеприведённых команд для обработки одного файла:

Код:
REM Первый параметр - имя файла, второй - начальная страница, третий - конечная страница, четвёртый - результирующая папка
start "dummyTitle" /wait "C:\Program Files\LibreOffice 5\program\soffice.exe" --convert-to pdf --outdir "%4" "%1"
start "dummyTitle" /wait "C:\Program Files\gs\gs9.20\bin\gswin64c.exe" -sDEVICE=pdfwrite -dNOPAUSE -dBATCH -dSAFER -dFirstPage=%2 -dLaststPage=%3  -sOutputFile="%4\%~n1.pdf.new" "%4\%~n1.pdf"
del "%4\%~n1.pdf"
move "%4\%~n1.pdf.new" "%4\%~n1.pdf"

Запускать как-то так:
Код:
magic.bat path\to\file.odt 2 4 path\to\result
« Последнее редактирование: 15 Март 2017, 11:40 от mikekaganski » Записан

С уважением,
Михаил Каганский
JohnSUN
Капитана в тот день называли на "ты"
Гуру
*******
Offline Offline

Пол: Мужской
Расположение: Киев
Сообщений: 2 359


Помогаю людям и компьютерам понимать друг друга


WWW
« Ответ #9: 15 Март 2017, 11:37 »

...о каком пакетном преобразовании речь?
Скорее всего, о многократном. ИМХО, речь о заполнении данными (скорее всего вручную) пачки шаблонов и конвертации результата в пакет PDF-документов для отправки. Переделывать шаблоны, чтобы исключить из печати целые разделы, просто влом. Да и юзеры уже привыкли "as is"
Продолжаем ковырять рецепт с GhostScript...
А если вместо "for ля-ля-ля do" в батнике будет набор строк - по одной для каждого файла, с персональным диапазоном страниц?
Подготовить такой батник можно, например, в Калк - три колонки (имя файла, первая страница, последняя страница) для редактирования и формула с CONCAT для формирования команды start
Записан

Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне
economist
Ветеран
*****
Offline Offline

Сообщений: 741


« Ответ #10: 15 Март 2017, 12:05 »

kompilainenn - такие спецоперации по удалению "ненужного" - народ очень быстро делает в бесплатной утилите http://www.pdfsam.org/ и переубедить их не удается, говорят что очень удобно всё реализовано.  

Я сделал десяток батников для мышиного Drag&Drop, которое удобно после сканирования на МФУ, в работе - постоянно, используются free-утилиты:
- для разрезания, отбраковки титула, поворота, склейки - уместен самый быстрый pdftk.exe, но не поддерживает кириллицу в именах, нужно переименование (прямо в батнике)
- сжатие любой графики в PDF - ImageMagick (convert.exe), весьма требователен к RAM.
- распознавание текста и сохранениев файл (тут без ghostscript и tesseract.exe никак)  
- нахождение QR-кода с кириллицей и его чтение (zbarimg.exe)
- пронумеровать "вырезку" из PDF заново - batemaster.exe
итд

Например, чтобы пронумеровать PDF, просто тащим его на батник и бросаем:

Код:
REM _20. Пронумеровать страницы PDF-файла A4 (портретная).bat
REM @ECHO OFF & SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
CHCP 1251
\Temp\batesmaster.exe --overwrite --format %%d --inpdf %1 --xoffset 560 --yoffset 15
pause

Бросание мышью, несмотря на атавизм, весьма удобно и редко приводит к ошибкам.    
« Последнее редактирование: 15 Март 2017, 12:14 от economist » Записан

Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...
kompilainenn
Ветеран
*****
Offline Offline

Сообщений: 2 109



« Ответ #11: 15 Март 2017, 13:53 »

если требуется отдельный процессинг каждого файла, то о каком пакетном преобразовании речь?
входные параметры для всех файлов единые. то есть если нам нужна пачка файлов в ПДФ и мы задаем диапазон страниц для экспортаЮ как 3-10, то значит ВСЯ пачка и должна быть выведена в диапазоне 3-10
Записан

Поддержать разработчиков LibreOffice можно тут, а наш форум вот тут
kompilainenn
Ветеран
*****
Offline Offline

Сообщений: 2 109



« Ответ #12: 15 Март 2017, 13:54 »

Скорее всего, о многократном. ИМХО, речь о заполнении данными (скорее всего вручную) пачки шаблонов и конвертации результата в пакет PDF-документов для отправки
нет, есть просто куча файлов в отдельном каталоге, они готовы к экспорту в ПДФ. точка
Записан

Поддержать разработчиков LibreOffice можно тут, а наш форум вот тут
mikekaganski
Ветеран
*****
Online Online

Пол: Мужской
Расположение: Хабаровск -> Москва
Сообщений: 662


« Ответ #13: 15 Март 2017, 13:57 »

@kompilainenn: тогда тебе надо во второй команде из ответа #6 определить -dFirstPage=3 и -dLastPage=10. Точка Улыбка
Записан

С уважением,
Михаил Каганский
economist
Ветеран
*****
Offline Offline

Сообщений: 741


« Ответ #14: 15 Март 2017, 14:24 »

pdftk.exe может быстрее чем GS убрать ненужный лист из полного файла.  Из документации:
Remove 'page 13' from in1.pdf to create out1.pdf
  pdftk in.pdf cat 1-12 14-end output out1.pdf
  or:
  pdftk A=in1.pdf cat A1-12 A14-end output out1.pdf
Записан

Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...
Страниц: 1 2 »   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!