0

docxファイルを開く必要があるこのコードスニペットがあり、それをpdfとして保存したいと思います。
残念ながら、エラーはスローされませんが、PDFは保存されません。

それを保存する方法についてのヒントはありますか?

var wordApplication = new Microsoft.Office.Interop.Word.Application();
Microsoft.Office.Interop.Word.Document wordDocument = null;

try
{
    wordDocument = wordApplication.Documents.Open(docPath + ".docx");

    if (wordDocument != null)
        wordDocument.SaveAs2(docPath + ".pdf", Microsoft.Office.Interop.Word.WdSaveFormat.wdFormatPDF);
        //wordDocument.ExportAsFixedFormat(docPath + ".pdf", Microsoft.Office.Interop.Word.WdExportFormat.wdExportFormatPDF);
    else throw new Exception("CUSTOM ERROR: Cannot Open Word Application");
}
catch (Exception ex)
{
    new Exception("CUSTOM ERROR" + ex.Message);
}
4

2 に答える 2

2

スタック上のこの投稿で詳しく説明されているさまざまなオプションがすでにあります。

Word、特にInteropは、COMベースの性質であるため、常に.NETルールに従って機能するとは限らないため、この種の処理を行う場合は特に苦痛になります。保存する前に、まずドキュメントをActivate()する必要がある場合があります。そうしないと、他の問題が発生する可能性があります。問題を特定するためだけに、ドキュメントを通常のdocxとして保存してみてください。また、ドキュメントに保存されていないものがある可能性があるため、最初に基本的なドキュメントでテストする価値があります。

編集:このリンクとこのリンクを参照してください

IISの調整は、アプリケーションプールの詳細設定にあります。特定のIDでプールを実行してから、[ユーザープロファイルの読み込み]をtrueに設定する必要があります。私はこのようなInteropを使用したことがなく、機能しない可能性があります。Word文書をPDFに変換しようとしているだけの場合は、相互運用よりも簡単な方法があります(OpenXML、PDFライブラリなど)。Interopを使用している理由はありますか?

編集:DocXを試してみることをお勧めします。あなたはここでそれを見つけることができます

これは変換に関する一般的な問題のようです。私は過去にAsposeを使用してこれを行いましたが、最高のコンポーネントを購入することなく、サーバー上でPDFを変換する必要はありませんでした(そしてAsposeは安くはありません!)。可能であれば、Interopに近づかないようにすることをお勧めしますが、その投稿を読んだ後、それが必要になる場合があります。

于 2012-09-14T14:05:56.327 に答える
1

サーバー2008r2でも同じ問題が発生し、サーバー2012r2とOffice2010/2016でも同じ問題が発生します。

C:\ Windows \ SysWOW64 \ config\systemprofileに「デスクトップ」フォルダを作成してみてください

これは私のための仕事です

これに関する別の記事を探す

オフィスの相互運用機能はWindowsサービスでは機能しません

于 2017-11-15T16:23:38.967 に答える