abcPDF 7 конвертирует HTML в PDF, но конвертирует только первую страницу - PullRequest
6 голосов
/ 13 ноября 2008

В настоящее время я использую 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();

Это отлично работает для первой страницы, но затем обрезает страницу и не продолжает отображать оставшиеся страницы.

Кто-нибудь знает, почему он останавливается после страницы?

Ответы [ 2 ]

11 голосов
/ 13 ноября 2009

У меня была точно такая же проблема. В ответе используется цепочка, но страница, представленная в предыдущем ответе, не совсем показывает, как это сделать. Вот пример с моего сайта: Обратите внимание, что переменная htmlOutput - это переменная в моем объекте, которая принимает значение htmlOutput, которое я хочу отобразить. Я собираю это со страницы либо просто вставив html непосредственно в переменную, либо, если это для текущей страницы, я запускаю защищенное переопределение void Render (вывод HtmlTextWriter) для Page, помещая содержимое Render в эту переменную htmlOutput. 1001 *

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();
10 голосов
/ 13 ноября 2008

"Нарисована только первая страница документа. Последующие страницы могут быть нарисованы с использованием метода AddImageToChain."

С здесь

Пример использования AddImageToChain можно найти здесь

...