2017-05-16 5 views
4

J'ai une page html pdf personnalisé pour le rendu du pdf. J'utilise la bibliothèque de pdfjs pour rendre le pdf. Ça fonctionne bien pour moi. Quand j'ouvre le petit fichier pdf alors il télécharge et rend le fichier rapidement, quand j'ouvre le grand pdf alors il télécharge le pdf rapidement mais il prend trop de temps pour rendre le dossier pdf.Enorme PDF prend du temps pour le rendu lors du défilement en utilisant pdfviewer.js

Je peux voir le grand contenu du fichier pdf mais quand je fais défiler vers le bas alors il accrocher le navigateur entier.

Une suggestion?

+0

Quelle est la taille de ce fichier PDF? – Justinas

+0

c'est 150 pages fichier PDF –

+0

et en taille MB? – Justinas

Répondre

1

Cela semble que vous utilisez une version plus ancienne de PDF.js, Essayez avec une version plus récente

0

En résumé sur votre OP - puisque vous n'avez pas répondu aux questions ou fournir des exemples du PDF que vous rencontrez des problèmes avec alors personne ne peut donner une réponse concluante. C'est dommage car il aurait été facile de mettre en place un extrait pour sonder le problème. En supposant, je dirais qu'il est probable qu'il y ait une discordance entre le contenu de votre fichier PDF et la capacité de pdfjs. Si nous avions votre fichier d'exemple, nous pourrions être en mesure de soulever un bug sur le developers git, qui semble être actif et bien supporté. Ce qui suit est une description de haut niveau des problèmes liés à la création d'un moteur de rendu PDF, afin de comprendre pourquoi vous pouvez vous en tenir aux moteurs de rendu intégrés traditionnels fournis dans les navigateurs populaires.

Le rendu d'un document PDF est une tâche compliquée. Si vous divisez les opérations en composants, c'est possible, mais il existe plusieurs niveaux de norme PDF qui ont introduit un large éventail d'options. Il est probable que votre fichier PDF contienne quelque chose avec une implémentation de rendu défectueuse dans pdfjs, ou quelque chose que pdfjs étouffe quand il essaye de le rendre.

Quelques informations générales: Le format PDF est à la fois brillant et diabolique à la fois. Brillant en raison de sa portabilité, mais diabolique en raison de la structure interne et des mécanismes de stockage. Il n'y a pas de 'DOM' sympa comme avec HTML. Si nous commencions à nouveau à développer un format de document portable ce ne serait pas PDF que nous choisirions. Mais PDF a actuellement trop d'élan pour être jeté, période. Pour 'rendre' le contenu d'un fichier PDF sur un périphérique d'affichage ou une imprimante, votre code doit décompresser le PDF et restituer les composants (images, texte formaté, pages) sur le périphérique d'affichage. Cela semble aller droit à toute personne ayant l'expérience de la manipulation DOM HTML, mais il n'y a pas de comparaison directe. Le fichier PDF est un vector-based graphics. L'équivalent le plus probable que la plupart des gens auraient connu est SVG. Tout ce qui n'est pas une image incorporée dans un fichier PDF est une sortie basée sur un vecteur, à l'exception du texte qui est comprimé par zip et tracé par des coordonnées x/y plutôt que par des chaînes continues.

Les instructions de dessin et de mise en page résident dans des sections (condensés) qui sont liées via des pointeurs comme un arbre - pas de simple lecture de haut en bas & processus de rendu. Un PDF peut avoir des sections redondantes, remplacées par des modifications ultérieures mais toujours présentes. Et tandis que sur le sujet, à moins que le fichier PDF ne soit configuré pour une visualisation rapide sur le Web, le moteur de rendu doit attendre que le fichier entier soit livré avant de pouvoir comprendre comment l'afficher.L'affichage Web rapide place les sections "index" et "page 1" en haut du flux de fichiers pour permettre au moteur de rendu de sortir quelque chose à l'écran le plus rapidement possible. Pour prendre en charge le PDF de façon adéquate, vous devez pouvoir restituer tout ce que le PDF contient et le faire parfaitement conformément aux normes PDF. Dans le cas contraire, vous risquez de voir votre visualiseur PDF tomber en panne ou de ne pas pouvoir afficher tout le PDF. Vous devez prendre en compte les différents niveaux standard d'Acrobat, ainsi que les raccourcis et les bloings que les fournisseurs de packages d'édition (Word, Illustrator, InDesign) doivent insérer dans le fichier PDF; En format PDF, le texte peut être stocké sous la forme d'instructions de dessin vectoriel ou de références à des caractères dans un fichier de police (comme du texte HTML). En ce qui concerne les couleurs, lisez la spécification PDF et vous verrez qu'il existe une série d'options d'espace colorimétrique que le producteur PDF d'origine peut décider d'utiliser. Certains d'entre eux sont pour les périphériques d'impression qui utilisent des mécanismes de couleur exotiques. Vous devriez les interpréter à une couleur d'appareil raisonnable sur l'écran.

Et puis les polices. Les polices peuvent être des sous-ensembles incorporés ou non. Vous devrez prendre des décisions sur les autres polices à utiliser si une police mentionnée dans le PDF n'est pas présente lors de l'exécution du moteur de rendu. Pour rester fidèle au PDF, vous devez réaliser les glyphes en tant que graphiques vectoriels sur votre surface de dessin à l'échelle définie dans le PDF. Étant donné les fonctions de superposition, de mise à l'échelle et de rotation du PDF, vous utiliserez probablement une zone de dessin html. Toute personne qui sait vous dira que dans le monde de la toile, vous êtes à peu près seul pour rendre les fonctions - à la fois la force et la faiblesse de la toile, mais pour le rendu PDF, vous aurez probablement besoin d'un contrôle absolu. utiliser pour vous. Cela signifie que vous travaillez avec des primitives de dessin qui prennent du temps et peuvent être sensibles aux bugs.

Probablement votre plus grand défi est de comprendre la gamme complète et la portée de ce que vous avez à faire. Ce n'est pas impossible, mais difficile. En résumé sur cette conférence sur les défis de l'écriture d'un moteur de rendu PDF - le rendu des fichiers PDF parfaitement est une entreprise très compliquée. Il ne sera pas surprenant que lors de phases de versions initiales, de tels produits soient considérés comme très buggés en termes de non prise en charge de morceaux de spécifications PDF. Ne soyez pas trop dur avec les développeurs - la cible qu'ils visent est difficile. Si les développeurs ont le support et donc le temps de rester avec le projet, alors l'ensemble complet des fonctionnalités de la spécification PDF peut être couvert dans leur produit à un moment donné. Idéalement, ils publieraient une liste de fonctionnalités PDF non prises en charge afin que les utilisateurs puissent reconnaître les problèmes potentiels, bien que vous ne sachiez jamais qu'il y avait un problème jusqu'à ce qu'un fichier PDF semble étrange lorsqu'il est rendu ou que le moteur plante.