Я использую ABCpdf 9.1 x64 .Net с Coldfusion для создания PDF-файлов на основе содержимого HTML. Каждый документ PDF имеет разные верхние и нижние колонтитулы, которые генерируются как HTML с некоторым кодом Coldfusion. Заголовок идентичен для каждой страницы, где нижний колонтитул немного отличается для каждой страницы (поскольку он показывает номер страницы). Вот основная часть моего кода:ABCpdf скопировать заголовок и нижний колонтитул
// add content
theDoc.Get_Rect().Set_String("67 80 573 742");
theContentID = theDoc.AddImageHTML(pdfContent);
while (true) {
if (!theDoc.Chainable(theContentID)) {
break;
}
theDoc.Set_Page(theDoc.AddPage());
theContentID = theDoc.AddImageToChain(theContentID);
}
// add header & footer on each page
for (i=1; i <= theDoc.Get_PageCount(); i++) {
// set page
theDoc.Set_PageNumber(i);
// HEADER
theDoc.Get_Rect().Set_String("67 755 573 809");
theDoc.AddImageHTML(headerContent);
// FOOTER
theDoc.Get_Rect().Set_String("67 0 573 65");
theDoc.AddImageHTML(replace(footerContent, "[page]", i));
}
Как вы можете видеть, метод AddImageHTML()
вызывается 2 раза для каждой страницы и один раз за содержание. Поэтому, если у меня есть контент, который создает 6 страниц, метод получает 13 раз. Это не идеально, потому что метод потребляет много времени.
Есть ли более эффективный способ добавления верхнего и нижнего колонтитула из HTML? Существует метод AddImageCopy()
, но он не работает с объектами, созданными AddImageHtml()
.
Просто для понимания: эти методы получения и сеттера создаются Coldfusion для доступа к свойствам .Net.
Это тоже ответ, который я получил от WebSupergoo. Благодаря! – android