我正在使用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#,如果这有任何区别的话。)
答案 0 :(得分:7)
答案 1 :(得分:1)
在Aspose的Java版本中,您可以通过调用
来检查许可证是否已设置License.isLicenseSet();
返回一个布尔值。请注意,这是一种静态方法。
答案 2 :(得分:1)
我尝试创建一个可以执行此操作的Spring bean(如下所示),但它不起作用。 Spring似乎想要调用License.setLicense(Reader)而不是License.setLicense(String)。我得到的错误是无法转换类型' java.lang.String'的属性值。要求的类型' 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) {
}
}