123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- const PDF_PATH = "../../web/compressed.tracemonkey-pldi-09.pdf";
- const PAGE_NUMBER = 1;
- const PAGE_SCALE = 1.5;
- const SVG_NS = "http://www.w3.org/2000/svg";
- pdfjsLib.GlobalWorkerOptions.workerSrc =
- "../../node_modules/pdfjs-dist/build/pdf.worker.js";
- function buildSVG(viewport, textContent) {
-
- const svg = document.createElementNS(SVG_NS, "svg:svg");
- svg.setAttribute("width", viewport.width + "px");
- svg.setAttribute("height", viewport.height + "px");
-
- svg.setAttribute("font-size", 1);
-
- textContent.items.forEach(function (textItem) {
-
-
- const tx = pdfjsLib.Util.transform(
- pdfjsLib.Util.transform(viewport.transform, textItem.transform),
- [1, 0, 0, -1, 0, 0]
- );
- const style = textContent.styles[textItem.fontName];
-
- const text = document.createElementNS(SVG_NS, "svg:text");
- text.setAttribute("transform", "matrix(" + tx.join(" ") + ")");
- text.setAttribute("font-family", style.fontFamily);
- text.textContent = textItem.str;
- svg.append(text);
- });
- return svg;
- }
- async function pageLoaded() {
-
- const loadingTask = pdfjsLib.getDocument({ url: PDF_PATH });
- const pdfDocument = await loadingTask.promise;
- const page = await pdfDocument.getPage(PAGE_NUMBER);
- const viewport = page.getViewport({ scale: PAGE_SCALE });
- const textContent = await page.getTextContent();
-
- const svg = buildSVG(viewport, textContent);
- document.getElementById("pageContainer").append(svg);
-
- page.cleanup();
- }
- document.addEventListener("DOMContentLoaded", function () {
- if (typeof pdfjsLib === "undefined") {
-
- alert("Please build the pdfjs-dist library using\n `gulp dist-install`");
- return;
- }
- pageLoaded();
- });
|