diff options
author | silverwind <me@silverwind.io> | 2023-05-29 14:10:00 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-05-29 12:10:00 +0000 |
commit | e4e98979fff54564f20e451bfdf7b05a7da4f11a (patch) | |
tree | 07cd409f5454f81abf19f0dfe6fa9f60ecb8bc04 /web_src/js | |
parent | 35ce7ca25b5756441949312d79aa6382f98ce8d6 (diff) | |
download | gitea-e4e98979fff54564f20e451bfdf7b05a7da4f11a.tar.gz gitea-e4e98979fff54564f20e451bfdf7b05a7da4f11a.zip |
Add PDF rendering via PDFObject (#24086)
Use [PDFObject](https://pdfobject.com/) to embed PDFs, replacing our
outdated PDF.js copy we vendor (the last non-webpack vendoring).
[Commit
1](https://github.com/go-gitea/gitea/pull/24086/commits/673e0263da64b72565ff59b990ab1b8e87271872)
is the PDFObject integration
[Commit
2](https://github.com/go-gitea/gitea/pull/24086/commits/9336f5769d54445bba0e16776164f6a2fe2c32ac)
is the removal of PDF.js
<img width="1251" alt="Screenshot 2023-05-27 at 09 57 52"
src="https://github.com/go-gitea/gitea/assets/115237/169ce50c-bd1d-4bb0-86e5-1710bd0400a9">
<img width="1257" alt="Screenshot 2023-05-27 at 10 12 50"
src="https://github.com/go-gitea/gitea/assets/115237/318f7ee9-fb11-4093-83e7-17475aa70629">
Fallback for unsupporting browsers (most mobile ones, except Firefox
Mobile):
<img width="358" alt="Screenshot 2023-05-27 at 09 43 34"
src="https://github.com/go-gitea/gitea/assets/115237/8c12d7ba-57d6-4228-89a0-5fef9fad0cbb">
---------
Co-authored-by: Giteabot <teabot@gitea.io>
Diffstat (limited to 'web_src/js')
-rw-r--r-- | web_src/js/index.js | 2 | ||||
-rw-r--r-- | web_src/js/render/pdf.js | 19 |
2 files changed, 21 insertions, 0 deletions
diff --git a/web_src/js/index.js b/web_src/js/index.js index a837375b4e..8f4d379893 100644 --- a/web_src/js/index.js +++ b/web_src/js/index.js @@ -21,6 +21,7 @@ import {initRepoIssueContentHistory} from './features/repo-issue-content.js'; import {initStopwatch} from './features/stopwatch.js'; import {initFindFileInRepo} from './features/repo-findfile.js'; import {initCommentContent, initMarkupContent} from './markup/content.js'; +import {initPdfViewer} from './render/pdf.js'; import {initUserAuthLinkAccountView, initUserAuthOauth2} from './features/user-auth.js'; import { @@ -177,4 +178,5 @@ onDomReady(() => { initUserAuthWebAuthnRegister(); initUserSettings(); initRepoDiffView(); + initPdfViewer(); }); diff --git a/web_src/js/render/pdf.js b/web_src/js/render/pdf.js new file mode 100644 index 0000000000..f31f161e6e --- /dev/null +++ b/web_src/js/render/pdf.js @@ -0,0 +1,19 @@ +import {htmlEscape} from 'escape-goat'; + +export async function initPdfViewer() { + const els = document.querySelectorAll('.pdf-content'); + if (!els.length) return; + + const pdfobject = await import(/* webpackChunkName: "pdfobject" */'pdfobject'); + + for (const el of els) { + const src = el.getAttribute('data-src'); + const fallbackText = el.getAttribute('data-fallback-button-text'); + pdfobject.embed(src, el, { + fallbackLink: htmlEscape` + <a role="button" class="ui basic button pdf-fallback-button" href="[url]">${fallbackText}</a> + `, + }); + el.classList.remove('is-loading'); + } +} |