File tree Expand file tree Collapse file tree 6 files changed +1301
-17
lines changed
Expand file tree Collapse file tree 6 files changed +1301
-17
lines changed Original file line number Diff line number Diff line change 1+ <!DOCTYPE html>
2+ < html lang ="en ">
3+ < head >
4+ < meta charset ="UTF-8 ">
5+ < meta name ="viewport " content ="width=device-width, initial-scale=1.0 ">
6+ < title > Beautiful Certificate</ title >
7+ < link rel ="stylesheet " href ="style.css ">
8+ </ head >
9+ < body >
10+ < div class ="certificate ">
11+ < div class ="header ">
12+ < h1 > Certificate of Achievement</ h1 >
13+ </ div >
14+ < div class ="content ">
15+ < p > This certificate is awarded to:</ p >
16+ < h2 id ="recipientName "> [Recipient's Name]</ h2 >
17+ < p > For outstanding performance and dedication in the field of...</ p >
18+ < p > Date: July 23, 2023</ p >
19+ </ div >
20+ < div class ="signature ">
21+ < p > Signature</ p >
22+ </ div >
23+ </ div >
24+
25+ < button id ="generateCertificate "> Generate Certificate</ button >
26+
27+ < script src ="script.js "> </ script >
28+ </ body >
29+ </ html >
Original file line number Diff line number Diff line change 1+ // Function to update the recipient's name dynamically
2+ function updateRecipientName ( ) {
3+ const recipientNameElement = document . getElementById ( 'recipientName' ) ;
4+ const recipientNameInput = prompt ( 'Enter the recipient\'s name:' ) ;
5+ if ( recipientNameInput ) {
6+ recipientNameElement . textContent = recipientNameInput ;
7+ }
8+ }
9+
10+ // Function to generate and download the certificate as a PDF
11+ function downloadCertificate ( ) {
12+ const certificate = document . querySelector ( '.certificate' ) ;
13+ const opt = {
14+ margin : 0 ,
15+ filename : 'certificate.pdf' ,
16+ image : { type : 'jpeg' , quality : 0.98 } ,
17+ html2canvas : { scale : 2 } ,
18+ jsPDF : { unit : 'mm' , format : 'a4' , orientation : 'portrait' }
19+ } ;
20+
21+ html2pdf ( ) . from ( certificate ) . set ( opt ) . outputPdf ( ) . then ( ( pdf ) => {
22+ pdf . save ( ) ;
23+ } ) ;
24+ }
25+
26+ // Event listener to update recipient's name
27+ document . getElementById ( 'generateCertificate' ) . addEventListener ( 'click' , updateRecipientName ) ;
28+
29+ // Event listener to generate and download the certificate as PDF
30+ document . getElementById ( 'generateCertificate' ) . addEventListener ( 'click' , downloadCertificate ) ;
Original file line number Diff line number Diff line change 1+ body {
2+ font-family : Arial, sans-serif;
3+ margin : 0 ;
4+ padding : 0 ;
5+ display : flex;
6+ justify-content : center;
7+ align-items : center;
8+ height : 100vh ;
9+ background-color : # f0f0f0 ;
10+ }
11+
12+ .certificate {
13+ width : 80% ;
14+ max-width : 600px ;
15+ background-color : # f9f6f6 ;
16+ background-image : linear-gradient (147deg , # ff8a00 0% , # e52e71 100% );
17+ color : # fff ;
18+ border : 2px solid # fff ;
19+ box-shadow : 0 0 10px rgba (0 , 0 , 0 , 0.1 );
20+ padding : 20px ;
21+ }
22+
23+ .header {
24+ text-align : center;
25+ margin-bottom : 20px ;
26+ }
27+
28+ .header h1 {
29+ font-size : 24px ;
30+ margin : 0 ;
31+ padding : 5px 0 ;
32+ color : # fff ;
33+ border-bottom : 2px solid # fff ;
34+ }
35+
36+ .content {
37+ text-align : center;
38+ }
39+
40+ .content p {
41+ font-size : 16px ;
42+ color : # fff ;
43+ }
44+
45+ .content h2 {
46+ font-size : 28px ;
47+ color : # fff ;
48+ margin-top : 10px ;
49+ margin-bottom : 20px ;
50+ }
51+
52+ .signature {
53+ text-align : center;
54+ margin-top : 30px ;
55+ }
56+
57+ .signature p {
58+ font-size : 18px ;
59+ font-style : italic;
60+ color : # fff ;
61+ }
62+
63+ button {
64+ display : block;
65+ margin : 20px auto;
66+ padding : 10px 20px ;
67+ font-size : 16px ;
68+ border : none;
69+ background-color : # fff ;
70+ color : # 555 ;
71+ cursor : pointer;
72+ border-radius : 5px ;
73+ box-shadow : 0 2px 5px rgba (0 , 0 , 0 , 0.2 );
74+ transition : background-color 0.3s ease;
75+ }
76+
77+ button : hover {
78+ background-color : # ddd ;
79+ }
You can’t perform that action at this time.
0 commit comments