2008-11-13 22 views
6

Şu anda HTML'yi PDF'ye dönüştürmek için abcPDF 7 kullanıyorum. Bu, Render yöntemini geçersiz kıldığım bir ASPX sayfası aracılığıyla yapılır.abcPDF 7 HTML'ye PDF dönüştürme ancak sadece ilk sayfayı dönüştürme

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(); 

Bu, ilk sayfa için mükemmel bir şekilde çalışır, ancak daha sonra sayfayı keser ve kalan sayfaları oluşturmaya devam etmez.

Bir sayfadan sonra neden durduğunu bilen var mı?

cevap

10

"Belgenin yalnızca ilk sayfası çizilir. Sonraki sayfalar AddImageToChain yöntemi kullanılarak çizilebilir." here

AddImageToChain nasıl kullanılacağı bir örnek itibaren

Bu aynı sorunu vardı

11

here bulunabilir. Cevap zincirleme kullanıyor, ancak önceki cevapta sağlanan sayfa bunu nasıl yapacağınızı tam olarak göstermiyor. İşte sitemden bir örnek: Not htmlOutput değişkeni, nesnesimde, oluşturmak istediğim htmlOutput alan bir değişkendir. Bunu, sayfadan ya html'yi doğrudan değişkene basarak ya da geçerli sayfa için Render'in içeriğini, bu htmlOutput değişkenine iterek, Sayfa için korumalı geçersiz kılma void Render (HtmlTextWriter çıktısı) çalıştırıyorum.

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

Schnaader tarafından sağlanan yanıttaki ikinci koddaki kodları içerir. Kodunuzu gönderdiğiniz için teşekkürler. Eminim ki bu pek çok kişiye yardımcı olacaktır. –