-1
iTextを使用してHTMLテンプレートからPDFファイルを生成しています。可能であれば分割しないで表示させたいのですが、div
のリストがあります。しかし、XMLWorker
を使用しているときにこの動作を制御する方法を見つけることができませんでした。何か私は行方不明?XMLWorkerでiTextを使用すると、divが次のページに分割されないようにするにはどうすればよいですか?
iTextを使用してHTMLテンプレートからPDFファイルを生成しています。可能であれば分割しないで表示させたいのですが、div
のリストがあります。しかし、XMLWorker
を使用しているときにこの動作を制御する方法を見つけることができませんでした。何か私は行方不明?XMLWorkerでiTextを使用すると、divが次のページに分割されないようにするにはどうすればよいですか?
あなたは運が良かった - <div>
は、page-break-inside: avoid
CSSスタイルを適用できる2つのHTMLタグの1つです。
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を生成します