2010-08-23 6 views
2

J'ai un site Web ASP.NET et d'une des pages Web j'ai besoin de générer un document PDF qui contient la sortie d'un ensemble de pages Web que l'utilisateur sélectionne. Je l'appelle "lot PDF". Fondamentalement, l'utilisateur est invité à choisir les pages Web dont il a besoin de mettre dans le PDF, puis clique sur un bouton qui crée un fichier PDF avec toutes les pages Web sélectionnées. Pour cela, j'envoie la liste des pages sélectionnées (leurs ID) via une chaîne de requête et, sur le serveur, pour chaque ID de page Web dans la chaîne de requête, il génère une requête http à l'hôte local et obtient la page PDF de cette demande (j'ai Request.Filter qui fait la conversion de HTML en PDF). Ensuite, il combine tous les flux PDF en un seul fichier PDF et le déverse dans le flux de réponse. Tout fonctionne.Conception de la génération PDF

Mais je voudrais le faire en utilisant AJAX. Actuellement, une nouvelle fenêtre de navigateur s'ouvre et l'utilisateur doit attendre que le serveur soit terminé avant de pouvoir voir la page. Au lieu de cela, j'aimerais envoyer une requête AJAX et, une fois la génération de PDF terminée, afficher le fichier PDF. Une façon de faire est d'écrire le PDF dans un fichier sur le serveur quand AJAX envoie une requête, puis de rediriger vers ce fichier, mais est-il possible d'éviter de jouer avec des fichiers? Par exemple, puis-je mettre le PDF entier dans la session? D'autres idées?

Merci.

Répondre

0

Au lieu de la session, pourquoi ne pas tout mettre dans un flux de mémoire? Lire le contenu des pages HTML, générer votre sortie d'octets, et faire quelque chose comme:

[HttpGet] 
public ActionResult PreviewPDF() 
{ 
    // ... 
    // The PDF file stream. 
    MemoryStream pdf = PDF.Render(xmldata, xslfo); 
    return new FileStreamResult(pdf, "application/pdf"); 
} 

En outre, une petite question: comment diable avez-vous transformez vos pages web en PDF, utilisez-vous une 3ème partie outil?

+0

merci pour votre aide. J'ai fait quelque chose de similaire. Pour convertir des pages en PDF, j'utilise un outil tiers appelé ABCPdf qui prend le HTML et émet un PDF. voici une discussion pertinente: http://stackoverflow.com/questions/564650/convert-html-to-pdf-in-net – akonsu

Questions connexes