Téléchargement des produits


Version anglaise


 


Adélia Crystal Reports Print Engine (ACRPE) est un moteur de production d'états Crystal Reports et d'impression de fichiers sous forme d'API web.

Ce moteur s'exécute dans un environnement Windows (.NET version 4.6.1 minimum + Runtime Crystal Reports for Visual Studio SP26 ou +).
Les atouts de l'ACRPE sont les suivants : une fiabilité accrue, des performances améliorées, un mode de déploiement plus aisé.
Dans un contexte Adélia Cloud, Adélia Web ou Adélia Event, l'ACRPE peut se substituer au service middleware Adélia d'impression (svcgenrapw).
Dans un contexte client Windows, l'ACRPE peut se substituer au mode local d'impression. Dans ce contexte, la prévisualisation d'un état a pour effet de produire un fichier PDF dont l'affichage est assuré par l'application par défaut de la machine cliente.


L'ACRPE existe sous deux formes :

  • une application console nommée ACRPE_console [ACRPE_console.exe (Any CPU), ACRPE_console_x86.exe (32 bits), ACRPE_console_x64.exe (64 bits)] et 
  • une application de type service Windows nommée ACRPE_service [ACRPE_service.exe (Any CPU), ACRPE_service_x86.exe (32 bits), ACRPE_service_x64.exe (64 bits)].

Ces deux applications sont fournies dans le sous-répertoire ACRPE du répertoire d'installation du runtime Adélia Studio.
Une archive (.zip) contenant tous les objets de l'ARCPE est disponible dans le sous-répertoire Distrib/ACRPE.


Remarque : Les applications ACRE_console et ACRPE_service existent en 3 versions :

  • Les applications ACRPE_console.exe et ACRPE_service.exe sont de type "Any CPU" et peuvent fonctionner aussi bien avec un runtime Crystal Reports .NET 32 bits qu'avec un runtime Crystal Reports .NET 64 bits.
  • Les applications ACRPE_console_x86.exe et ACRPE_service_x86.exe ne peuvent fonctionner qu'avec un runtime Crystal Reports .NET 32 bits.
  • Les applications ACRPE_console_x64.exe et ACRPE_service_x64.exe ne peuvent fonctionner qu'avec un runtime Crystal Reports .NET 64 bits.


Mise en garde : l'utilisation du runtime Crystal Reports .NET 64 bits impose d'utiliser des états Crystal Reports (.rpt) contenant une source de données unique de type "ADO.NET(XML)", créée à partir d'un fichier interface nommé "_data.xsd".
L'utilitaire CRFieldsOnlyToXSD.exe permet de migrer les états (contenus dans un répertoire ou dans un environnement Adélia), avec une source de données unique de type "Définition de champs uniquement", créée à partir d'un fichier interface nommé "_data.ttx", vers une source de données de type "ADO.NET(XML)" / _data.xsd".




ACRPE_Console

acrpe_console | acrpe_console_x86 | acrpe_console_x64 [-cfgdir:<DirName>][-port:<PortNumber>][-delegate_printing:true|false]
acrpe_console | acrpe_console_x86 | acrpe_console_x64 -help


L'ACRPE nécessite un répertoire de configuration, par défaut : c:\ACRPE. Ce répertoire peut être changé à l'aide de option -cfgdir:<DirName>.

Exemple : acrpe_console -cfgdir:"d:\configuration\acrpe"


L'ACRPE a pour port d'écoute par défaut le port 3007. Ce port peut être changé à l'aide de option -port:<PortNumber>. 

Exemple : acrpe_console -port:3025

Ce port d'écoute peut également être changé à l'aide du fichier de configuration nommé ACRPE.config placé dans le répertoire de configuration de l'ACRPE.


Pour les impressions des états Crystal Reports, l'ACRPE s'appuie par défaut sur le module d'impression du runtime Crystal Reports. L'option -delegate_printing:true permet de déléguer l'impression à l'utilitaire d'impression fourni dans Adélia hawrite64.exe.
Dans ce mode de délégation, l'état est en premier lieu exporté dans un un fichier au format PDF, puis ce dernier est imprimé par l'utilitaire hawrite64 et son module pdfium.
Pour les impressions des états Adélia, les fichiers spools produits (.spo) sont envoyés à l'ACRPE pour être imprimés à l'aide de l'utilitaire Adélia hawrite64.exe.




ACRPE_Service

acrpe_service | acrpe_service_x86 | acrpe_service_x64 accepte les mêmes options de démarrage que l'application console (-cfgdir et -port).
L'installation du service se fait à l'aide de la commande sc create dans une invite dos en mode administrateur.


Exemple : 

sc create ACRPE  binpath="<DirACRPE>\acrpe_service.exe"

ou avec l'option cfgdir
sc create ACRPE  binpath="<DirACRPE>\acrpe_service.exe -cfgdir=\"d:\configuration\acrpe\""


Le service peut être :

  • démarré à l'aide de la commande  sc start : sc start ACRPE
  • arrêté à l'aide de la commande sc stop : sc stop ACRPE
  • désinstallé à l'aide de la commande sc delete : sc delete ACRPE




Configuration ACRPE

La configuration de l'ACRPE (console ou service) se fait à l'aide de fichiers placés dans le répertoire de configuration (répertoire c:\acrpe par défaut, ou répertoire dont la valeur a été fixée au démarrage via l'option -cfgdir).
Ce répertoire doit contenir :

  • un fichier de configuration (au format XML), nommé ACRPE.config,
  • un (ou des) répertoire(s) contenant les fichiers états .RPT, ou des archives au format .zip contant des fichiers états .RPT,
  • optionnellement, un fichier de configuration (au format XML) des traces nommé log4Net.config.

ACRPE.config

Le fichier de configuration ACRPE.config permet de fixer les informations suivantes :

  • Le port d'écoute de l'ACRPE. Si une valeur de port est passée dans les options de démarrage, la valeur proposée dans le fichier de configuration est ignorée.

    ACRPE.config - <Port>
    <?xml version="1.0" encoding="utf-8"?>
    <ACRPEConfig>
    	<Port>3020</Port>
    </ACRPEConfig>
  • La délégation d'impression via hawrite64 et son module pdfium. Si une valeur de délégation est passée dans les options de démarrage, la valeur proposée dans le fichier de configuration est ignorée.

    <?xml version="1.0" encoding="utf-8"?> <ACRPEConfig> <DelegatePrinting>true</DelegatePrinting> </ACRPEConfig>

    Pour les impressions, l'ACRPE s'appuie par défaut sur le module d'impression de Crystal Reports. L'option -delegate_printing:true permet de déléguer l'impression à l'utilitaire hawrite64.
    Dans ce mode de délégation, l'état est en premier lieu exporté dans un un fichier au format PDF, puis ce dernier est imprimé par l'utilitaire hawrite64 et son module pdfium.

  • Les répertoires ou les archives contenant les fichiers .RPT


    • Répertoires
      Dans l'élément <ReportsDirLoaders>, il faut définir un sous-élément <ReportsDirLoader> pour chaque répertoire à scruter.
      Remarque : les noms relatifs de répertoires sont relatifs au répertoire de configuration.

      ACRPE.config - Répertoires - <ReportsDirLoaders>
      <?xml version="1.0" encoding="utf-8"?>
      <ACRPEConfig>	
      	<ReportsDirLoaders>
      		<ReportsDirLoader>Reports1</ReportsDirLoader>
      		<ReportsDirLoader>Reports\Reports2</ReportsDirLoader>
      		<ReportsDirLoader>c:\Reports</ReportsDirLoader>
      	</ReportsDirLoaders>
      </ACRPEConfig>
    • Archives (.zip)
      Dans l'élément <ReportsZipLoaders>, il faut définir un sous-élément <ReportsZipLoader> pour chaque archive à scruter.
      Le chemin et le nom de l'archive sont renseignés dans l'élément <ZipArchive>.
      Remarque : les noms relatifs de répertoires sont relatifs au répertoire de configuration.
      Il est possible de préciser les répertoires à scruter au sein de l'archive à l'aide des sous-éléments <FromDir> contenus dans un élément <FromDirs>.

      ACRPE.config - Archives - <ReportsZipLoaders>
      <?xml version="1.0" encoding="utf-8"?>
      <ACRPEConfig>
      	<ReportsZipLoaders>
      		<ReportsZipLoader>
      			<ZipArchive>Reports\reports.zip</ZipArchive>
      			<FromDirs>
      				<FromDir>com</FromDir>
      				<FromDir>alt</FromDir>
      			</FromDirs>
      		</ReportsZipLoader>
      	</ReportsZipLoaders>
      </ACRPEConfig>
  • les options de throttling. Le throttling permet de limiter le nombre requêtes entrantes sur une période. Dans le cas de traitements lourds (états volumineux), le throttling peut être utilisé pour éviter de surcharger une machine.
    Il est possible d'exprimer une limite du nombre de requêtes acceptées par seconde <LimitPerSecond>, par minute <LimitPerMinute> ou par heure <LimitPerHour>.  
    Une fois le quota atteint,  le serveur répond immédiatement avec une erreur HTTP 429 Two many requests.

    ACRPE.config - Throttling
    <?xml version="1.0" encoding="utf-8"?>
    <ACRPEConfig>
    	<Throttle>
    		<LimitPerSecond>10</LimitPerSecond>
    	</Throttle>
    </ACRPEConfig>
log4Net.config

Les traces de l'ACRPE s'appuient sur le framework Log4Net de la fondation Apache. Le fichier log4Net.config permet de définir la configuration des traces de l'ACRPE.

La liste et l'utilisation des appenders disponibles sont fournies sur le site de référence du framework : https://logging.apache.org/log4net/release/config-examples.html

log4Net.config - Exemple : RollingFileAppender
<?xml version="1.0" encoding="utf-8"?><log4net>
	<appender name="RollingFile" type="log4net.Appender.RollingFileAppender">
		<file value="d:\ACRPE\ACRPE.log"/>
		<appendToFile value="true"/>
		<maximumFileSize value="100000KB"/>
		<maxSizeRollBackups value="2"/>

		<layout type="log4net.Layout.PatternLayout">
			<conversionPattern value="%date %level %thread Rpt=[%property{report}]-User=[%property{user}]-Pgm=[%property{pgm}] - %message%newline"/>
		</layout>
	</appender>

	<root>
		<level value="ERROR"/>
		<appender-ref ref="RollingFile"/>
	</root>
</log4net>

Remarque : pour enrichir les traces, l'ACRPE fixe les trois propriétés contextuelles suivantes : 

  • pgm : Nom du programme courant -> valeur du mot-réservé *PGM

  • user : Nom de l'utilisateur -> valeur du mot réservé *USER

  • report : Nom de l'état courant

L'affichage d'une propriété se fait à l'aide de la syntaxe %property{PropertyName} (Cf. Exemple ci-dessus).


Remarque

A partir du niveau INFO, toutes les requêtes et réponses de l'ACRPE sont tracées.


Détail de l'API

Les données échangées au format "application/json" ou "plain/text" sont encodées en UTF-8.
Par défaut le format est "application/json". Dans le cas d'un format "plain/text" celui ci est précisé dans la table ci-dessous.

Verbe

Route 

Données en entrée

Données en sortie

Commentaire

POST

ACRPE/print 

content<ReportPayload>content<ReportResult>Imprime, export un état de nature Crystal.

POST

ACRPE/hawrite 

content<AdeliaRptPayload>content<ReportResult>Imprime un état de nature Adélia

GET

ACRPE/prtsizes?prtname=xxx

query<string>content<PaperSizes>Retourne les tailles de papier valides de l'imprimante xxx

GET 

ACRPE/prtsources?prtname=xxx

query<string>content<PaperSources>Retourne les bacs valides de l'imprimante xxx

GET 

ACRPE/prtnames 


content<PrinterNames>Retourne le noms des imprimantes du serveur d'impression ACRPE

GET

ACRPE/defprtname 


Format : text/plain
content<string>
Retourne le nom de l'imprimante par défaut du serveur d'impression ACRPE

POST

ACRPE/defprtname

content<string>content<bool>Fixe une imprimante par défaut sur le serveur d'impression ACRPE

GET

ACRPE/validity?prtname=xxx

query<string>Format : text/plain
content<string>
Teste la validité de l'imprimante xxx du serveur d'impression ACRPE.

GET

ACRPE/prtinfos?prtname=xxx

query<string>content<PrinterInfos>Retourne les caractéristiques de l'imprimante xxx

GET

ACRPE/health 


Format : text/plain
content<string>  ("true"/"false")

Indique si l'ACRPE est ou n'est pas en état de marche.

GET

ACRPE/prtfonts?prtname=xxx&pitch=[1|2]

query<string>&query<int>

content<PrinterFontNames>

Retourne le nom des polices ([1] taille proportionnelle ou [2] non proportionnelle) valides de l'imprimante xxx

GET

ACRPE/prtfontsizes?prtname=xxx&fontname=fff

query<string>&query<string>

content<List<int>>

Retourne les tailles valides pour la police fff de l'imprimante xxx.

 




[CLOUD / WEB / EVENT] Utilisation de l'ACRPE à la place du service middleware Adélia d'impression

Actuellement, dans un contexte Java, la configuration du service d'impression repose sur l'association du serveur logique *WEB_REPORT à un serveur physique (MwClient.ini). 
La configuration middleware du serveur (MwServer.ini) a, dans ses informations de contexte, le répertoire où se trouvent les fichiers états .RPT.

Il est possible d'utiliser l'ACRPE à la place du service middleware d'impression en modifiant l'association du serveur logique *WEB_REPORT.
La nouvelle association doit cibler le pseudo serveur physique *WEB_API,  le point d'accès à l'ACRPE doit être renseigné (champ ApiEndPoint) : http://<Ip_ACRPE>:<Port_ACRPE>/ACRPE

Utilisation de l'ACRPE comme serveur d'impression Adélia - Exemple d'association du serveur logique *WEB_REPORT au serveur *WEB_API.




[WINDOWS] Utilisation de l'ACRPE à la place du mode local d'impression


La sélection du mode d'impression se fait dans la boîte des paramètres d'exécution en indiquant le point d'accès ACRPE (par exemple : http://localhost:3007/ACRPE).

Cliquez ici pour plus de détails sur l'écran dédié.


La sélection du mode d'impression peut également se faire dynamiquement à l'aide de la fonction "VaToolBxSetWindowsPrintMode".


Remarque : La prévisualisation d'un état est assurée par la production d'un fichier PDF stocké dans le répertoire %temp%/ACRPE_preview du poste client, et dont l'affichage est délégué à l'application par défaut.
La purge du répertoire %temp%/ACRPE_preview est à la charge de l'utilisateur.


↑ Haut de page

  • Aucune étiquette