Frage

Ich benutze ASSONE, um PDFs und Word -Dokumente zu verarbeiten. Jedes Mal, wenn ich etwas mit einem Dokument mache, stelle ich sicher, dass ich Folgendes nenne:

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");

Das pdfLicense und wordLicense Variablen werden nirgendwo verwendet, aber ASSOSE erkennt korrekt an, dass ich eine gültige Lizenz habe. Wie kommt es dazu? Werden die Lizenzen irgendwo in einem geheimen Singleton gehalten? Wenn ja, heißt das, dass sie die Lebensdauer des Threads halten?

Wenn ich in einer Webanwendung verwendet wird, kann ich, wenn ich den oben genannten Code beim Start der Anwendung ausführe, Asspose in meiner Bewerbung sicher verwenden, ohne mir Sorgen um die Lizenz zu machen?

Im Moment würde ich paranoider sein und diesen Code zu Beginn jeder Methode ausführen, die ASSOSE verwendet. Dies funktioniert einwandfrei - meine Lizenz wird richtig erkannt - aber es ist ein bisschen zu "programmieren von Koincidenz", damit ich mich wohl fühlen kann.

(Ich verwende C# mit ASP.NET 3.5, wenn das einen Unterschied macht.)

War es hilfreich?

Lösung

Wenn Sie die lesen Produktdokumentation, Sie werden diese Zeile sehen:

Sie müssen eine Lizenz festlegen, bevor Sie Operationen mit Dokumenten ausführen. Es ist nur erforderlich, eine Lizenz festzulegen Einmal pro Anwendung (oder Prozess).

Daher ist es prozessorientiert.

Andere Tipps

In der Java -Version von Aspos können Sie überprüfen, ob die Lizenz durch Anrufe festgelegt wurde

License.isLicenseSet();

das gibt einen Booleschen zurück. Beachten Sie, dass dies eine statische Methode ist.

Ich habe versucht, eine Frühlingsbohne zu erstellen, die dies tun würde (wie unten gezeigt), aber es hat nicht funktioniert. Der Frühling schien lizenz zu sein. Der Fehler, den ich bekomme, ist Nicht konvertieren den Eigenschaftswert des Typs 'Java.lang.String' in den erforderlichen Typ 'java.io.reader' für die Eigentumslizenz '.

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

Ich habe jedoch diese generische (Java) Lösung zum Arbeiten gebracht:

web.xml:

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

ApplicationStartuplistener.java (neue Klasse):

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

}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top