Bevor Sie beginnen - Checkliste
Was versuchst du zu erreichen?
In unserem Projekt ( Ausgabe , Demo ) möchte ich nur die Seiten laden, die ich gerade ansehe, und die erste Seite rendern, bevor das gesamte Dokument geladen wird.
Nach meinem Verständnis unterstützt PDF.js react-pdf
API beschreibt, dass es möglich ist, ein PDFDataRangeTransport
-Objekt in die file
-Eigenschaft aufzunehmen. Ich kann jedoch nicht sehen, was zu tun ist, um diese Range-Header tatsächlich zu senden!
Beschreiben Sie die Lösungen, die Sie ausprobiert haben
Umgebung
Hallo,
Ja, PDFDataRangeTransport sollte unterstützt werden, da React-PDF es nur an pdf.js weitergibt und sonst nicht viel damit zu tun hat. Ich habe dieses Thema bei der Erstellung von PDFDataRangeTransport-Objekten gefunden.
Der einfachste Weg, um das gewünschte Verhalten zu erreichen, scheint darin zu bestehen, einfach eine URL als file
prop zu übergeben. Dies sollte gut funktionieren: https://github.com/mozilla/pdf.js/wiki/Frequently-Asked-Questions#range
Vielen Dank für die Antwort (und die großartige Bibliothek) @wojtekmaj!
Leider übergebe ich die URL als Datei-Requisite ( Quelle , Demo ), aber sie wird erst gerendert, nachdem das gesamte Dokument abgerufen wurde.
Außerdem wird für die Anforderung der PDF-Datei keine Bereichskopfzeile angezeigt.
Vielleicht ist diese Bedingung nie wirklich wahr, wenn ich eine Zeichenfolge übergebe?
// File is PDFDataRangeTransport
if (file instanceof PDFDataRangeTransport) {
return { range: file };
}
Laut den Entwicklern von PDF.js unterstützt PDF.js Dokumenten können Sie benutzerdefinierte Header festlegen. Da das Dokument das Objekt options
an PDFjs.getDocument
übergibt, sollte dies funktionieren:
<Document
options={{
httpHeaders: {
'Accept-Encoding': 'Identity',
}
}}
file={"https://example.com/some.pdf"}
>
Dies ist jedoch nicht der Fall, daher untersuche ich immer noch, was los ist. Es ist wahrscheinlich, dass es sich um ein pdf.js-Problem handelt.
Hilfreichster Kommentar
Laut den Entwicklern von PDF.js unterstützt PDF.js Dokumenten können Sie benutzerdefinierte Header festlegen. Da das Dokument das Objekt
options
anPDFjs.getDocument
übergibt, sollte dies funktionieren:Dies ist jedoch nicht der Fall, daher untersuche ich immer noch, was los ist. Es ist wahrscheinlich, dass es sich um ein pdf.js-Problem handelt.