2010-09-23 30 views
5

i m bằng cách sử dụng asp.net mvc2 cho ứng dụng của tôi. tôi có chế độ xem chấp nhận một mô hình và hiển thị dữ liệu của nó ở một số định dạng. tôi muốn trang này được chuyển đổi thành tệp pdf để nó có thể được gửi qua tệp đính kèm hoặc được tạo và tải xuống khi đang di chuyển. tôi có một số thành công tạo pdf với thư viện itextsharp nhưng họ nói nó có hỗ trợ rất cơ bản cho html và css. nếu có ai đó đã đưa các trang html phức tạp vào pdf bằng itextsharp hoặc bất kỳ thư viện nào khác giúp tôi giải quyết vấn đề này. bất kỳ nhận xét nào được đánh giá caoTạo pdf từ giao diện .net mvc

cảm ơn

+0

"plz giúp tôi giải quyết vấn đề này" - trong việc giải quyết vấn đề, chính xác? –

+0

@Tom tạo pdf từ html phức tạp hoặc trên bay hoặc từ các tệp html đã lưu cần lưu giữ tất cả định dạng được xác định qua css –

+1

Có thể là một ý tưởng hay để liệt kê những gì bạn đã cố gắng để người khác không đăng câu trả lời những thứ bạn đã từ chối. – Buildstarted

Trả lời

3

Tôi nghĩ rằng điều này related question sẽ giúp cho một mức độ. Chỉ cần lưu ý rằng HTML hiển thị và tài liệu PDF phục vụ các mục đích khác nhau như được mô tả here. Ý tưởng cơ bản là cái sau "được thiết kế cho đầu ra in", và cái kia "được thiết kế để hiển thị video".

Đề xuất của tôi là trong hầu hết các trường hợp khi một bản in từ web, có một tùy chọn để tạo biểu định kiểu riêng để in bằng cách sử dụng tờ khai này. Ý tưởng là để dập tắt phong cách và làm cho nó in thân thiện hơn (= ít phức tạp).

article sau đây từ A List Apart cung cấp thêm thông tin chi tiết về tùy chọn này.

<link rel="stylesheet" type="text/css" media="print" href="print.css" /> 

Thư viện PDF miễn phí khác để xem là PDFSharp. Tuy nhiên, chúng không hỗ trợ chuyển đổi từ HTML sang PDF.

khác có liên quan SO câu hỏi

0

Mặc dù không miễn phí, bạn có thể muốn xem Dịch vụ chuyển đổi PDF. Bản beta mới nhất hỗ trợ chuyển đổi HTML với độ chính xác cao.

Hãy xem this post, nó hoạt động tốt với môi trường dựa trên .net và java.

Tôi đã làm việc trên sản phẩm này để các tuyên bố từ chối trách nhiệm thông thường được áp dụng. rất vui để trả lời bất kì câu hỏi nào.

+0

tôi appriciate ur trả lời nhưng tôi m nghiêng hơn đối với một giải pháp mã nguồn mở –

0

Bạn cũng có thể xem xét sử dụng http://itextpdf.com/ cung cấp chuyển đổi html sang pdf.

"iText có thể chuyển đổi tệp XML hoặc HTML thành PDF, nhưng chỉ ở mức rất cơ bản. Chuyển đổi tài liệu từ một định dạng sang định dạng khác nằm ngoài phạm vi của iText. Không: iText không chuyển đổi tài liệu Word sang PDF! "

+0

cảm ơn sự giúp đỡ, tôi đã thử itextsharp nhưng nó không đáp ứng yêu cầu của tôi và có thực sự của nó rất cơ bản –

0

Chụp xem render (html) như là một chuỗi và vượt qua nó để Winnovative chương trình tạo PDF mà là một thực sự công cụ tốt giúp bảo toàn định dạng phức tạp. Đây là đoạn mã để tạo PDF từ html bắt

string test="\r\n\r\n<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\r\n\r\n<html xmlns=\"http://www.w3.org/1999/xhtml\" >\r\n<head>\r\n <link rel=\"Stylesheet\" href=\"../../Content/style.css\" type=\"text/css\" />\r\n <title>Cover Page</title>\r\n <style type=\"text/css\">\r\n html, body\r\n {\r\n\t font-family: Arial, Helvetica, sans-serif;\r\n\t font-size: 13pt;\r\n\t padding: 0px;\r\n\t margin: 0px;\r\n\t background-color: #FFFFFF;\r\n\t color: black;\r\n\t width: 680px;\r\n }\r\n </style>\r\n</head>\r\n<body>\r\n <div>\r\n Ssotest Ssotest, \r\n </div> \r\n</body>\r\n</html>\r\n" 

       FileStreamResponseContext response = new FileStreamResponseContext(); 
Response .clear(); 
    Document doc = new Document(); 
       doc.DocumentInformation.CreationDate = DateTime.Now; 
       doc.DocumentInformation.Title = "Test Plan"; 
       doc.DocumentInformation.Subject = "Test Plan"; 
       doc.CompressionLevel = CompressionLevel.NormalCompression; 
       doc.Margins = new Margins(0, 0, 0, 0); 
       doc.Security.CanPrint = true; 
       doc.ViewerPreferences.HideToolbar = false; 
       doc.ViewerPreferences.FitWindow = false; 

    string baseUrl = String.Format("http://localhost{0}/", Request.Url.Port == 80?"":":" + Request.Url.Port.ToString()); 

    PdfPage docTestPlan = doc.AddPage(PageSize.Letter, new Margins(0, 0, 0, 0), PageOrientation.Portrait); 
    // passing the string test returned from the string writer 

     HtmlToPdfElement htmlToPdf = new HtmlToPdfElement(test, baseUrl); 
       htmlToPdf.FitWidth = false; 
       docTestPlan.AddElement(htmlToPdf); 


       /****************************************** 
       * put doc in a memory stream for return */ 
       response.FileDataStream = new MemoryStream(); 
       doc.Save(response.FileDataStream); 
       doc.Close(); 
       response.FileDataStream.Position = 0; 

       return new FileStreamResult(response.FileDataStream, "application/pdf"); 



If you need to capture the controller action follow my post here.[http://stackoverflow.com/questions/5553674/capturing-html-to-string-in-mvc2-0][1] 

Bạn có thể nhận được các mã số mẫu từ trang web chính thức của tác giả Winnovative PDF.