irongit

'able to present pdf'

huncholanehuncholaneauthored
parent 45dba4bcommit 0dcdf466d9bc3f4104df6224bc65317b1fdb0a21Browse files

2 files changed, +90 -14

+0-0f1099msc.pdf

Binary file changed.

+90-14index.html
@@ -8,6 +8,10 @@
88 href="https://fonts.googleapis.com/css?family=Poppins"
99 rel="stylesheet"
1010 />
11+ <link
12+ rel="shortcut icon"
13+ href="https://mozilla.github.io/pdf.js/images/favicon.ico"
14+ />
1115 <style>
1216 body {
1317 all: unset;
@@ -18,7 +22,7 @@
1822
1923 h1 {
2024 text-align: center;
21- margin: 20px;
25+ margin: 20px 0;
2226 width: 100%;
2327 }
2428
@@ -43,9 +47,9 @@
4347 /* Tabs and Container */
4448 .tabs-container {
4549 width: 80%;
46- margin: 0 auto;
47- margin-top: 20px;
50+ margin: 20px auto;
4851 }
52+ /* Tabs */
4953 .tabs-container div:first-child {
5054 display: flex;
5155 }
@@ -64,7 +68,11 @@
6468 border-bottom: 2px solid #6c6767;
6569 }
6670 .tabs-container div:first-child h4.active {
67- background-color: #6c6767;
71+ background-color: rgb(108, 103, 103);
72+ }
73+ .tabs-container div:first-child h4.disabled {
74+ background-color: rgb(108, 103, 103, 0.5);
75+ cursor: not-allowed;
6876 }
6977 .tabs-container div:first-child h4:first-child {
7078 border-top-left-radius: 10px;
@@ -72,8 +80,9 @@
7280 .tabs-container div:first-child h4:last-child {
7381 border-top-right-radius: 10px;
7482 }
75- .tabs-container div:last-child {
76- padding: 10px;
83+ /* Containers */
84+ .tabs-container div:nth-child(2) {
85+ padding: 10px 40px;
7786 border-radius: 0 0 10px 10px;
7887 background-color: #4d4b4b;
7988 }
@@ -83,33 +92,100 @@
8392 .tabs-container div:nth-child(2) div.active {
8493 display: block;
8594 }
95+ .tabs-container div:nth-child(2) > * {
96+ width: 100%;
97+ }
8698 </style>
8799 </head>
88100 <body>
89101 <h1>PDF To HTML</h1>
90102 <div id="dropzone">
91- Drop your files or <button id="manual-upload-btn">Click to upload</button>
103+ Drop your files or
104+ <button id="manual-upload-btn">Click to upload</button>
92105 </div>
93106
94107 <div class="tabs-container">
95108 <div>
96109 <h4 class="active">PDF</h4>
97- <h4>HTML</h4>
110+ <h4 class="disabled">HTML</h4>
98111 </div>
99112 <div>
100- <div class="active">Pdf File</div>
113+ <canvas class="active">Pdf File</canvas>
101114 <div>Html File</div>
102115 </div>
103116 </div>
104117
118+ <script
119+ src="https://code.jquery.com/jquery-3.7.1.slim.min.js"
120+ integrity="sha256-kmHvs0B+OpCW5GVHUNjv9rOmY0IvSIRcf7zGUDTDQM8="
121+ crossorigin="anonymous"
122+ ></script>
123+ <script
124+ src="https://cdnjs.cloudflare.com/ajax/libs/pdf.js/2.6.347/pdf.min.js"
125+ integrity="sha512-Z8CqofpIcnJN80feS2uccz+pXWgZzeKxDsDNMD/dJ6997/LSRY+W4NmEt9acwR+Gt9OHN0kkI1CTianCwoqcjQ=="
126+ crossorigin="anonymous"
127+ referrerpolicy="no-referrer"
128+ ></script>
105129 <script>
106- function manualUpload(e) {}
130+ var file, pdf;
107131
108- document.addEventListener("DOMContentLoaded", (event) => {
109- const dropzone = document.getElementById("dropzone");
110- const manualUploadBtn = document.getElementById("manual-upload-btn");
132+ function loadPdfPage(pageNumber) {
133+ pdf.getPage(pageNumber).then(function (page) {
134+ console.debug("Page loaded");
135+ var scale = 2;
136+ var viewport = page.getViewport({ scale });
137+ var canvas = $("canvas")[0];
138+ var context = canvas.getContext("2d");
139+ canvas.height = viewport.height;
140+ canvas.width = viewport.width;
141+ var renderContext = {
142+ canvasContext: context,
143+ viewport: viewport,
144+ };
145+ var renderTask = page.render(renderContext);
146+ renderTask.promise.then(function () {
147+ console.debug("Page rendered");
148+ });
149+ });
150+ }
151+
152+ function handleFile(e) {
153+ file = e.target.files[0];
154+ if (file.type !== "application/pdf") {
155+ alert("Please upload a PDF file");
156+ return;
157+ }
158+ $(".tabs-container h4:first-child").text(file.name);
159+ $(".tabs-container h4:nth-child(2)").removeClass("disabled");
160+ $(".tabs-container h4:nth-child(2)").text(
161+ file.name.replace(".pdf", ".html")
162+ );
163+ console.log(file.name, file.name.replace(".pdf", ".html"));
164+ console.debug(file);
165+ var fileReader = new FileReader();
166+ fileReader.onload = function () {
167+ console.debug("PDF loading");
168+ var pdfData = new Uint8Array(this.result);
169+ var loadingTask = pdfjsLib.getDocument(pdfData);
170+ loadingTask.promise.then(function (pdf_) {
171+ pdf = pdf_;
172+ loadPdfPage(1);
173+ });
174+ };
175+ fileReader.readAsArrayBuffer(file);
176+ }
111177
112- manualUploadBtn.add;
178+ function manualUpload(e) {
179+ e.preventDefault();
180+ const input = document.createElement("input");
181+ input.type = "file";
182+ input.accept = ".pdf";
183+ input.onchange = handleFile;
184+ input.click();
185+ }
186+
187+ document.addEventListener("DOMContentLoaded", (event) => {
188+ $("#manual-upload-btn").on("click", manualUpload);
113189 });
114190 </script>
115191 </body>