2015-02-11 3 views
1

С помощью документов4j-сервера, работающих и прослушивающих http://localhost:9998, можно ли конвертировать документ с помощью прямой HTTP-команды?Преобразование документов по HTTP

Пример:

http://localhost:9998?source=C:\Test.doc?target=C:\Test.pdf 

Подробнее:

Я был несколько шагов впереди себя ...

Я использую Apache FOP сервлет работает на Apache-Tomcat в качестве услуги создавать PDF-документы из XML/XSLT.

После запуска PDF можно сгенерировать через http.

Пример:

http://localhost:8080/fop/ 
    ?xml=C:/temp/Test.xml 
    &xslt=C:/temp/Test-Style-Sheet.xsl 
    &pdf=C:/temp/Test.pdf 

Я выполнить эту команду из приложения базы данных (который устанавливает источник XML и управляет результирующую PDF).

Я искал возможность сделать что-то подобное с документами4j для преобразования Word Doc в PDF.

Итак, теперь я понимаю, что мне действительно нужна возможность передать имя/тип исходного документа и тип преобразования (плюс любые другие требуемые параметры) на внешний порт программы/http, который затем может упаковать запросить надлежащим образом, а затем инициировать процесс формальной конверсии.

Может ли кто-нибудь предоставить консультацию или решение?

ответ

0

Не так, как вы его пытаетесь, сервер преобразования не сможет читать или записывать в вашу файловую систему. Сервер не может этого сделать, это будет серьезное нарушение безопасности.

Вместо этого вы можете отправить файл по HTTP POST как тело сообщения, это то, что делает клиент. Затем ответ содержит преобразованный файл как тело ответа. Вы используете заголовок запроса, чтобы указать свой запрос:

  1. Для определения типа ввода вы используете заголовок HTTP Content-Type.
  2. Для определения запрашиваемого типа вы используете заголовок HTTP Accept.

В качестве примера, для преобразования файлов из MS Word в PDF, вы бы, например, использовать application/vnd.com.documents4j.any-msword в качестве входа и application/pdf как тип ПРИНЯТЬ заголовка в.

Вы также можете использовать реализацию клиента, которая поставляется с документами4j и которая описана в разделе Converter client in the readme. Этот клиент отправляет именно такой запрос.

Редактировать: Для этого вам нужно будет настроить свое минимальное клиентское приложение. Минимальное приложение будет выглядеть так:

class MyApp { 
    public static void main(String[] args) { 
    IConverter converter = LocalConver.make(); 
    converter 
     .convert(new File(args[0])).as(DocumentType.MS_WORD) 
     .to(new File(args[1])).as(DocumentType.PDF) 
     .execute(); 
    converter.shutDown(); 
    } 
} 

Учитывая, что вы передаете первую и вторую команды через командную строку. Кроме того, вы можете подключиться к серверу через RemoteConverter.Конечно, вы также можете использовать встроенный инструмент командной строки для того, который, однако, недоступен через HTTP. Вы могли бы написать небольшое приложение, которое делегирует этот инструмент командной строки, если это было вашим требованием.

+0

Я, должно быть, пропустил ссылки на инструмент командной строки. Не могли бы вы предоставить некоторую информацию об этом. Еще раз спасибо. –

+0

Вы можете запустить инструмент командной строки 'java -jar documents4j-client-standalone-shaded.jar http: // localhost: 9998', просто загрузить затененную банку с http: //search.maven.org/#artifactdetails | com.documents4j | documents4j-client-standalone | 0.2.1 | jar –

+0

Спасибо - Успех! У меня минимальный клиент работает с использованием вышеприведенного кода очень грубо, используя множество строк импорта и ссылаясь на «заштрихованные» банки в команде java execute, чтобы получить Classpath. Время конвертировать документ было заметно длиннее, чем через веб-метод в локальной демонстрации, поэтому теперь я рассмотрю улучшения производительности, устраняя любые введенные накладные расходы. –

Смежные вопросы