15

私の Web プロジェクトでは、レポート テンプレートを含めるために DocX ファイル タイプを使用しています。DocX ファイル タイプを PDF に変換する必要があります。それを行うための .Net マネージド コードはありますか?

私はこの問題を解決するためのいくつかの方法を知っています。ただし、以下の項目のようにマネージ コードではなく、無料です。

  • Word 12.0 オブジェクト ライブラリWord 2007 ドキュメントを PDF ドキュメントまたは XPS ドキュメントとしてプログラムで保存するには。ただし、サーバーに Office 2007 をインストールする必要があります。

  • PDFCreatorなどの無料の PDF プリンターを使用して印刷します。しかし、Office 2007 のようなサーバーで DocX を開くためのプログラムが必要です。それは非常に悪い考えです。

  • 無料の変換プログラムで変換します。しかし、結果は完璧ではありません。

  • XF Rendering Serverのようなフレームワークを使用します。とても良いアイデアですが、無料ではありません。

  • iTextSharpのような PDF Api ですべてのドキュメント コンテンツを作成します。でも、素敵なドキュメントを作るために、私は頑張らなければなりません。

  • または、DocX および PDF ファイル形式にエクスポートできる他のファイル形式でテンプレート ドキュメントを作成します。さらに、エンドユーザーはこのファイルを簡単に編集する必要があります。ご存知でしたら教えてください。

ありがとう、

4

5 に答える 5

8

DocX を PDF に変換するためのコードを持っていませんが、DocX に対する要件が明確ではないようです。あなたの最後の箇条書きは次のように述べています。

または、DocX および PDF ファイル形式にエクスポートできる他のファイル形式でテンプレート ドキュメントを作成します。さらに、エンドユーザーはこのファイルを簡単に編集する必要があります。ご存知でしたら教えてください。

これを読んだのは、テンプレート ドキュメントを作成し、データを入力して PDF に変換し、テンプレートを維持できるようにしたいという意味ですよね?

解決策: XSL-FO

XSL-FO は HTML のような W3C 標準であり、多くのオープン ソースおよび商用製品によって PDF、WordML、XPS、PS、PCL、SVG、TIFF などに変換できます。私はこれを使用して、何十万ものドキュメントを配信しました。毎月、PDF としてのオンラインとオフライン (一括小切手の印刷など) の両方。

開始するには、ここにあるXML-FO の W3C ページを参照してください。そこには、左側にあるソフトウェア (オープン ソースと商用の両方) のリストなど、多くの優れた情報があります。個人的には、 IBEX PDF CreatorXEP by RenderXという 2 つの商用製品を使用しました。どちらも優れた製品であり、CodePlex でFO.NETと呼ばれる PDF に到達するための 100% マネージ C# 実装があります。私はこれを試していませんが、「無料」の基準を満たす必要があります。

XSL-FO で作成されるドキュメントのテンプレートを編集する方法はいくつかあります。通常、このテンプレートは XML データに適用する XSLT ですが、必須ではありません。私はこれらを手作業で作成しましたが、学習曲線が少しあります。HTML と同じように、XSL-FO のドキュメントから始めて、そのセクションにコードを入力できます。良いニュースは、 XSL-FO エディター多数存在 することです。悪いニュースは、私が知っている無料のものはないということですが、それらのいくつかは安価であり、少しグーグルで無料の基準を満たすものを見つけることができます. ただし、1 つのオプションは、スタイルシート (商用および無料)を使用して Word から変換できることです。

于 2009-10-18T05:17:37.637 に答える
3

Office 2007 をインストールして Word 12 Object Library を使用することは、間違いなく私が選ぶ選択肢です (そして、私自身のプロジェクトのいくつかでそうしました)。

運用 Web サーバーに Word をインストールしたくない場合は、セカンダリ サーバーにインストールしてください。この 2 番目のサーバーを (Web サービスなどを使用して) 最初のサーバーと通信させることができます。エクスポートが必要な次の Word ドキュメントを要求し、変換を行ってから PDF データを返すことができます。

この変換を行う Word オートメーションの C# の例が必要な場合はお知らせください (非常に簡単です)。

エイドリアン


これがジェイソンのために投稿された私のコードです。これは Word 2007 で動作します。Office の Web サイトから PDF エクスポーターをダウンロードしてインストールする必要があります。

using Microsoft.Office.Interop.Word;

...

object _read_only = false;
object _visible = true;
object _false = false;
object _true = true;
object _dynamic = 2;
object  _missing = System.Reflection.Missing.Value;

object _htmlFormat = 8;        
object _pdfFormat = 17;
object _xpsFormat = 18;

object fileName = "C:\\Test.docx";

ApplicationClass ac = new ApplicationClass();
//ac.Visible = true; // Uncomment to see Word as it opens and converts the document
//ac.Activate();

Document d = ac.Documents.Open(ref fileName, ref _missing, ref _true, ref _read_only, ref _missing, ref _missing, ref _missing, ref _missing, ref _missing, ref _missing, ref _missing, ref _visible, ref _missing, ref _missing, ref _missing, ref _missing);

object newFileName = ((string)fileName).Substring(0, ((string)fileName).LastIndexOf(".")) + ".pdf";

d.SaveAs(ref newFileName, ref _pdfFormat, ref _missing, ref _missing, ref _missing, ref _missing, ref _missing, ref _missing, ref _missing, ref _missing, ref _missing, ref _missing, ref _missing, ref _missing, ref _missing, ref _missing);

d.Close(ref _false, ref _missing, ref _missing);
ac.Quit(ref _false, ref _missing, ref _missing);

ac = null;

それで、Soul_Master、あなたが言っているのは、相互運用機能を使用したくないということです (ただし、理由は言いませんが、知りたいのですが)、商用の輸出業者にお金を払いたくないということです。あなたは完璧な結果が欲しいですか?

私はあなたを助けることができません、私は恐れています。相互運用性により、常に完璧な結果が得られます。ソフトウェアは既にお持ちです。それを使用しない場合は、コストまたは品質のいずれかを犠牲にする必要があります。

于 2009-09-08T14:27:36.503 に答える
0

Open Office には API がありますか? それは少なくとも無料のオプションでしょうか?

ActiveReports/Crystal Reports などのレポート ツールを使用して PDF を作成します (iTextSharp を使用するよりもはるかに簡単です)。

于 2009-09-04T17:21:14.773 に答える
0

OpenOffice.org を使ってみることができます

http://abdulmunim.com/how-to-convert-office-documents-to-pdf-using-open-office-in-csharp/

于 2013-12-26T09:29:42.393 に答える