Web görüntüleyici
Web görüntüleyici metotları ve olayları
vivePDF web görüntüleyiciyi JavaScript ile yönet, ziyaretçinin seçtiği dosyaları aç, sayfa ve yakınlaştırma değişikliklerini izle, hataları yakala; TypeScript türleriyle.
Her <vive-pdf> öğesi aynı zamanda bir JavaScript nesnesidir. Metotları belgede gezinir ve dosya açar; olayları içeride ne olduğunu sayfana haber verir.
const viewer = document.querySelector("vive-pdf");
viewer.addEventListener("vive-ready", (event) => console.log(`${event.detail.pageCount} sayfa`));
viewer.goTo(12);
Metotlar
| Metot | Ne yapar |
|---|---|
open(input) |
Bir belge açar, belge ekrana gelince tamamlanır. input bir adres, URL, File ya da Blob, ArrayBuffer ya da typed array olabilir |
goTo(page) |
Bir sayfaya gider, 1’den başlar |
setZoom(zoom) |
fit-width, fit-page ya da 10 ile 800 arasında bir yüzde |
search(text) |
Aramayı metinle açar ve ilk sonucu gösterir |
print() |
Belgeyi menüdeki gibi yazdırır |
download() |
Belgeyi menüdeki gibi indirir |
show() · close() |
lightbox modunda görüntüleyiciyi açar ve kapatır; diğer modlarda bir şey yapmaz |
annotate özniteliği varken dört metot daha var: annotations(), setAnnotations(), save() ve setTool(). Bunlar çizim araçlarıyla birlikte anlatılıyor.
Görüntüleyici başlamadan çağrılan metotlar bekler ve belge ekrana gelince çalışır; yani öğeyi oluşturur oluşturmaz çağrılabilirler.
Özellikler
| Özellik | Değer |
|---|---|
page |
Görünen sayfa, 1’den başlar |
pageCount |
Sayfa sayısı; belge açılana kadar 0 |
zoom |
Yüzde olarak yakınlaştırma |
Olaylar
Bütün olaylar öğeden dışarı kabarcıklanır; document üzerindeki tek bir dinleyici birden çok görüntüleyiciyi izleyebilir. Ayrıntılar event.detail içindedir.
| Olay | detail |
Ne zaman |
|---|---|---|
vive-ready |
{ pageCount } |
Belge açıldı |
vive-pagechange |
{ page, pageCount } |
Başka bir sayfa görünür oldu |
vive-zoomchange |
{ zoom } |
Yakınlaştırma değişti |
vive-error |
{ code } |
Belge açılamadı |
vive-close |
null |
Açılır pencere kapandı |
vive-annotationchange |
{ type, page } |
Bir çizim ya da not eklendi, değişti ya da silindi |
Ziyaretçinin seçtiği dosyayı açma
Dosya ziyaretçinin tarayıcısında kalır; hiçbir şey yüklenmez.
<input type="file" accept="application/pdf" id="pick">
<vive-pdf id="viewer" style="height: 80vh"></vive-pdf>
<script>
const viewer = document.getElementById("viewer");
document.getElementById("pick").addEventListener("change", async (event) => {
const file = event.target.files[0];
if (!file) return;
try {
await viewer.open(file);
} catch (error) {
console.warn(error.code);
}
});
</script>
Bu yolla açılan dosya, ziyaretçi indirdiğinde kendi adını korur.
Hatalar
open() reddeder ve vive-error şu kodlardan biriyle haber verir. Görüntüleyici ayrıca kendi mesajını ve bir çıkış yolunu gösterir; çoğu site için kodları kaydetmek yeter.
| Kod | Anlamı |
|---|---|
password |
Dosya parolalı; görüntüleyici parolayı sorar ve kilit açılınca vive-ready gönderir |
wrong-password |
Girilen parola yanlış |
not-found |
Sunucu dosyanın olmadığını söyledi |
network |
Dosya indirilemedi; çoğu zaman başka bir site izin vermediği için (bkz. güvenlik) |
damaged |
Dosya PDF değil ya da bozuk |
no-pages |
PDF’te sayfa yok |
engine |
PDF motoru başlayamadı, örneğin indirilmesi engellendiği için |
unsupported-url |
Adres http:, https: ya da blob: değil |
unknown |
Geri kalan her şey |
İlki bitmeden ikinci bir open() çağrılırsa ilki replaced ile reddedilir.
Okuyucuyu izleme
document.addEventListener("vive-pagechange", (event) => {
history.replaceState(null, "", `#page=${event.detail.page}`);
});
const start = Number(new URLSearchParams(location.hash.slice(1)).get("page"));
if (start) document.querySelector("vive-pdf").setAttribute("page", String(start));
TypeScript
npm paketi kendi türleriyle gelir. import "@vivepdf/viewer" sonrasında document.querySelector("vive-pdf") VivePdfViewer türündedir ve addEventListener("vive-pagechange", …) detail’in ne olduğunu bilir. Türler kendi kodun için de dışa aktarılır:
import type { VivePdfViewer, VivePdfAnnotation, VivePdfErrorCode } from "@vivepdf/viewer";