2008-11-13 22 views
6

Tôi hiện đang sử dụng abcPDF 7 để chuyển đổi HTML sang PDF. Điều này được thực hiện thông qua một trang ASPX, nơi tôi ghi đè lên phương thức Render.abcPDF 7 chuyển đổi HTML sang PDF nhưng chỉ nhận được trang đầu tiên được chuyển đổi

Doc theDoc = new Doc(); 
theDoc.SetInfo(0, "License", m_License); 
theDoc.HtmlOptions.Paged = true; 
theDoc.HtmlOptions.Timeout = 1000000; 

string callUrl = "http:// my app page"; 
theDoc.AddImageUrl(callUrl); 
Response.Clear(); 

Response.Cache.SetCacheability(HttpCacheability.Private); 
Response.AddHeader("Content-Disposition", "attachment; filename=" + sFile + ".pdf"); 
Response.ContentType = "application/octet-stream"; 

theDoc.Save(Response.OutputStream); 

Response.Flush(); 

Điều này hoạt động hoàn hảo cho trang đầu tiên nhưng sau đó cắt bớt trang và không tiếp tục hiển thị các trang còn lại.

Có ai biết tại sao nó dừng sau một trang không?

Trả lời

10

"Chỉ trang đầu tiên của tài liệu được vẽ. Các trang tiếp theo có thể được vẽ bằng phương pháp AddImageToChain."

Từ here

Một ví dụ làm thế nào để sử dụng AddImageToChain thể được tìm thấy here

11

tôi đã cùng một vấn đề chính xác này. Câu trả lời là sử dụng chuỗi, nhưng trang được cung cấp trong câu trả lời trước đó không cho bạn biết cách thực hiện điều này. Dưới đây là một ví dụ từ trang web của tôi: Lưu ý rằng biến htmlOutput là một biến trong đối tượng của tôi có trong htmlOutput tôi muốn kết xuất. Tôi thu thập điều này từ trang hoặc bằng cách chỉ đẩy html trực tiếp vào biến, hoặc nếu nó cho trang hiện tại, tôi chạy void ghi đè được bảo vệ Render (đầu ra HtmlTextWriter) cho Trang, đẩy nội dung của Render vào biến htmlOutput này.

Doc theDoc = new Doc(); 
int theID; 
theDoc.Page = theDoc.AddPage(); 

theID = theDoc.AddImageHtml(htmlOutput); 

while (true) 
{ 
    theDoc.FrameRect(); // add a black border 
    if (!theDoc.Chainable(theID)) 
     break; 
     theDoc.Page = theDoc.AddPage(); 
     theID = theDoc.AddImageToChain(theID); 
} 

for (int i = 1; i <= theDoc.PageCount; i++) 
{ 
    theDoc.PageNumber = i; 
    theDoc.Flatten(); 
    } 
    //reset back to page 1 so the pdf starts displaying there 
    if(theDoc.PageCount > 0) 
     theDoc.PageNumber = 1; 

    //now get your pdf content from the document 
    byte[] theData = theDoc.GetData(); 
+1

Câu trả lời thứ hai được cung cấp bởi schnaader chứa mã theo loại. Cảm ơn bạn đã đăng mã của mình. Tôi, chắc chắn điều này sẽ giúp nhiều người. –

Các vấn đề liên quan