Publié le :
Reporting CREATION_INTERNE

Génération et Envoi de Certificats PDF par Email

Ce code est également disponible en : Deutsch English Español
En attente de validation
Le programme définit une liste de destinataires (noms et emails) en dur. Il utilise ensuite une macro pour itérer sur cette liste. Pour chaque personne, il génère un certificat PDF personnalisé utilisant PROC GANNO pour le placement précis du texte et des images (fond, signature). Le fichier résultant est immédiatement envoyé en pièce jointe via le moteur SMTP de SAS©.
Analyse des données

Type : CREATION_INTERNE


Les données (noms et emails des étudiants) sont créées directement dans le script via une étape DATA et l'instruction CARDS.

1 Bloc de code
DATA STEP Data
Explication :
Configuration de l'environnement (chemins, options graphiques, paramètres SMTP) et création de la table des destinataires.
Copié !
1%let local=C:\Papers_ALAN\GLOBALSAS\2020;
2 
3goptions reset=all iback="&local\template.PNG"
4imagestyle=fit border;
5 
6options noemailfrom emailsys=smtp emailhost=SMTP emailauthprotocol=login emailport=PORT
7emailid="e-mail" emailpw="password";
8
9DATA database;
10INPUT name $1-37 email $38-66;
11CARDS;
12Alan da Silva djalan @bol.com.br
13yyyyyyyyyyyyyyyyyyyyyyy yyy @email.com
14zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz zzz @email.com
15;
2 Bloc de code
DATA STEP
Explication :
Transformation des données en macro-variables pour l'itération et calcul du nombre total de destinataires.
Copié !
1DATA database;SET database;
2call symput('name'||trim(left(_n_)),trim(left(upcase(name))));
3call symput('email'||trim(left(_n_)),trim(left(email)));
4RUN;
5%put &name1 &email1;
6PROC SQL noprint;
7select count(*) into:n from database;
8QUIT;
9%put &n;
3 Bloc de code
MACRO
Explication :
Définition et exécution de la macro boucle. Elle génère le PDF graphique (PROC GANNO) et envoie l'email pour chaque étudiant.
Copié !
1%macro certificate(local=);
2options nodate nonumber leftmargin=1cm rightmargin=1cm topmargin=1cm
3bottommargin=1cm papersize=A4 orientation=landscape;
4%DO i=1 %to &n;
5ods pdf file="&local\certificate &&name&i...pdf" style=printer;
6DATA text;
7LENGTH function style $30. color $6. text $150.;
8retain line 1 xsys ysys '2' hsys '3' x 8;
9/* ... Code de génération des annotations (texte, positions, images) ... */
10text="The Department of Statistics of the University of Brasilia";OUTPUT;
11/* ... suite des instructions output ... */
12RUN;
13PROC GANNO anno=text;RUN;
14ods pdf close;
15filename myfile email
16to= "&&email&i"
17subject= "Certificate of Completion"
18attach="&local\certificate &&name&i...pdf";
19DATA _null_;
20file myfile;
21put "Dear Student, please find attached the certificate of completion of the course of study.";
22put " ";
23put "Best regards";
24put "Prof. Alan Ricardo da Silva";
25RUN;
26%END;
27%mend certificate;
28%certificate(local=&local);
Ce matériel est fourni "tel quel" par We Are Cas. Il n'y a aucune garantie, expresse ou implicite, quant à la qualité marchande ou à l'adéquation à un usage particulier concernant le matériel ou le code contenu dans les présentes. We Are Cas n'est pas responsable des erreurs dans ce matériel tel qu'il existe maintenant ou existera, et We Are Cas ne fournit pas de support technique pour celui-ci.
Banner
Le Conseil de l'Expert
Expert
Stéphanie
Spécialiste Machine Learning et IA.
« L'alliance des macros SAS, de la procédure GANNO et du moteur SMTP constitue une solution robuste pour industrialiser la production de documents officiels. La force de cette approche réside dans la précision chirurgicale de PROC GANNO, qui permet de placer des éléments graphiques et textuels sur un canevas PDF avec un rendu professionnel. Pour garantir la réussite de vos envois en masse, assurez-vous d'utiliser CALL SYMPUT pour dynamiser vos variables et de bien configurer les options système EMAILHOST et EMAILAUTHPROTOCOL. Cette méthode élimine les erreurs manuelles et assure une cohérence parfaite entre les données de votre table source et les pièces jointes expédiées. »