web-dev-qa-db-ja.com

できればOpenOffice.orgを使用せずに、ヘッドレスサーバーでDoc / Docxテンプレートを処理してPDFを生成する

実稼働Webサーバーでは、MS-Wordバイナリ形式で取得したテンプレートに基づいてレターを作成する必要があります。 PHPを使用し、検索および置換タスクにDocxファイルを処理できるPHPWordを見つけたため、ローカルワークステーションでテンプレートをOpenXMLに変換しました。残念ながら、出力もDocxです。

目標は、ユーザーがダウンロードする単一のPDFを作成して、大量の文字を一度に非常に簡単に印刷できるようにすることです。

次に、次のいずれかの方法を見つける必要があります。

  • PDFファイル内のテキストを検索して置換する
  • フォーマットを失うことなくDocxをPDFに変換します
  • フォーマットを失うことなく、COMを使用せずに元のDocテンプレートを編集する
  • 書式設定を失うことなくDocxをDocに変換します(Wordでテンプレートの見た目はほとんど不可能に見えますが、技術的には書式設定の方法は大きな山です...)

OpenOffice.org以外に使用したくないのはWebサービスです。 PHPLiveDocxは知っていますが、パフォーマンス、可用性、セキュリティ上の理由で外部サービスに依存したくありません。また、この場合、ソフトウェアを購入することは選択肢ではありません(それに影響を与えることはできません)。

一般公開向けのWebサーバーで実行するOpenOffice.orgはプルしたくありません。160MBの圧縮された(!)バイナリをプルするため、ヘッドレスでさえありません。ベストプラクティスは、バイナリをロードしないことです本当に公開サーバーに必要です。 oo.oを使用するのは最後の手段ですが、他のオプションが除外されていることを確認したいと思います。

ホストOSはCentOS 5.5です。

ここからどこに行けますか?

よろしく、ルクシファー

3
luxifer

私の知る限り、Libre Officeに依存せずにこれを実行できるアプリケーションはありません。

ただし、コマンドライン変換のみを実行する場合は、オフィススイート全体をインストールする必要はありません。

ツール unoconvInstall unoconv はニーズを満たします。依存関係としてpythonとpython-unoがあります。後者は、依存関係としてlibreoffice-coreをインストールしますが、オフィススイート全体ではありません。

10
Takkat

AbiWord は、コマンドラインから知っているすべての形式を変換します。これには、言及したすべての形式が含まれます。例えば、。 ODTをPDFに変換するには:

abiword --to=pdf filename.odt

.docxを.docに変換するには:

abiword --to=doc filename.docx

(検索したい場合は、HTMLやRTF、さらにはTXTなどのプレーンテキストに変換して検索し、必要に応じて元に戻します。)

しかし、OpenOfficeをインストールせず、そのライブラリをunoconvなどで使用できる明白な理由は何ですか?

4
frabjous

このリンクにあるAbiWordサーバー側の例を試すことができます http://www.advogato.org/person/msevior/diary.html?start=65

1
Madhava

PyODConverterで試してください( こちらを参照

0
cupakob