दिलचस्प पोस्ट
अक्षांश के देशांतर में राज्य कोड में अक्षांश निर्देशांक वसंत जेसन अनुरोध 406 प्राप्त करना (स्वीकार्य नहीं) आईसीएस एंड्रॉइड जीपीएस प्रोग्राम को सक्षम करते हैं? विंडो के लिए सबसे हल्के वेब सर्वर (केवल स्थिर सामग्री) जावास्क्रिप्ट में बंद – क्या गलत है? पांडा डेटाफ़्रेम में विशेष सेल के लिए मूल्य निर्धारित करें पीपीओ का परीक्षण करने के लिए PHP कोड उपलब्ध है? नई लाइनों सहित किसी भी वर्ण से मेल करने के लिए रेगेक्स वितरित अनुक्रम संख्या पीढ़ी? हम सी ++ में अस्थिर खोजशब्द का उपयोग क्यों करते हैं? एप्पल "मोबाइल वेब खोल" अनुप्रयोगों को अस्वीकार कर देता है? कंसोल कंटेंट सिक्योरिटी पॉलिसी के बारे में त्रुटि दिखाता है और बहुत सारे असफल गेस्ट अनुरोध सी + + चेतावनी: स्थानीय चर का पता कंप्यूटर विज्ञान के संबंध में रूबी की उपज सुविधा क्रोम में चयनित विकल्प तत्व पर ईवेंट पर क्लिक करें

एमवीसी में पीडीएफ को कैसे वापस करना है?

ITextSharp के लिए यह डेमो कोड है I

Document document = new Document(); try { PdfWriter.GetInstance(document, new FileStream("Chap0101.pdf", FileMode.Create)); document.Open(); document.Add(new Paragraph("Hello World")); } catch (DocumentException de) { Console.Error.WriteLine(de.Message); } catch (IOException ioe) { Console.Error.WriteLine(ioe.Message); } document.Close(); 

ब्राउज़र में पीडीएफ दस्तावेज़ वापस करने के लिए मैं नियंत्रक कैसे प्राप्त करूं?

संपादित करें:

इस कोड को चलाना एक्रोबेट खोलता है, लेकिन मुझे एक त्रुटि संदेश मिलता है "फाइल क्षतिग्रस्त है और मरम्मत नहीं की जा सकती"

  public FileStreamResult pdf() { MemoryStream m = new MemoryStream(); Document document = new Document(); PdfWriter.GetInstance(document, m); document.Open(); document.Add(new Paragraph("Hello World")); document.Add(new Paragraph(DateTime.Now.ToString())); m.Position = 0; return File(m, "application/pdf"); } 

कोई विचार क्यों यह काम नहीं करता है?

Solutions Collecting From Web of "एमवीसी में पीडीएफ को कैसे वापस करना है?"

एक FileContentResult लौटें आपके नियंत्रक कार्रवाई की अंतिम पंक्ति कुछ ऐसा होगी:

 return File("Chap0101.pdf", "application/pdf"); 

यदि आप इस पीडीएफ को गतिशील रूप से जनरेट कर रहे हैं, तो MemoryStream का उपयोग करना बेहतर हो सकता है, और फाइल में सहेजने के बजाय मेमोरी में दस्तावेज बना सकते हैं। कोड कुछ ऐसा होगा:

 Document document = new Document(); MemoryStream stream = new MemoryStream(); try { PdfWriter pdfWriter = PdfWriter.GetInstance(document, stream); pdfWriter.CloseStream = false; document.Open(); document.Add(new Paragraph("Hello World")); } catch (DocumentException de) { Console.Error.WriteLine(de.Message); } catch (IOException ioe) { Console.Error.WriteLine(ioe.Message); } document.Close(); stream.Flush(); //Always catches me out stream.Position = 0; //Not sure if this is required return File(stream, "application/pdf", "DownloadName.pdf"); 

मुझे यह कोड के साथ काम करना पड़ा।

 using iTextSharp.text; using iTextSharp.text.pdf; public FileStreamResult pdf() { MemoryStream workStream = new MemoryStream(); Document document = new Document(); PdfWriter.GetInstance(document, workStream).CloseStream = false; document.Open(); document.Add(new Paragraph("Hello World")); document.Add(new Paragraph(DateTime.Now.ToString())); document.Close(); byte[] byteInfo = workStream.ToArray(); workStream.Write(byteInfo, 0, byteInfo.Length); workStream.Position = 0; return new FileStreamResult(workStream, "application/pdf"); } 

यदि आप अपने ऐक्शन मेथड से एक FileResult , और कंट्रोलर पर File() एक्सटेंशन विधि का उपयोग करते हैं, जो आप चाहते हैं वह बहुत आसान है। File() विधि पर ओवरराइड हैं जो File() की बाइनरी सामग्री, फ़ाइल का पथ या एक Stream

 public FileResult DownloadFile() { return File("path\\to\\pdf.pdf", "application/pdf"); } 

आपको निर्दिष्ट करना होगा:

 Response.AppendHeader("content-disposition", "inline; filename=file.pdf"); return new FileStreamResult(stream, "application/pdf") 

फ़ाइल को डाउनलोड किए जाने के बजाय ब्राउज़र में सीधे खोलने के लिए

मैंने इसी तरह की समस्याओं में भाग लिया है और मैंने एक समाधान में ठोकर खाई है मैंने दो पदों का इस्तेमाल किया, एक स्टैक से जो डाउनलोड के लिए विधि को वापस लौटाता है और ItextSharp और MVC के लिए कार्यशील समाधान दिखाता है।

 public FileStreamResult About() { // Set up the document and the MS to write it to and create the PDF writer instance MemoryStream ms = new MemoryStream(); Document document = new Document(PageSize.A4.Rotate()); PdfWriter writer = PdfWriter.GetInstance(document, ms); // Open the PDF document document.Open(); // Set up fonts used in the document Font font_heading_1 = FontFactory.GetFont(FontFactory.TIMES_ROMAN, 19, Font.BOLD); Font font_body = FontFactory.GetFont(FontFactory.TIMES_ROMAN, 9); // Create the heading paragraph with the headig font Paragraph paragraph; paragraph = new Paragraph("Hello world!", font_heading_1); // Add a horizontal line below the headig text and add it to the paragraph iTextSharp.text.pdf.draw.VerticalPositionMark seperator = new iTextSharp.text.pdf.draw.LineSeparator(); seperator.Offset = -6f; paragraph.Add(seperator); // Add paragraph to document document.Add(paragraph); // Close the PDF document document.Close(); // Hat tip to David for his code on stackoverflow for this bit // https://stackoverflow.com/questions/779430/asp-net-mvc-how-to-get-view-to-generate-pdf byte[] file = ms.ToArray(); MemoryStream output = new MemoryStream(); output.Write(file, 0, file.Length); output.Position = 0; HttpContext.Response.AddHeader("content-disposition","attachment; filename=form.pdf"); // Return the output stream return File(output, "application/pdf"); //new FileStreamResult(output, "application/pdf"); } 

आप सामग्री प्रकार को संशोधित करने के लिए एक कस्टम वर्ग बना सकते हैं और प्रतिक्रिया में फ़ाइल जोड़ सकते हैं।

http://haacked.com/archive/2008/05/10/writing-a-custom-file-download-action-result-for-asp.net-mvc.aspx

मुझे पता है कि यह सवाल पुराना है लेकिन मैंने सोचा कि मैं इसे साझा करेगा जैसा कि मुझे कुछ इसी तरह से नहीं मिला।

मैं अपने विचारों / मॉडल को रेज़र के प्रयोग से सामान्य बनाना चाहता हूं और उन्हें पीडीएफ के रूप में प्रदान किया है

इस तरह से मैं पीडीएफ प्रस्तुति पर मानक HTML आउटपुट का उपयोग कर रहा था, यह जानने के बजाय कि iTextSharp का उपयोग कर दस्तावेज़ को लेआउट कैसे करना है।

परियोजना और स्रोत कोड यहां नूजैट स्थापना निर्देशों के साथ उपलब्ध है:

https://github.com/andyhutch77/MvcRazorToPdf

 Install-Package MvcRazorToPdf 

आप आम तौर पर एक रिस्पांस करते हैं। फ्लश, एक रिस्पांस के बाद। क्लोज़, लेकिन किसी कारण से iTextSharp लाइब्रेरी इस तरह से नहीं दिख रहा है। डेटा यह नहीं है और एडोब सोचता है कि पीडीएफ भ्रष्ट है। रिस्पांस को छोड़ दें। फ़ोकस करें और देखें कि आपका परिणाम बेहतर है या नहीं:

 Response.Clear(); Response.ContentType = "application/pdf"; Response.AppendHeader("Content-disposition", "attachment; filename=file.pdf"); // open in a new window Response.OutputStream.Write(outStream.GetBuffer(), 0, outStream.GetBuffer().Length); Response.Flush(); // For some reason, if we close the Response stream, the PDF doesn't make it through //Response.Close(); 

अगर आप पॉप-अप या ब्राउज़र पर पीडीएफ प्रदर्शित करने के लिए डीबी से वाई-बाइनरी डेटा वापस करते हैं तो इसका मतलब है कि इस कोड का पालन करें: –

पृष्ठ देखें:

 @using (Html.BeginForm("DisplayPDF", "Scan", FormMethod.Post)) { <a href="javascript:;" onclick="document.forms[0].submit();">View PDF</a> } 

स्कैन नियंत्रक:

 public ActionResult DisplayPDF() { byte[] byteArray = GetPdfFromDB(4); MemoryStream pdfStream = new MemoryStream(); pdfStream.Write(byteArray, 0, byteArray.Length); pdfStream.Position = 0; return new FileStreamResult(pdfStream, "application/pdf"); } private byte[] GetPdfFromDB(int id) { #region byte[] bytes = { }; string constr = System.Configuration.ConfigurationManager.ConnectionStrings["Connection"].ConnectionString; using (SqlConnection con = new SqlConnection(constr)) { using (SqlCommand cmd = new SqlCommand()) { cmd.CommandText = "SELECT Scan_Pdf_File FROM PWF_InvoiceMain WHERE InvoiceID=@Id and Enabled = 1"; cmd.Parameters.AddWithValue("@Id", id); cmd.Connection = con; con.Open(); using (SqlDataReader sdr = cmd.ExecuteReader()) { if (sdr.HasRows == true) { sdr.Read(); bytes = (byte[])sdr["Scan_Pdf_File"]; } } con.Close(); } } return bytes; #endregion }