-1
iText를 사용하여 HTML 템플릿에서 PDF 파일을 생성합니다. 가능하다면 분할되지 않고 표시되기를 원하는 div
목록이 있습니다. 그러나 XMLWorker
을 사용할 때이 동작을 제어 할 수있는 방법을 찾지 못했습니다. 뭐라구?XMLWorker에서 iText를 사용할 때 div가 다음 페이지로 깨지는 것을 방지하려면 어떻게합니까?
iText를 사용하여 HTML 템플릿에서 PDF 파일을 생성합니다. 가능하다면 분할되지 않고 표시되기를 원하는 div
목록이 있습니다. 그러나 XMLWorker
을 사용할 때이 동작을 제어 할 수있는 방법을 찾지 못했습니다. 뭐라구?XMLWorker에서 iText를 사용할 때 div가 다음 페이지로 깨지는 것을 방지하려면 어떻게합니까?
당신은 운이 좋았습니다 - <div>
은 page-break-inside: avoid
CSS 스타일을 적용 할 수있는 두 개의 HTML 태그 중 하나입니다.
public string GetHtml()
{
var html = new StringBuilder();
var repeatCount = 15;
for (int i = 0; i < repeatCount; ++i) { html.Append("<h1>h1</h1>"); }
var text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer vestibulum sollicitudin luctus. Curabitur at eros bibendum, porta risus a, luctus justo. Phasellus in libero vulputate, fermentum ante nec, mattis magna. Nunc viverra viverra sem, et pulvinar urna accumsan in. Quisque ultrices commodo mauris, et convallis magna. Duis consectetur nisi non ultrices dignissim. Aenean imperdiet consequat magna, ac ornare magna suscipit ac. Integer fermentum velit vitae porttitor vestibulum. Morbi iaculis sed massa nec ultricies. Aliquam efficitur finibus dolor, et vulputate turpis pretium vitae. In lobortis lacus diam, ut varius tellus varius sed. Integer pulvinar, massa quis feugiat pulvinar, tortor nisi bibendum libero, eu molestie est sapien quis odio. Lorem ipsum dolor sit amet, consectetur adipiscing elit.";
html.Append(text);
for (int i = 0; i < repeatCount; ++i)
{
html.AppendFormat(
"<div style='page-break-inside:avoid;>{0}</div>",
text
);
}
return html.ToString();
}
둘째, 간단한 구문 분석 구현 :
using (var html = new StringReader(GetHtml()))
{
using (FileStream stream = new FileStream(
OUTPUT_FILE,
FileMode.Create,
FileAccess.Write))
{
using (var document = new Document())
{
PdfWriter writer = PdfWriter.GetInstance(
document, stream
);
document.Open();
XMLWorkerHelper.GetInstance().ParseXHtml(
writer, document, html
);
}
}
}
다음 작업 테스트 케이스의 우선 몇 가지 테스트 HTML을 생성