2010-09-21 22 views
1

Je travaille sur un projet WinForms C# 3.0/.NET 3.5 impliquant la construction de rapports prédéfinis. L'une des exigences du projet est d'exporter au format PDF, et le faire actuellement sur le disque fonctionne très bien. La question a été soulevée, cependant, s'il est possible d'exporter le fichier dans un flux et l'ouvrir directement dans la visionneuse native sur le client, en sautant entièrement l'écriture sur le disque. Je sais que c'est quelque peu possible avec ASP.Net grâce à l'utilisation des en-têtes Response.Write() et autres, mais je dois essayer de le faire avec WinForms/WPF standard, et j'ai épuisé mes propres idées pour cela. Quelqu'un a-t-il un aperçu de la façon dont cela pourrait être fait, si c'est possible? Ou est-ce que le fichier doit d'abord être écrit sur le disque, puis ouvert séparément?.NET 3.5 - Ouvrir un PDF directement à partir d'un flux dans la visionneuse native

+0

Avez-vous obtenu une solution pour la même chose? J'ai besoin d'implémenter la même logique avec ASP.NET 3.5. Une réponse rapide sera appréciée. Merci d'avance. – Mike

Répondre

4

Je pense qu'il est important que vous vous demandez ce que vous accomplissez si vous contourner le système de fichiers. L'écriture dans un dossier temporaire standard est une solution parfaitement acceptable. C'est généralement de cette manière que les navigateurs vous permettent d'afficher les fichiers multimédia et les fichiers PDF. Je voudrais me concentrer sur l'écriture d'une fonction de nettoyage agréable, qui supprime le fichier temporaire après qu'il a été créé. Aussi, quel serait le but de l'exportation au format PDF si vous ne sauvegardez pas le fichier? Sous Unix/Linux, vous pourriez avoir créé un canal nommé dans le système de fichiers. Cela a du sens si vous avez un flux multimédia énorme que vous souhaitez mettre en tampon entre les applications. Dans le cas du PDF, vous gagnez très peu.

Exporter vers un dossier temporaire. C'est bon.

+0

Malheureusement, je ne suis pas libre de discuter de toute la portée du projet. Dans cet esprit, j'ai posé la même question lorsque l'idée m'a été proposée. En raison des plates-formes sur lesquelles ce code doit s'exécuter, l'utilisation des ressources est une préoccupation, tout comme l'espace disque disponible. Pouvoir passer l'écriture sur le disque permettrait d'économiser du temps et des ressources système précieuses. – Clyde

2

Vous devrez écrire le fichier PDF dans un répertoire temporaire.

La seule façon d'afficher un fichier PDF à partir d'un en mémoire flux est d'incorporer un contrôle de visionneuse PDF tiers