7

私はAsposeを使用してPDFとWord文書を処理しています。ドキュメントで何かをしようとするたびに、必ずこれを呼び出します。

Aspose.Pdf.License pdfLicense = new Aspose.Pdf.License();
pdfLicense.SetLicense("Aspose.Total.lic");

Aspose.Words.License wordLicense = new Aspose.Words.License();
wordLicense.SetLicense("Aspose.Total.lic");

pdfLicense変数と変数はどこでも使用されることはwordLicenseありませんが、Asposeは私が有効なライセンスを持っていることを正しく認識しています。これはどのように起こりますか?ライセンスはどこかに秘密のシングルトンで保持されていますか?もしそうなら、これはそれらがスレッドの存続期間中続くことを意味しますか?

これはWebアプリケーションで使用されているため、アプリケーションの起動時に上記のコードを実行すると、ライセンスを気にせずにアプリケーション全体でAsposeを安全に使用できますか?

現時点では、私はもっと妄想的で、Asposeを使用するすべてのメソッドの開始時にそのコードを実行しています。これは問題なく機能します-私のライセンスは正しく認識されています-しかし、それは私がそれについて快適に感じるには少し「偶然の一致によるプログラミング」です。

(違いがあれば、ASP.NET 3.5でC#を使用しています。)

4

3 に答える 3

7

製品のドキュメントを読むと、次の行が表示されます。

ドキュメントで操作を実行する前に、ライセンスを設定する必要があります。アプリケーション(またはプロセス)ごとに1回だけライセンスを設定する必要があります。

したがって、プロセス中心です。

于 2010-03-10T11:07:20.523 に答える
1

AsposeのJavaバージョンでは、を呼び出すことでライセンスが設定されているかどうかを確認できます。

License.isLicenseSet();

これはブール値を返します。これは静的メソッドであることに注意してください。

于 2012-12-04T10:46:59.137 に答える
1

これを実行するSpringBeanを作成しようとしましたが(以下に示すように)、機能しませんでした。Springは、License.setLicense(String)ではなくLicense.setLicense(Reader)を呼び出したいようです。私が得るエラーは、タイプ'java.lang.String'のプロパティ値をプロパティ'license'の必要なタイプ'java.io.Reader'に変換できませんでした。

<bean id="asposeLicense" class="com.aspose.cells.License">
    <property name="license" value="Aspose.Cells.lic" />
</bean>

しかし、私はこのより一般的な(Java)ソリューションを機能させました:

web.xml:

<!-- does things needing doing when application starts or stops -->
<listener>
    <listener-class>
        com.xyz.listener.ApplicationStartupListener
    </listener-class>
</listener>

ApplicationStartupListener.java(新しいクラス):

package com.xyz.listener;

import java.io.InputStream;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import com.aspose.cells.License;

public class ApplicationStartupListener implements ServletContextListener {
    protected final Log logger = LogFactory.getLog(getClass());

    @Override
    public void contextInitialized(ServletContextEvent event) {
    logger.info("Initializing application context...");

    try {
        // set license for Aspose.Cells (the Excel API)
        InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("excel/Aspose.Cells.lic");
        License license = new License();
        license.setLicense(inputStream);
        logger.info("Aspose.Cells license set? " + License.isLicenseSet());
    } catch (Exception e) {
        logger.error("Error encountered trying to set Aspose.Cells license!", e);
    }

    logger.info("Application context initialized");
    }

    @Override
    public void contextDestroyed(ServletContextEvent event) {
    }

}
于 2014-06-17T01:17:00.460 に答える