Próbuję przekonwertować HTML na PDF z iTextSharp
w MVC Razor, ale wszystko, co próbowałem, nie zadziałało. Czy ktoś wie, jak to osiągnąć?Konwersja HTML do PDF w MVC za pomocą iTextSharp w MVC Razor
Odpowiedz
Jest szczegółowy i step-by-step tutorial
na CodeProject, który możesz wykonać. To ilustruje, w jaki sposób można wyświetlić widok ASP.NET MVC jako plik PDF, używając iTextSharp do konwersji. Pamiętaj jednak, że iTextSharp nie był przeznaczony do konwersji HTML na PDF, więc może nie radzić sobie bardzo dobrze ze złożonymi stronami HTML i stylami CSS.
Powinieneś sprawdzić RazorPDF, który używa iText do wygenerowania pliku PDF, ale w bardziej przyjazny sposób.
Witaj Rosdi Kasim.Wygląda na to, że najnowsza wersja iTextSharp (5.4.4) nie działa poprawnie z RazorPDF i uczyniła go bezużytecznym. –
@real_yggdrasil Bądź ostrożny .. najnowszy iTextSharp (począwszy od 5.x) ma inną licencję. Również "renderowane bezużyteczne" nie jest pomocne. Spróbuj przesłać pytanie z przykładowym lub szczegółowym opisem. –
Nie zgadzam się. Stało się bezużyteczne, ponieważ nic nie robi i nie było aktualizowane od 2012 roku. – Sinaesthetic
Tutaj można znaleźć inne podejście w przypadku, gdy chcesz napisać zwykły xml, uważam, że jest znacznie prostszy i lżejszy.
http://www.codeproject.com/Articles/260470/PDF-reporting-using-ASP-NET-MVC3
Oto jak zaimplementować to rozwiązanie za pomocą Razor silnik NIE z dziwnym <itext..
znaczników.
W ten sposób masz pełną kontrolę nad prezentacją pdf przy użyciu standardowego wyjścia html.
Projekt z kodem Przykład rozwiązania i źródłowy jest dostępny tutaj z Nuget Instrukcja instalacji:
https://github.com/andyhutch77/MvcRazorToPdf
Install-Package MvcRazorToPdf
ten wykorzystuje również nową licencję iTextSharp, więc nie cierpi z jednego z negatywów wymienione w innych odpowiedziach.
Człowieku, ty rock, dzięki. Czy mogę jakoś zmienić orientację strony? –
@EdgarSalazar Bez problemu. Ponieważ używa pod nim iTextXmlWorker, myślę, że powinieneś być w stanie rozwiązać ten problem, stylizując div na proporcje krajobrazu. – hutchonoid
A jak mam to zrobić? Jestem zagubionym człowiekiem. –
public virtual void printpdf(string html)
{
String htmlText = html.ToString();
Document document = new Document();
string filePath = HostingEnvironment.MapPath("~/Content/Pdf/");
PdfWriter.GetInstance(document, new FileStream(filePath + "\\pdf-"+Filename+".pdf", FileMode.Create));
document.Open();
iTextSharp.text.html.simpleparser.HTMLWorker hw = new iTextSharp.text.html.simpleparser.HTMLWorker(document);
hw.Parse(new StringReader(htmlText));
document.Close();
}
prostu przekazać html string
do parametru że ciąg dostaniesz przez renderpartialview text = viewname....
To jak to zrobić za pomocą MVC
:
[Route("ABCDD")]
[HttpGet]
public void ABCDD() {
WebClient wc = new WebClient();
// string url = HttpContext.Current.Request.Url.AbsoluteUri;
string url = "http://localhost:3042/Reports/COAListing";
string fileContent = wc.DownloadString(url);
List<string> tableContents = GetContents(fileContent, table_pattern);
string HTMLString = String.Join(" ", tableContents.ToArray());
Document pdfDoc = new Document(PageSize.A4, 10f, 10f, 10f, 0f);
PdfWriter.GetInstance(pdfDoc, HttpContext.Current.Response.OutputStream);
pdfDoc.Open();
pdfDoc.Add(new Paragraph("Welcome to dotnetfox"));
List<IElement> htmlarraylist = HTMLWorker.ParseToList(new StringReader(HTMLString), null);
for (int k = 0; k < htmlarraylist.Count; k++) {
pdfDoc.Add((IElement) htmlarraylist[k]);
}
pdfDoc.Close();
HttpContext.Current.Response.ContentType = "pdf/application";
HttpContext.Current.Response.AddHeader("content-disposition", "attachment;" +
"filename=sample.pdf");
HttpContext.Current.Response.Cache.SetCacheability(HttpCacheability.NoCache);
HttpContext.Current.Response.Write(pdfDoc);
HttpContext.Current.Response.End();
}
Twoja odpowiedź używa 'HTMLWorker' , który jest przestarzały. Powinieneś użyć 'XMLWorker'. –
to daje błąd XMLWorker nie istnieje w bieżącym kontekście –
Jaką wersję iTextSharp używasz? Czy możesz go odtworzyć w iTextSharp 5.5.9? –
Dobry sposób na konwersję z MVC HTML Wyświetl do pliku PDF (nawet jeśli nie dotyczy on bezpośrednio iTextSharp), używa się: Rotativa:
Install-Package Rotativa
ta opiera się na wkhtmltopdf
ale ma lepsze wsparcie css niż iTextSharp posiada i jest bardzo prosty w integracji z MVC, jak można po prostu wrócić pogląd jako PDF:
public ActionResult GetPdf()
{
//...
return new ViewAsPdf(model);// and you are done!
}
Powyżej znajduje się pełna przykładem MVC Razor w C# za pomocą evo html to pdf for .net konwertować bieżącego widoku MVC do PDF i wysłać spowodowało PDF do przeglądarki do pobrania:
[HttpPost]
public ActionResult ConvertCurrentPageToPdf(FormCollection collection)
{
object model = null;
ViewDataDictionary viewData = new ViewDataDictionary(model);
// The string writer where to render the HTML code of the view
StringWriter stringWriter = new StringWriter();
// Render the Index view in a HTML string
ViewEngineResult viewResult = ViewEngines.Engines.FindView(ControllerContext, "Index", null);
ViewContext viewContext = new ViewContext(
ControllerContext,
viewResult.View,
viewData,
new TempDataDictionary(),
stringWriter
);
viewResult.View.Render(viewContext, stringWriter);
// Get the view HTML string
string htmlToConvert = stringWriter.ToString();
// Get the base URL
String currentPageUrl = this.ControllerContext.HttpContext.Request.Url.AbsoluteUri;
String baseUrl = currentPageUrl.Substring(0, currentPageUrl.Length - "Convert_Current_Page/ConvertCurrentPageToPdf".Length);
// Create a HTML to PDF converter object with default settings
HtmlToPdfConverter htmlToPdfConverter = new HtmlToPdfConverter();
// Convert the HTML string to a PDF document in a memory buffer
byte[] outPdfBuffer = htmlToPdfConverter.ConvertHtml(htmlToConvert, baseUrl);
// Send the PDF file to browser
FileResult fileResult = new FileContentResult(outPdfBuffer, "application/pdf");
fileResult.FileDownloadName = "Convert_Current_Page.pdf";
return fileResult;
}
- 1. Konwersja stron pliku PDF do obrazów za pomocą itextsharp
- 2. iTextSharp HTML do PDF obrazu src
- 3. Konwersja HTML na PDF za pomocą PHP?
- 4. Zwróć wygenerowany pdf za pomocą sprężyny MVC
- 5. ustawić nową stronę w HTML za pomocą iTextSharp HTMLWorker (html do pdf)
- 6. Konwersja pliku PDF do HTML w C#
- 7. Konwersja PDF do HTML
- 8. MVC/Razor: Warunkowe zagnieżdżona html tag
- 9. Odczytywanie/modyfikowanie metadanych PDF za pomocą iTextSharp
- 10. Konwersja pliku HTML Div do pliku PDF za pomocą Jquery
- 11. ASP.NET MVC Razor Łączenie
- 12. Jak wyświetlić plik PDF za pomocą PdfSharp w ASP.Net MVC?
- 13. Tworzenie kroków Kreatora w MVC i Razor
- 14. MVC Razor HTML Helper Składnia: Viewbag w Html.Hidden obiekt parametr
- 15. MVC Razor @foreach
- 16. Niestandardowe elementy sterujące za pomocą programu ASP.NET MVC Razor
- 17. Wyszukaj konkretne słowo w formacie PDF za pomocą Itextsharp
- 18. Problem z dodaniem javascript do pliku PDF za pomocą iTextSharp
- 19. MVC 3 Razor PopUp Window
- 20. ASP.NET MVC C# Razor Minification
- 21. Konwersja plików PDF na HTML za pomocą Pythona
- 22. Co znaczy @: w ASP.net MVC Razor?
- 23. Konwersja obiektu do JSON w MVC 4
- 24. Jak zakodować '/' w ASP.NET MVC Razor
- 25. Wyświetlanie przesłanego obrazu w MVC 3 Razor
- 26. użyciu string.Format w MVC Razor zobaczyć stronę
- 27. Jak dołączyć zmienną Razor MVC w Url.Content?
- 28. Potrzebujesz pomocy w tworzeniu plików PDF z HTML za pomocą itextsharp
- 29. Rendering kodu HTML za pomocą TagBuilder i ASP.NET MVC 4 (z silnikiem Razor)
- 30. Konwersja plików PDF na HTML w PHP?
Chcę wiedzieć, że jeśli iTextSharp nie była przeznaczona do konwersji HTML do PDF, który jeden z darmo źródło? – Dhwani
JUŻ DZISIAJ> 14.07.2015 NIE PATRZEJ TEGO ODPOWIEDZI! – MDDDC
@MDDDC dlaczego nie? Gdzie powinienem wtedy patrzeć? –