В настоящее время я использую abcPDF 7 для преобразования HTML в PDF. Это делается через страницу ASPX, где я переопределяю метод Render.
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();
Это отлично работает для первой страницы, но затем обрезает страницу и не продолжает рендеринг остальных страниц.
Кто-нибудь знает, почему он останавливается после страницы?





У меня была такая же проблема. Ответ заключается в использовании цепочки, но страница, представленная в предыдущем ответе, не совсем показывает, как это сделать. Вот пример с моего сайта: Обратите внимание, что переменная htmlOutput - это переменная в моем объекте, которая принимает htmlOutput, который я хочу отобразить. Я собираю это со страницы, просто вставив html непосредственно в переменную, или, если это для текущей страницы, я запускаю защищенный переопределенный void Render (вывод HtmlTextWriter) для Page, помещая содержимое Render в эту переменную 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();
Второй в ответе, предоставленном schnaader, содержит код в фрагментах. Спасибо, что разместили свой код. Я уверен, что это поможет многим.