我正在使用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");

pdfLicensewordLicense 变量永远不会在任何地方使用,但是Aspose正确地识别我确实有有效的许可证。这是怎么发生的?这些许可证是否在秘密的单身人士中持有?如果是这样,这是否意味着它们持续到线程的寿命?

由于在Web应用程序中使用了这一点,因此如果我在应用程序启动时运行上述代码,那么我可以在整个应用程序中安全地使用Aspose而不必担心许可吗?

目前,我在使用aspose的每种方法的开头时都会变得更加偏执,并运行该代码。这正常工作 - 我的许可证正确正确 - 但对此感到满意,这太“逐一编程”。

(如果有任何区别,我将使用c#与ASP.NET 3.5使用。)

有帮助吗?

解决方案

如果您阅读 产品文档, ,您将看到这一行:

您需要在执行任何文档操作之前设置许可证。只需要设置许可证 一次每个应用程序(或过程).

因此,这是以过程为中心的。

其他提示

在Aspose的Java版本中,您可以通过致电检查许可证是否设置

License.isLicenseSet();

返回布尔值。请注意,这是一种静态方法。

我尝试创建一个可以做到这一点的弹簧豆(如下所示),但它不起作用。 Spring似乎想致电license.setlicense(读取器)而不是许可证(string)。我得到的错误是 无法将“ java.lang.string”类型的属性值转换为所需类型的java.io.io.reader for属性'许可证'.

<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) {
    }

}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top