PDFファイルにオフィスシリーズ(1)--- Officeファイル(ワード、PPT、エクセル)

要件:記事のプレビューとして、ウェブページ上のOfficeファイル、主に(ワード、PPT、エクセル)ファイルの3種類。

2つの解決策を見つけるために少し研究

https://view.officeapps.live.com/op/view.aspx?src=http%3a%2f%2fvideo.ch9.ms%2fbuild%2f2011%2fslides%2fTOOL-532T_Sutter.pptx

srcスプライシングの裏には、ファイルのアドレスをプレビューすることがある(場合上記のアドレスは、公式プレビューでページに直接表示することができます)

  • オフィスは、PDFのプレビューページを変換します

Officeベースのソリューションを実装します

実装:(PDFファイルとしてOfficeソフトウェアを使用してWord文書を開くに類似し、それ保存)OfficeファイルをPDFに変換するために、C#のコードを呼び出すことにより、サーバ上のCOMインターフェイス、ローカルサーバーのMicrosoft Officeにインストールされています。

(これらのパッケージのみNugetパッケージマネージャパッケージによってインストールすることができる必要があり.Net FrameWork、プロジェクトのバージョンを使用すること)

Microsoft.Office.Interop.Word
Microsoft.Office.Interop.PowerPoint
Microsoft.Office.Interop.Excel

コード:

public class OfficeHelper
{
    static Word.Application wordApplication = new Word.Application();
    static Excel.Application excelApplication = new Excel.Application();
    static PowerPoint.Application pptApplication = new PowerPoint.Application();
    
    /// <summary>
    /// 将Word文档转换成PDF格式
    /// </summary>
    /// <param name="sourcePath">源文件路径</param>
    /// <param name="targetPath">目标文件路径</param>
    /// <returns></returns>
    public static bool WordConvertPDF(string sourcePath, string targetPath)
    {
        bool result;
        Word.Document wordDocument = null;
        try
        {
            wordDocument = wordApplication.Documents.Open(ref sourcePath);
            if (wordDocument != null)
            {
                wordDocument.SaveAs2(targetPath, WdExportFormat.wdExportFormatPDF);
                //wordDocument.ExportAsFixedFormat(targetPath, WdExportFormat.wdExportFormatPDF);
                result = true;
            }
        }
        catch (Exception ex)
        {
            result = false;
            LogHelper.Log($"文件:{sourcePath} 生成失败,原因:{ex.Message}", ex.StackTrace);
        }
        finally
        {
            if (wordDocument != null)
            {
                wordDocument.Close();
                wordDocument = null;
            }
        }
        return result;
    }
    
    
    /// <summary>
    /// 将Excel文档转换成PDF格式
    /// </summary>
    /// <param name="sourcePath">源文件路径</param>
    /// <param name="targetPath">目标文件路径</param>
    /// <returns></returns>
    public static bool ExcelConvertPDF(string sourcePath, string targetPath)
    {
        bool result;
        Workbook workBook = null;
        try
        {
            workBook = excelApplication.Workbooks.Open(sourcePath);
            if (workBook != null)
            {
                workBook.ExportAsFixedFormat(XlFixedFormatType.xlTypePDF, targetPath);
                result = true;
            }
        }
        catch (Exception ex)
        {
            result = false;
            LogHelper.Log($"文件:{sourcePath} 生成失败,原因:{ex.Message}", ex.StackTrace);
        }
        finally
        {
            if (workBook != null)
            {
                workBook.Close();
                workBook = null;
            }
        }
        return result;
    }

    /// <summary>
    /// 将PPT文档转换成pdf格式
    /// </summary>
    /// <param name="sourcePath">源文件路径</param>
    /// <param name="targetPath">目标文件路径</param> 
    /// <returns></returns>
    public static bool PPTConvertPDF(string sourcePath, string targetPath)
    {
        bool result;
        object missing = Type.Missing;
        Presentation persentation = null;
        try
        {
            persentation = pptApplication.Presentations.Open(sourcePath, MsoTriState.msoTrue, MsoTriState.msoFalse, MsoTriState.msoFalse);
            if (persentation != null)
            {
                persentation.SaveAs(targetPath, PpSaveAsFileType.ppSaveAsPDF, Microsoft.Office.Core.MsoTriState.msoTrue);
                //persentation.ExportAsFixedFormat(targetPath, PpFixedFormatType.ppFixedFormatTypePDF);
                result = true;
            }
        }
        catch (Exception ex)
        {
            result = false;
            LogHelper.Log($"文件:{sourcePath} 生成失败,原因:{ex.Message}", ex.StackTrace);
        }
        finally
        {
            if (persentation != null)
            {
                persentation.Close();
                persentation = null;
            }
        }
        return result;
    }
}

OfficeのCOM APIの提供SaveAsExportAsFixedFormatドキュメントを生成するための2つの方法は、あなたが呼び出されたとき、ほとんどがそれ(上のデフォルト値を使用して別のパラメータに注意を払うに必要なインタフェースの文書アドレス)。

上記のコードではwordApplication静的変数として、ファイルがロードされ、かつ開口部を通って(プログラムに対応するOffice.Word開放されている)毎に上げました。私はローカルでテストしたとき、それがローカルのMicrosoft Officeをインストールされているコードの2016バージョンが正常に動作してきました。私は他の誰かを送信するためにプログラムを使用すると、ファイルの変換が失敗した後、それは、文書を処理するだけで最初に成功した変換のWordで見つかりました。
他の側は、コンピュータOffice365のバージョンにインストールされているため、最初のファイルの後に検査した後、そこに処理することができるwordApplicationオブジェクトがクローズされたファイルの背を正しく変換できない原因、。再インスタンス化への各変換の前にコードを変更しWord.Application、非効率的に各インスタンス化リードが、(再びOffice.Wordプログラムを再度開くに相当)が、すべてのファイルが正常に処理されています。最も驚くべきは、同じ環境であるpptApplication私に言うことができるパートナーのほとんど理解がある、連続通話のは、まだ問題の特定の原因を知らない、正常です。

達成するために、サードパーティ製のプラグインに基づくソリューション

ここで導入されスパイアGemBox 2つのプラグインでドキュメントを直接扱う、彼らは、サーバー上のOfficeソフトウェアをインストールすることはできません。
PS:使用への手数料の公式バージョンは、そうでない場合は、文書は透かしが生成されます。無料版は、作成や読み込みなど、いくつかの制限、必要がありますOfficeファイル、直接スロー例外制限を超えた場合は時のページ制限があります。

ここでは、コードの下に簡単に、詳細なAPIは、文書プラグイン探索するの公式サイトに行くことができます。

  • .NETのための無料Spire.Doc

public static void WordConvertPDF(string sourcePath, string targetPath)
{
    using (var doc = new Document(sourcePath))
    {
        doc.SaveToFile(targetPath, Spire.Doc.FileFormat.PDF);
    }
}
  • GemBox.Document無料版

public static void WordConvertPDF(string sourcePath, string targetPath)
{
    // If using Professional version, put your serial key below.
    ComponentInfo.SetLicense("FREE-LIMITED-KEY");
    DocumentModel document = DocumentModel.Load(sourcePath);
    document.Save(targetPath, SaveOptions.PdfDefault);
}

WPSベースのソリューションを実装します

これは、オフィスベースのソリューション、コード実装その変換されたファイルを介してコールCOMインターフェイス。もちろん、事前にサーバーにインストールされているソフトウェアをWPS。

ローカルWPSのインストールディレクトリには、プロジェクトに以下のDLLファイル、および参照を見つけ、

wpsapi.dll
wpsapiex.dll

コード:

public static void WordConvertPDF(string sourcePath, string targetPath)
{
    var app = new Word.Application();
    var doc = app.Documents.Open(sourcePath,Visible: MsoTriState.msoFalse);
    doc.SaveAs2(targetPath, Word.WdExportFormat.wdExportFormatPDF);
    doc.Close();
    app.Close();
}

これはWordされてwpsapi.dll以降のプログラム、アセンブリの名前空間名に追加。
WPSは私だけでネイティブに成功した実行呼び出すために文書を変換し、かつ実用的なアプリケーションは、唯一の理解とそれのビットをしようとしていると言わないことができます。

概要

PDFファイルにOfficeドキュメントは、シンプルで直接Webページに成功し、プレビューPDFファイルとなっており、さらにいくつかのデフォルトのブラウザではプレビューPDFファイルを開くことができます。このオンラインソリューションは、すでに多く、によって最終的な選択であるpdf.jsページのプレビュー。プレビューは、すでにしているファイル、および残りが示され、タイトルが乾燥しすぎて退屈され、カバーを送った王である、当事者がムードを設定することのいくつかの「現実的な」絵を必要と向かいます!
だから、自然にそれを設定する方法、適切なカバーアート文書へのこの質問はありますか?すぐに方法を考えましたカバーとしての目に自分で絵を喜ばを選択(まあ、これはナンセンスです)。次の解決策について、いくつかの本当に考え方があります。

  1. 表紙の絵内部のOfficeファイルを取得します。
  2. カバーとしてPDFファイルのプレビュー最初のページを取得します。

どのように葬儀、レッツ・聞く次の分解を(すべての後、私は完成ああを持っていない!~~~~)を予測。

おすすめ

転載: www.cnblogs.com/cplemom/p/12186527.html