2

.NET Azure アプリケーションでオンザフライで PDF を生成する必要があり、PDFLibが私たちの要件を最もよく満たしていると判断しました。

基本的な展開は dll ベースであるため、比較的簡単です。この問題を調査しているときに、別の同様のコンポーネント (AbcPdf、ここでは) のインストールをカバーするケーススタディに出くわしました。これにより、クラウド サービスで PDFLib を起動して実行することに関して、共有できる同様の詳細な経験があるかどうか疑問に思いました。 ?

具体的には、パッケージと一緒にコピーする必要がある、参照されている .dll 以外のファイルがあるかどうか、起動コマンドを使用して GAC に PDFLib をインストールする必要があるかどうか、およびライセンスの取得に問題があるかどうかに関心があります。クラウド環境で。

もちろん、必要に応じて VM を使用することもできますが、最初は標準のワーカー ロールを使用することを考えています。私は PDFLib サポートにこの質問を依頼し、ここで得た回答を共有します。このトピックは Stackoverflow の他の場所ではカバーされていないためです。

4

4 に答える 4

2

これは私が PDF Lib サポートから得たもので、すべてをカバーしていると思います:

.NET PDFLib には GAC の配置が必要ですか、それとも dll をサーバーにコピーするだけでよいですか?

pdflib_dotnet dll を簡単にデプロイできます。

PDFLib が機能するために配置する必要がある、参照されている dll 以外のファイルはありますか?

いいえ、PDFlib にはそれ以上の依存関係はありません。

インストーラーを実行できない可能性があり、Windows レジストリにアクセスできない可能性がある環境で製品ライセンスを認証するにはどうすればよいですか?

これには複数の方法があります。最も簡単な方法は、コードでライセンス キーを適用することです。ライセンスファイルを適用することもできます。PDFlib を本番環境で実行する場合、サーバーごとに個別のライセンスが必要になることを覚えておいてください。たとえば、4 つのノード (サーバー) を持つクラスター システムでアプリケーションを実行する場合、4 つのライセンスが必要です。

また、このようなクラウド展開に関する一般的なガイダンスはありますか?

これについて特別なコメントはありません。しかし、私たちの PDFlib .NET 実装の概念に関する多くの関連情報は、PDFlib 8 パッケージに含まれている「PDFlib in .NET Howto」で見つけることができ、私たちの Web サイトでも入手できます: http ://www.pdflib.com/en/developer/technical-documentation/pdflib-in-net-howto/

于 2012-08-17T09:35:53.010 に答える
1

PDFLib x64バージョンをダウンロードして、WindowsAzureWebロールを簡単に試してみました。ライブラリには、PDFlib_dotnet.dllとして1つのDLLのみが含まれています。これを参照として追加し、そのプロパティを「ローカルをTrueとしてコピー」に設定できます。その後、コードでそれを参照し、ドキュメントに基づいて使用することができます。

私の簡単なテストに基づいて、Windows Azureローカルストレージを使用してPDFファイルを作成し、Windows Azure Blobストレージに同期して適切に永続化するように、コードを変更する必要があります。PDFをAzureBlobストレージに直接作成する方法があるかもしれませんが、私はそれ以上調べませんでした。

次のコードを使用してASP.NETベースのWebロールを作成しました。

        PDFlib p;
        int font;

        p = new PDFlib();

        try
        {
            // This means we must check return values of load_font() etc.
            p.set_parameter("errorpolicy", "return");

            // Added code to create PDF on Local Storage 

            LocalResource myStorage = RoleEnvironment.GetLocalResource("myLocalStorage");
            string filePath = Path.Combine(myStorage.RootPath, "hello.pdf");


            if (p.begin_document(filePath, "") == -1)
            {
                Console.WriteLine("Error: {0}\n", p.get_errmsg());
                return;
            }

            p.set_info("Creator", "hello.cs");
            p.set_info("Author", "Rainer Schaaf");
            p.set_info("Title", "Hello, world (.NET/C#)!");

            p.begin_page_ext(595, 842, "");

            font = p.load_font("Helvetica-Bold", "unicode", "");
            if (font == -1)
            {
                Console.WriteLine("Error: {0}\n", p.get_errmsg());
                return;
            }

            p.setfont(font, 24);
            p.set_text_pos(50, 700);
            p.show("Hello, world!");
            p.continue_text("(says .NET/C#)");
            p.end_page_ext("");

            p.end_document("");
        }

        catch (PDFlibException eX)
        {
            // caught exception thrown by PDFlib
            Console.WriteLine("PDFlib exception occurred in hello sample:\n");
            Console.WriteLine("[{0}] {1}: {2}\n", eX.get_errnum(),
                    eX.get_apiname(), eX.get_errmsg());
        }
        finally
        {
            if (p != null)
            {
                p.Dispose();
            }
        }
    }
于 2012-08-16T22:56:33.920 に答える
1

あなたが実際の経験を求めていることは知っていますが、答えはこれでうまくいくはずだということです。http://www.pdflib.com/fileadmin/pdflib/pdf/support/PDFlib-in-.NET-HowTo.pdfから:

xcopy デプロイメントと呼ばれるプロセスもサポートされています。xcopy コマンドまたは FTP 転送を使用して、PDFlib アセンブリ (pdflib_dotnet.dll) をサーバーにコピーするだけです。

于 2012-08-16T20:53:58.683 に答える
1

まず、このコメントを Azure にデプロイしていません。ただし、次の内容は、使用しているほぼすべてのコンポーネントに対して正確である必要があります。

このコンポーネントを通常のサーバーに xcopy デプロイするだけで、クラウド サービスへの通常のデプロイ パッケージで動作するはずです。ただし、通常のサーバー (開発マシンではありません) に配布するときに必要なインストールがある場合は、ここでいくつかの追加の手順が必要になる場合があります。たとえば、インストールによってアセンブリが GAC にプッシュされる場合は、それに従う必要があります。

以前にこのコンポーネントをインストールしたことがない通常のオンプレミス ボックスへの xcopy 展開ロールアウトをテストし、それが機能するかどうかを確認します。もしそうなら、それがあなたのパッケージで参照され、展開されることを確認するだけで十分でしょう。他のアセンブリが必要になる可能性があることを懸念している場合は、Reflector、Just Decompile、ILDasm などを使用して、アセンブリが持つ参照を確認してください (注意してください。アセンブリで逆コンパイラを使用すると、EULA に違反する可能性があります)。

于 2012-08-16T15:45:03.020 に答える