#asp.net #abcpdf
#asp.net #abcpdf
Вопрос:
Я пытаюсь использовать ABCpdf (версия 11) для создания PDF-файла из страницы .aspx, которую я создаю. Я следую их образцу кода из https://www.websupergoo.com/helppdfnet/default.htm?page=source/5-abcpdf/doc/1-methods/chainable.htm и это работает идеально.
Страница .aspx, которую я генерирую, содержит таблицу с переменным количеством строк с другими элементами. Это отлично работает, когда в таблице всего несколько строк и в результате страница получается короткой, а в PDF-файле всего одна страница, но когда страница длинная с большим количеством строк в таблице, она просто сохраняет первую страницу как pdf. Я попытался отладить код и увидел, что строка, в которую он должен добавить страницу, никогда не выполняется, потому что doc.Chainable(theID) всегда возвращается как false.
Dim theID As Integer
theID = theDoc.AddImageUrl(HttpContext.Current.Request.Url.AbsoluteUri)
'Chain
While True
theDoc.FrameRect() ' add a black border
If Not theDoc.Chainable(theID) Then
Exit While
End If
theDoc.Page = theDoc.AddPage()
theID = theDoc.AddImageToChain(theID)
End While
Почему .Цепочка всегда имеет значение false? Что устанавливает для него значение true или false? Если я принудительно сделаю это true, то в качестве второй страницы я получу пустую страницу, поэтому мне нужно знать, почему это свойство возвращается как false .
Кто-нибудь из вас сталкивался с этой проблемой? Любая помощь приветствуется.
Ответ №1:
Я нашел проблему. И способ его устранения!
Проблема не имела ничего общего с ABCpdf, это способ печати страницы (.aspx). Я нажал Ctrl P, чтобы запустить предварительный просмотр, чтобы посмотреть, отображаются ли все страницы, и увидел, что страница была обрезана после первой страницы. Это также может быть причиной, почему .Chainable всегда было false. Итак, я добавил следующий css и вуаля! Он работает так, как ожидалось.
@media print {
#form1 { overflow:visible !important;}
}
где form1 — идентификатор основной формы.