2017-08-30 16 views
0

J'ai quelques fichiers PDF chargés dans une liste de tableaux []. Je souhaite afficher la première page de ces fichiers PDF dans un formulaire WPF. Si possible, un contrôle d'image serait bien. Cependant, je voudrais éviter d'écrire les octets sur les fichiers PDF sur la machine locale.Prévisualisation d'un PDF à partir d'une matrice d'octets sans écriture d'octets sur la machine locale

Question: Comment puis-je prendre le Byte [] d'un PDF (déjà en mémoire), et afficher la première page du PDF dans un contrôle d'image sans écrire PDF à la machine locale?

Répondre

2

Vous n'allez pas devoir écrire le PDF sur le disque, vous pouvez le garder en mémoire. Vous devrez cependant charger complètement le PDF en tant qu'objet en mémoire.

Voici un article Microsoft sur la façon de convertir des images PDF en C# en utilisant, et je pense que ce serait un bon point de départ pour vous. L'exemple suivant provient du lien ci-dessous, et pour vos besoins, vous devez ignorer la boucle for et convertir simplement la première page. Notez que lors de l'instanciation de l'objet PdfImageConverter, il y a plusieurs surcharges, on prend dans un flux, qui est votre octet [].

PdfImageConverter pdfConverter = new PdfImageConverter("sample.pdf"); 

pdfConverter.DPI = 96; 

for (int i = 0; i < pdfConverter.PageCount; i++) 
{  
    Image pageImage = pdfConverter.PageToImage(i, 500, 800); 

    pageImage.Save("Page " + i + ".jpg", ImageFormat.Jpeg); 
} 

https://code.msdn.microsoft.com/windowsdesktop/How-to-Convert-PDF-to-84ac3273


projet de code a une réponse pour créer des vignettes de PDF (VB.NET)

https://www.codeproject.com/Articles/5887/Generate-Thumbnail-Images-from-PDF-Documents

Il est écrit en VB.NET, mais le processus sera la même chose pour C#.


Il y a aussi une autre question SO à transformer un fichier PDF en images qui fonctionne également pour vous:

Save pdf to jpeg using c#

Avez-vous des types d'exigences (bibliothèques, des API, etc.) cela pourrait également affecter la solution? Si oui, je vais mettre à jour cette réponse.