2008-11-13 11 views
6

परिवर्तित कर रहा है। मैं वर्तमान में HTML को पीडीएफ में परिवर्तित करने के लिए एबीसीपीडीएफ 7 का उपयोग कर रहा हूं। यह एक एएसपीएक्स पेज के माध्यम से किया जाता है जहां मैं रेंडर विधि को ओवरराइड करता हूं।एबीसीपीडीएफ 7 एचटीएमएल को पीडीएफ में परिवर्तित कर रहा है, लेकिन केवल पहले पृष्ठ को

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

यह पहले पृष्ठ के लिए पूरी तरह से काम करता है लेकिन फिर पृष्ठ को छोटा करता है और शेष पृष्ठों को प्रतिपादित करना जारी नहीं रखता है।

क्या किसी को पता है कि यह पृष्ठ के बाद क्यों बंद हो जाता है?

उत्तर

10

"दस्तावेज़ का केवल पहला पृष्ठ खींचा गया है। बाद के पृष्ठों को AddImageToChain विधि का उपयोग करके खींचा जा सकता है।"

here

एक उदाहरण AddImageToChain उपयोग करने के लिए कैसे से here

11

पाया जा सकता है मैं इस एक ही मुद्दा था। जवाब चेनिंग का उपयोग कर रहा है, लेकिन पिछले उत्तर में प्रदान किया गया पृष्ठ बिल्कुल आपको यह नहीं दिखाता है कि यह कैसे करें। यहां मेरी साइट से एक उदाहरण दिया गया है: ध्यान दें कि परिवर्तनीय htmlOutput मेरी ऑब्जेक्ट में एक चर है जो HTMLOutput में प्रस्तुत करना चाहता है जिसे मैं प्रस्तुत करना चाहता हूं। मैं इसे सीधे एचटीएमएल को सीधे चर में धक्का देकर पेज से इकट्ठा करता हूं, या यदि वर्तमान पृष्ठ के लिए, तो मैं पृष्ठ के लिए संरक्षित ओवरराइड शून्य रेंडर (एचटीएमएलटेक्स्टवाइटर आउटपुट) चलाता हूं, इस HTMLOutput चर में रेंडर की सामग्री को दबाता हूं।

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 द्वारा प्रदान किए गए उत्तर में दूसरा पेइस में कोड शामिल है। अपना कोड पोस्ट करने के लिए धन्यवाद। मुझे यकीन है कि यह कई लोगों की मदद करेगा। –

संबंधित मुद्दे