You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							170 lines
						
					
					
						
							5.9 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							170 lines
						
					
					
						
							5.9 KiB
						
					
					
				| <!DOCTYPE html> | |
| <html> | |
| <head> | |
|   <title>HTML to PDFmake online convertor</title> | |
|   <link href="https://fonts.googleapis.com/css2?family=Roboto&display=swap" rel="stylesheet">  | |
|   <style> | |
|     body { | |
|       font-family: Roboto | |
|     } | |
|     .button { | |
|       background-color: #4CAF50; /* Green */ | |
|       border: none; | |
|       color: white; | |
|       padding: 15px 32px; | |
|       text-align: center; | |
|       text-decoration: none; | |
|       display: inline-block; | |
|       font-size: 16px; | |
|       cursor:pointer; | |
|       box-shadow: 0 8px 16px 0 rgba(0,0,0,0.2), 0 6px 20px 0 rgba(0,0,0,0.19); | |
|     } | |
|     .button:hover { | |
|       box-shadow: none; | |
|     } | |
|     .error { | |
|       color:red; | |
|     } | |
|     /* html-to-pdfmake default style */ | |
|     p { | |
|       margin:5pt 0 10pt 0; | |
|     } | |
|     ul { | |
|       margin-bottom:5pt; | |
|       margin-left:5pt; | |
|     } | |
|     table { | |
|       margin-bottom:5pt; | |
|       border-collapse: collapse; | |
|     } | |
|     th { | |
|       font-weight:bold; | |
|       background-color:#EEEEEE | |
|     } | |
|     th, td { | |
|       border:1px solid black; | |
|       text-align: left; | |
|       vertical-align: top; | |
|     } | |
|     </style> | |
| </head> | |
| <body> | |
|   <h1>HTML to PDFMake convertor</h1> | |
|   <p><a href="https://github.com/Aymkdn/html-to-pdfmake">Read the documentation</a></p> | |
|   <p>Paste your HTML code below and click on the button to convert it to the <a href="http://pdfmake.org/">PDFmake</a> format:</p> | |
|   <div style="display:flex;height:35vh"> | |
|     <div style="flex:1;display:flex;flex-direction:column;"> | |
|       <b>Your HTML code here:</b> | |
|       <textarea style="height:100%" id="code" onkeyup="toHTML()"> | |
| <div> | |
|   <h1>My title</h1> | |
|   <p> | |
|     This is a sentence with a <strong>bold word</strong>, <em>one in italic</em>, | |
|     and <u>one with underline</u>. And finally <a href="https://www.somewhere.com">a link</a>. | |
|   </p> | |
|   <table> | |
|     <tr> | |
|       <th style="width:150px">Header 1</th> | |
|     </tr> | |
|     <tr> | |
|       <td style="text-align:center" height="50">Cell A1</td> | |
|     </tr> | |
|   </table> | |
|   <span class="green">Text in green using the styles from PDFMake</span> | |
| </div> | |
|       </textarea> | |
|     </div> | |
|     <div style="flex:1;display:flex;flex-direction:column;"> | |
|       <b>HTML Preview:</b> | |
|       <div style="padding:5px;border:2px solid #CCC;height:100%; overflow: auto" id="html"></div> | |
|     </div> | |
|   </div> | |
| 
 | |
|   <div style="display:flex;height:15vh"> | |
|     <div style="flex:1;display:flex;flex-direction:column;"> | |
|       <b><a href="https://pdfmake.github.io/docs/document-definition-object/styling/">Styles</a> for PDFMake:</b> | |
|       <div class="error" id="styles_error" style="display:none"></div> | |
|       <textarea style="height:100%" id="styles"> | |
| { | |
|   "green": { | |
|     "color": "green" | |
|   } | |
| } | |
|       </textarea> | |
|     </div> | |
|     <div style="flex:1;display:flex;flex-direction:column;"> | |
|       <b>htmlToPdfmake <a href="https://github.com/Aymkdn/html-to-pdfmake#options">options</a>:</b> | |
|       <div class="error" id="options_error" style="display:none"></div> | |
|       <textarea style="height:100%" id="options"> | |
| { | |
|   "tableAutoSize":true | |
| } | |
|       </textarea> | |
|     </div> | |
|   </div> | |
| 
 | |
|   <div style="text-align:center;font-size:18px;margin-top:10px"><button type="button" onclick="convert()" class="button">Generate PDF</button></div> | |
| 
 | |
|   <div style="display:flex;height:40vh;margin-top:1em"> | |
|     <div style="flex:1;display:flex;flex-direction:column;"> | |
|       <b>Result that can directly be copied in <a href="http://pdfmake.org/playground.html">PDFMake Playground</a>:</b> | |
|       <textarea id="result" style="height:100%"></textarea> | |
|     </div> | |
|     <div style="flex:1;display:flex;flex-direction:column;"> | |
|       <b>PDF:</b> | |
|       <iframe id="pdf" style="height:100%"></iframe> | |
|       <div id="pdf_ie" style="display:none;padding:3em">The PDF file is sent to you for download. Use a modern browser (like Chrome or Firefox) to display the PDF in this page.</div> | |
|     </div> | |
|   </div> | |
|   <script src="browser-2.3.9.js"></script> | |
|   <script src="https://cdn.jsdelivr.net/npm/pdfmake@latest/build/pdfmake.min.js"></script> | |
|   <script src="https://cdn.jsdelivr.net/npm/pdfmake@latest/build/vfs_fonts.js"></script> | |
|   <script> | |
|     var codeBag = document.querySelector('#code'); | |
|     function convert () { | |
|       var errorStyles = document.querySelector('#styles_error'); | |
|       var errorOptions = document.querySelector('#options_error'); | |
|       // hide errors | |
|       errorStyles.style.display="none"; | |
|       errorOptions.style.display="none"; | |
|       // retrieve options | |
|       try { | |
|         var p = document.querySelector('#options').value.trim() || '{}'; | |
|         var options = JSON.parse(document.querySelector('#options').value.trim() || '{}'); | |
|       } catch(err) { | |
|         errorOptions.style.display='block'; | |
|         errorOptions.innerHTML = err; | |
|       } | |
|       // retrieve styles | |
|       try { | |
|         var styles = JSON.parse(document.querySelector('#styles').value.trim() || '{}'); | |
|       } catch(err) { | |
|         errorStyles.style.display='block'; | |
|         errorStyles.innerHTML = err; | |
|       } | |
|       var val = htmlToPdfmake(code.value, options); | |
|       var dd = {content:val}; | |
|       if (typeof styles === 'object') dd.styles = styles; | |
|       document.querySelector('#result').value = "var dd = " + JSON.stringify(dd, null, '  '); | |
|       // is IE ? | |
|       var isIE = '-ms-scroll-limit' in document.documentElement.style && '-ms-ime-align' in document.documentElement.style; | |
|       if (isIE) { | |
|         document.getElementById('pdf').style.display='none'; | |
|         document.getElementById('pdf_ie').style.display='block'; | |
|         pdfMake.createPdf(dd).download(); | |
|       } else { | |
|         pdfMake.createPdf(dd).getDataUrl(function(outDoc) { | |
|           document.getElementById('pdf').src = outDoc; | |
|         }); | |
|       } | |
|     } | |
|     convert(); | |
| 
 | |
|     var htmlBag = document.querySelector('#html'); | |
|     function toHTML() { | |
|       htmlBag.innerHTML = codeBag.value; | |
|     } | |
|     toHTML(); | |
|   </script> | |
| </body> | |
| </html>
 |