8 に答える
OpenOffice.orgは、サーバー モード (つまり、GUI なし) で実行でき、RTF ファイルを読み取ったり、PDF ファイルを出力したりできます。
以下に応じて、いくつかのオプションがあります。
- アプリケーションが実行されるプラットフォーム
- アプリケーションがサーバー アプリケーション (たとえば、一度設定すると実行される Web サービス) になるか、広く利用可能なデスクトップ アプリケーション (たとえば、多くの人が簡単にダウンロードおよびインストールできる必要があるもの) になるか。
- ソリューションを機能させるために、プログラミングの労力をほとんど、または多く投入する意思があるかどうか
- 使用するプログラミング言語に柔軟に対応できるかどうか
以下にいくつかのオプションを示します。
- PDFCreator + COM
- Windows のみ
- デスクトップ アプリケーションとサーバー アプリケーションの両方に適しています
- 中程度のプログラミング作業
- COM を話すことができる任意の言語
- OpenOffice (+ JODConverter - オプション)
- クロスプラットフォーム (Windows、Linux など)
- OpenOfficeは100MB以上のダウンロードであるため、サーバーアプリケーションに適しています
- プログラミングの手間が少ない
- Java (JODConverter を使用している場合)、またはOpenOffice の UNOとインターフェースできる任意の言語
- IText + Apache POI
- クロスプラットフォーム (Windows、Linux など)
- デスクトップ アプリケーションとサーバー アプリケーションの両方に適しています
- 高いプログラミング労力
- ジャワ
編集
これは、あなたの質問といくつかの共通点がある古い投稿です。
編集2
あなたのコメントから、あなたは Linux を使用しており、C++ または Java を使用できることがわかりました。 必ずオプション 2 を使用してください。
JODConverter
(Java): ライブラリはOpenOffice
、ヘッドレス モードでのスポーンUno
と、ユーザーに代わって対話を行います。入力JODConverter
と出力のファイル名と入力と出力のタイプ (例: rtf と pdf) を指定すると、返されたときに出力ファイルの準備が整います。- C++: ヘッドレス モードで 1 つ (または負荷分散のために複数) の OpenOffice インスタンスを fork+exec できます (soffice はポート 8100 などのソケットで UNO リクエストをリッスンします)。アプリケーションからUno/CPPを使用して、OpenOffice に変換を実行するよう指示します。同じ方法です (これを行う方法については、ソース コードを
JODConverter
参照してください)。JODConverter
/opt/openoffice.org3/program/soffice.bin \
-accept=socket,host=127.0.0.1,port=8100;urp; \
-headless -nocrashreport -nodefault \
-nolockcheck -nologo -norestore
JODConverter
Java アプリからさまざまなドキュメント タイプ (テンプレートから動的に生成されたドキュメント) を .xml に変換することに成功していますpdf
。
無料の PDF プリンターである PDFCreator を使用します。pdfに印刷するだけです。これは、COM を介して制御できます。サンプル コードは、インストール ディレクトリの COM フォルダにあります。
Windows 用の PDFCreatorは、単一のドキュメントに対して最も簡単です。
また、ドキュメントを XML に変換し、XSLT および XSL-FO を使用して、大量のドキュメント セットの PDF 作成を自動化することもできます。これに関するチュートリアルはたくさんあります。
Python などの特定の言語の場合、かなり簡単に PDF に出力するためのライブラリが存在します。
他の単純なソリューションに対する XML の唯一の利点は、拡張性です。RTF、HTML、TXT、またはその他のテキスト形式でドキュメントをプログラムで出力することもできます。
PrimoPDF。これは仮想プリンターとして機能するため、印刷するだけでPDFが出力されます。
PDFプリンターを見る