2013-08-06 28 views
6

Tôi đang cố gắng tích hợp evoPDF trên ứng dụng asp.net của mình. Tôi đang gửi một phần của html từ tập tin html của tôi onclick thông qua ajax. Tất cả mọi thứ hoạt động fie cho đến phần này. Bây giờ, khi tôi gọi các phương thức này từ API EvoPdf.Không thể áp dụng CSS cho chuỗi html

1. GetPdfBytesFromHtmlStream(Stream, Encoding,urlbase) 

2. SavePdfFromHtmlStringToFile(String html,string filename,urlbase) 

đoạn html của tôi Tôi gửi được một cái gì đó giống như

<ol class = "lol"> 
     <li> HEY </li> 
     <li> Now </li> 

    </ol> 

Các Css mà là ở các tập tin bên ngoài là một cái gì đó giống như

.lol { 

     background-color: red; 

    } 

Theo các tài liệu tham số thứ ba phải url đầy đủ của Html gốc, nơi bạn trích xuất đoạn của html. Tôi đã tải ứng dụng của mình lên web vì thử localhost/3232 không hoạt động. Nhưng, tôi không thể thấy bất kỳ CSS nào được áp dụng trong Html được tạo. Trong tài liệu, họ cũng đề nghị thêm

 <HEAD> <BASE HREF="full url to your html file"> </HEAD> 

Và sử dụng phương pháp này.

 pdfConverter.GetPdfBytesFromHtmlString(String html); 

Không có gì tôi đã thử ở trên áp dụng CSS. Bất kỳ suy nghĩ nào ....

+0

http://stackoverflow.com/questions/37392418/even-after-providing-fully-qualified-url-in-the-html-string-evopdf-converter-is kẻ u có thể cung cấp một câu trả lời thích hợp cho câu hỏi của tôi – aggy

Trả lời

3

Mặc dù có thể có html trong một tệp bên ngoài với evoPDF, tôi không khuyên bạn nên sử dụng nó. Thay vào đó, chỉ cần in các kiểu trong phần đầu của tài liệu. Khi chúng tôi thiết lập trình tạo PDF cho Tuyển dụng 2.0, tôi nhớ rằng các url phải là url trực tiếp, phía sau máy chủ web, không chỉ liên kết tương đối trong cùng một cấu trúc thư mục. Ngoài ra còn có một thời gian chờ trong evo pdf có thể gây ra mất hình ảnh nếu tải mất quá lâu, mà cũng chơi đẹp hơn với tất cả mọi thứ nội tuyến.

Tôi cũng khuyên bạn nên chuyển html hoàn toàn hợp lệ, không chỉ các đoạn mã bạn cần để tạo chế độ xem. Đằng sau hậu trường (trong phiên bản evoPDF của chúng tôi ít nhất), nó chỉ kéo một phiên bản trình duyệt và chụp ảnh màn hình. Chúng hiển thị một chút khác nhau tùy thuộc vào loại tài liệu.

+0

Có bạn đúng về css nội tuyến. Tôi là một nhà phát triển tại một trường đại học. Tôi không viết Evopdf cho một ứng dụng. Nhưng đối với tất cả các ứng dụng chạy trong trường đại học. Nó nên làm 2 điều. 1 thay đổi toàn bộ url url thành Pdf và một phần thay đổi khác của html thành pdf. Vì vậy, đó là lý do tại sao tôi không muốn chỉ hỗ trợ cho trích dẫn nội tuyến, vì tôi không biết những gì mong đợi từ tất cả các ứng dụng khác. Tôi cũng đã thử, tải lên url trực tiếp và gọi css. Vẫn không có CSS ​​ – Rabin

+0

Điều duy nhất tôi có thể nghĩ đến để đề xuất mà không thấy một ví dụ đầy đủ là thẻ cơ sở được cho là trỏ đến thư mục gốc của tất cả các url tương đối. Nó không phải là điểm đến một tập tin thực tế trực tiếp nếu không tất cả các url tương đối nên phá vỡ. –

0

Tôi đã gặp sự cố này với EvoPdf. Việc sửa chữa cho tôi là để tham khảo baseURL từ web.config. Tôi đã cố gắng sử dụng HttpContext.Current.Request.Url.AbsoluteUri; mà làm việc trong hai môi trường nhưng không phải khi được thử nghiệm trên một máy chủ khác.

<appSettings> 
    <add key="baseURL" value="http://your-domain.com/" /> 
    </appSettings> 

Vì vậy, bạn đặt cụ thể và CSS hiển thị chính xác sau khi thay đổi. Làm việc với https quá. Bạn có thể mã hóa nó để thử nghiệm và không sử dụng ConfigurationManager.

 TextWriter outTextWriter = new StringWriter(); 

     Server.Execute("Page1.aspx", outTextWriter); 
     Server.Execute("Page2.html", outTextWriter); 

     string htmlStringToConvert = outTextWriter.ToString(); 
     outTextWriter.Close(); 

     // Use the current page URL as base URL 
     string baseUrl = ConfigurationManager.AppSettings["baseURL"].ToString(); //HttpContext.Current.Request.Url.AbsoluteUri; 

     // Convert the page HTML string to a PDF document in a memory buffer 
     byte[] outPdfBuffer = htmlToPdfConverter.ConvertHtml(htmlStringToConvert, baseUrl); 
Các vấn đề liên quan