Comment implémenter l'impression dans ASP.Net MVC3
Dans le cadre de ma tâche dans une liste d'éléments, l'utilisateur peut sélectionner certains d'entre eux et à l'appeler "Imprimer" pas les éléments sélectionnés.
Pour chaque élément sélectionné, nous avons besoin d'imprimer les détails. Il est similaire à l'impression des factures des éléments sélectionnés dans un système de ventes.
J'ai créé une vue partielle d'écrire chaque enregistrement dans les détails mais je ne suis pas sûr de la façon de l'utiliser comme par mon exigence.
Puis-je appeler jQuery imprimer sur le document.prête à réaliser mon exigence?
@Levib suggéré, appelant vue partielle dans mon PrintView. Et PrintView du document.reay fonction est l'appel de la fenêtre.d'impression. Mais quand j'essaie d'appeler "Imprimer", je ne vois pas de dialogue d'impression.
C'est mon point de vue,
@section Styles
{
<link rel="stylesheet" href="AdminStyle.css" type="text/css" media="all" />
<link rel="stylesheet" href="AdminPrintOrder.css" type="text/css" media="print" />
}
@foreach (var item in Model)
{
<div id="content" style="page-break-before: always">
@{Html.RenderPartial("_OrderDetailView", item);}
</div>
}
@section scripts
{
<script type="text/javascript">
$(document).ready(function () {
debugger;
window.print();
});
</script>
}
Et mon impression invocateur de vue est
function printInvoices(){
$.ajax({
type: 'POST',
url: '/Batch/PrintInvoices',
data: '{ "allocationId" : "' + unSelected.toString() + '"}',
contentType: "application/json; charset=utf-8",
traditional: true,
success: printedView,
error: errorInSubscribing
});
}
Ai-je besoin pour gérer ajax reposne pour remplir de dialogue d'impression.
function printedView() {
unSelected = [];
}
Et de contrôleur de l'action est
[HttpPost]
public ActionResult PrintInvoices(string allocationId)
{
var context = new BatchContext();
var orderDetails = context.GetOrderDetails(RetriveList(allocationId));
return View(orderDetails);
}
source d'informationauteur Naresh
Vous devez vous connecter pour publier un commentaire.
'page-break-before: always'
attribut CSS.Cela permettra d'assurer que chaque partie se termine sur une page différente. Appel
'window.print()'
sur le chargement de la page et vous avez terminé!Étant donné l'étendue des questions posées dans les commentaires pour répondre à cette question, voici une description plus détaillée de ce qui doit être fait:
Préparation
@media print { }
déclaration dans une feuille de style, ou par l'application de lamedia="print"
attribut à lalink
balise dans votre page qui comprend la feuille de style. Vous avez fait ceci correctement.page-break-before: always
déclaration pour tous les éléments devant laquelle vous souhaitez qu'il y ait un saut de page. Vous semblez avoir fait cela avec des styles en ligne. Personnellement, j'aurais plutôt fait ça dans l'impression de la feuille de style que comme un style en ligne. Cette étape est primordiale pour vous d'être en mesure d'imprimer un article par page.Impression
window.print()
permet de vous comme l'auteur de la page pour définir le moment où la page est imprimée. Cela fait la même chose que CTRL + P ou en cliquant sur le bouton imprimer, sauf que vous pouvez le faire à partir de votre code JavaScript.le navigateur.**
Deux points importants:
window.print()
imprime la page qui est actuellement à l'écran. Si vous souhaitez imprimer une autre page, vous devez charger la page en quelque sorte la forme ou la forme (peut-être à travers une fenêtre) et la fenêtre d'appel.print() sur cette page.display: none
bien dans votre impression de la feuille de style sur tous les éléments que vous ne souhaitez pas apparaître sur la page imprimée.Sur Pdf:
Je n'ai rien contre l'exportation de pages au format PDF, si nécessaire, mais que vous n'avez pas de poser des questions sur une solution PDF, je vous ai donné le code HTML+CSS solution à votre question. Pdf de prendre quelques minutes pour générer et de la charge. Ils sont grands, cependant, lorsque vos utilisateurs voudront sauvegarder des copies de ce qu'ils sont d'impression. Si c'est le cas pour votre site que je vous recommande vivement d'envisager une telle solution.
Test:
Comment tester une impression de la feuille de style? Le plus simple est de simplement cliquer sur le bouton imprimer en Chrome qui va vous montrer un joli aperçu de ce que votre site va ressembler quand il est imprimé.
Mot de la fin:
Pour l'instant, oublier
window.print()
et de se concentrer sur l'obtention de votre page à la recherche comme il se doit par l'application de la CSS appropriée. Écrivez votre CSS, exécuter votre page, chercher à la sortie de Chrome, de modifier votre impression de la feuille de style que nécessaire... Rincer et répéter. Seulement une fois que vous avez la page apparaître exactement comme vous le souhaitez en cliquant sur le bouton imprimer si vous regardez ensuite l'appel de la fonction d'impression automatiquement dans votre JavaScript.Comment je fais de l'impression en MVC:
Simple que de changer votre Action à ressembler à ce
Je crois qu'il va obéir à la css de saut de page, donc si vous avez besoin uniquement d'imprimer un article par page, vous pouvez utiliser cette balise à la force des éléments à de nouvelles pages.
Je vais créer un fichier PDF afin de mieux contrôler la mise en page de la page.
Avec jQuery, je vais obtenir les éléments sélectionnés de l'utilisateur que de faire un appel ajax, ou un simple POSTE, à une méthode d'action qui acceptent une liste de vos articles comme paramètre, et ensuite de retour à un filestream contenant votre fichier pdf.
Il y a beaucoup de bibliothèques libres et commerciales pour créer un fichier pdf à la fois à l'exécution ou au moment de la conception.
Personnellement, j'utilise DevExpress et je suis heureux avec elle.
Comme une alternative opensource, vous pouvez envisager PDFSharp