Создание PDF из командной строки OpenOffice

У меня есть некоторая документация, написанная в OpenOffice, и я хотел бы включить некоторые из них в виде PDF-файлов в окончательные поставки сборки. Я хотел бы сделать это с помощью сценария автоматической сборки.

Есть ли способ создать файл PDF из OpenOffice с помощью команды командной строки?


person Drejc    schedule 10.12.2008    source источник


Ответы (5)


Art of Solving также имеет очень хороший API для выполнения преобразования в Java. Это немного медленно, но достаточно просто. Вот как я его использую:

        File inputFile = new File("C:\\oreyes\\hola.doc"); 
        File outputFile = new File("C:\\oreyes\\hola.pdf"); 
        OpenOfficeConnection connection = new SocketOpenOfficeConnection(8100);
        try { 
            connection.connect(); 
        } catch(Exception e) {}

        DocumentConverter converter = new OpenOfficeDocumentConverter(connection);
        converter.convert(inputFile, outputFile); 
        connection.disconnect(); 

Вы можете создать банку с этим и обработать его из командной строки.

person OscarRyz    schedule 10.12.2008
comment
Сделал так же как вы описываете, но указал OpenOfficeConnection officeConnection = new SocketOpenOfficeConnection( "my_local_vm_ip", 8100 );, а у меня все время ошибка. Exception in thread "main" com.artofsolving.jodconverter.openoffice.connection.OpenOfficeException: conversion failed: could not load input document - person Eugene; 21.07.2011
comment
Если вы хотите экспортировать с определенными параметрами (например, PDF с тегами), вам нужно сначала установить их в OpenOffice или LibreOffice? - person Tsundoku; 12.08.2016

По состоянию на сентябрь 2012 года LibreOffice может конвертировать документ в PDF из командной строки:

lowriter --headless --convert-to pdf yourfile.odt

Он также поддерживает массовое преобразование:

lowriter --headless --convert-to pdf yourfiles*.odt

преобразует все файлы, соответствующие шаблону, в соответствующий файл PDF.

При выполнении этой команды не должно быть открытых окон LibreOffice.

person Eineki    schedule 20.09.2012
comment
Это очень аккуратно. Знаете ли вы, есть ли способ обновить оглавление перед преобразованием? - person Pieter Hintjens; 15.12.2012
comment
Мне удалось конвертировать изображения, текстовые документы, электронные таблицы. Работает как шарм. - person Valentin Despa; 02.07.2013
comment
Это решение очень прочное, но немного медленное. Немного информации для тех, кто думает об этом, начиная с версии 4.1.0.4 довольно простой файл конвертируется за 1800 мс. - person Ben Gripka; 26.07.2013
comment
Странно, у меня просто открывается новый документ с Libreoffice в Ubuntu 13.10: аргументы --convert-to и --headless, похоже, игнорируются. Однако я пытаюсь конвертировать электронные таблицы, а не документы. - person andybuckley; 20.12.2013
comment
@andybuckley Вы используете localc? Я только что использовал команду на LTS ubuntu (используя localc вместо lowriter), и она работала безупречно. - person Eineki; 23.12.2013
comment
@Eineki Да, я использовал localc. Я подозреваю, что что-то не так с моей системой и/или последней версией LibreOffice. А вот unoconv (ниже) из репозитория U13.10 работал отлично. - person andybuckley; 27.12.2013
comment
Поскольку это еще не задокументировано здесь: Если этот вызов командной строки завершается с ошибкой с этим сообщением Error: Please reverify input parameters..., попробуйте запустить его от имени пользователя root (например, через sudo). Это помогло мне в Ubuntu 12.04 LTS с установленным Libreoffice 3. И если он игнорирует параметр --headless, попробуйте вызвать loffice или libreoffice вместо lowriter. - person Michael Helwig; 19.05.2014
comment
@PieterHintjens Вы можете определить глобальную маркировку для обновления оглавления перед выполнением преобразования, как показано в ask.libreoffice.org/en/question/46586/. Возможно, вы захотите начать в автономном режиме и добавить starDesktop.terminate() в макрос, чтобы закрыть LibreOffice после завершения преобразования. - person Augustus Kling; 25.01.2016
comment
Если вы хотите экспортировать с определенными параметрами (например, PDF с тегами), вам нужно сначала установить их в OpenOffice или LibreOffice? Или есть аргумент командной строки для таких параметров? - person Tsundoku; 12.08.2016
comment
--convert-to уже подразумевает --headless, по крайней мере, в моем случае (версия 6.0.7.3 00m0(Build:3)). - person knia; 16.12.2019

Есть отличный инструмент под названием «unoconv», он был в моем репозитории Ubuntu. Преобразует ODF, .ods, ... в PDF и, думаю, в другие форматы.

Я также мог конвертировать файлы PowerPoint в PDF.

person Community    schedule 16.05.2009

Хотя этот вопрос немного устарел, здесь кое-что для документирования некоторых распространенных ошибок с решением LibreOffice:

  • Если lowriter не работает для вас, потому что он игнорирует параметры командной строки и вызывает графический интерфейс, просто попробуйте вызвать двоичные файлы libreoffice или loffice:

    loffice --headless --convert-to pdf yourfile.odt

  • Если вы получите это сообщение

    Error: Please reverify input parameters...

    попробуйте запустить его как root (например, через sudo). Это помогло мне в Ubuntu 12.04 LTS с установленным LibreOffice 3, а также может быть причиной того, что это преобразование не работает на веб-сервере без правильной настройки (Libreoffice --headless отказывается конвертировать, если нет root, не будет работать из скрипта PHP)

  • Также убедитесь, что у вас не запущены какие-либо другие экземпляры LibreOffice, иначе он просто молча выйдет из строя и вообще не будет выполнять преобразование.

person Michael Helwig    schedule 19.05.2014

Существует anytopdf. Сам не пробовал.

Цитирование...

anytopdf — это Perl-скрипт, который конвертирует OpenOffice.org, Microsoft Office (Word DOC, Excel XLS), RTF, HTML и другие читаемые форматы файлов openoffice.org в формат PDF. Он автоматически установит поддерживающую библиотеку макросов OpenOffice.org Basic AnyToPDF в конфигурации OpenOffice.org текущего пользователя, если она еще не присутствует.

Посвящается миру, любви, пониманию и уважению ко всем существам.

person Archie    schedule 26.07.2010