您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Add links to preview PDFs in Google Docs viewer on the current page
// ==UserScript== // @name PDF Preview Links // @namespace http://cl.thapar.edu/ // @version 0.7 // @description Add links to preview PDFs in Google Docs viewer on the current page // @author You // @match https://cl.thapar.edu/*.php // @grant none // @license MIT // ==/UserScript== (function () { 'use strict'; var customStyles = ` .accordion { background-color: #eee; color: #444; cursor: pointer; padding: 18px; width: 100%; border: none; text-align: left; outline: none; font-size: 15px; transition: 0.4s; } .active, .accordion:hover { background-color: #ccc; } `; var styleElement = document.createElement('style'); styleElement.textContent = customStyles; document.head.appendChild(styleElement); var scriptElement = document.createElement('script'); scriptElement.type = "module"; scriptElement.src = '//mozilla.github.io/pdf.js/build/pdf.mjs'; document.head.appendChild(scriptElement); var targetElements = document.querySelectorAll('td a[href^="download.php?id="]'); var x; targetElements.forEach(function (element) { x++; var tr = element.parentElement.parentElement; var googleDocsPreviewLink = 'https://docs.google.com/viewer?url=' + encodeURIComponent("https://cl.thapar.edu/" + element.getAttribute('href')) + '&embedded=true'; tr.insertCell().innerHTML = `🔽 <a href="${googleDocsPreviewLink}" target="_blank">Preview</a>`; var table = tr.parentElement.parentElement; tr.classList.add('accordion'); var newRow = table.insertRow(tr.rowIndex + 1); // table.setAttribute('layout', 'fixed'); newRow.innerHTML = ` <td colspan="7" style="display:none" align="center"> <img src="https://blog.motionisland.com/wp-content/uploads/2022/03/Loading_1.gif" width="30%"> </td> `; tr.addEventListener('click', function () { var panel = tr.nextElementSibling.children[0]; if (panel.style.display === "") { panel.style.display = "none"; } else { panel.style.display = ""; } if(tr.nextElementSibling.children[0].children.length > 0 && tr.nextElementSibling.children[0].children[0].tagName === 'CANVAS'){ return; } var { pdfjsLib } = globalThis; pdfjsLib.GlobalWorkerOptions.workerSrc = '//mozilla.github.io/pdf.js/build/pdf.worker.mjs'; pdfjsLib.getDocument(element.getAttribute('href')).promise.then(doc => { for(var i=0; i<doc._pdfInfo.numPages; i++){ doc.getPage(i+1).then(page => { var scale = 1.6; var viewport = page.getViewport({ scale: scale }); var canvas = document.createElement('canvas'); var context = canvas.getContext('2d'); canvas.height = viewport.height; canvas.width = viewport.width; var renderContext = { canvasContext: context, viewport: viewport }; page.render(renderContext).promise.then(() => { tr.nextElementSibling.children[0].appendChild(canvas); }); }); } //delete the loading gif tr.nextElementSibling.children[0].children[0].remove(); console.log(`This document has ${doc._pdfInfo.numPages} pages.`); }); }); }); })();