gpt4 book ai didi

c# - 使用 itextsharp 将转发器控件转换为 pdf 每个重复的内容都应该出现在新页面中

转载 作者:太空宇宙 更新时间:2023-11-03 13:12:33 24 4
gpt4 key购买 nike

我正在使用 iTextSharp 将转发器控件内的 html 内容转换为 pdf(内容来自数据库)。一切都很好,但每个重复的内容都应该出现在新的 pdf 页面中,而不是同一页面中的两个重复数据。例如,我将学生注册信息从数据库绑定(bind)到转发器控件,我想将内容转换为 pdf,但两个注册数据学生出现在同一个 pdf 页面中,这是不应该发生的。多条记录应该单独出现在新页面中,而不是在同一页面中

将转发器内容转换为pdf的代码

    Response.ContentType = "application/pdf";
Response.AddHeader("content-disposition", "attachment;filename=Registrations.pdf");
Response.Cache.SetCacheability(HttpCacheability.NoCache);
StringWriter sw = new StringWriter();

HtmlTextWriter hw = new HtmlTextWriter(sw);
this.Repeater1.RenderControl(hw);

StringWriter sw2 = new StringWriter();
HtmlTextWriter hw1 = new HtmlTextWriter(sw2);

StringReader sr = new StringReader(sw.ToString().Replace("\r", "").Replace("\n\n", "").Replace(" ", ""));

Document pdfDoc = new Document(iTextSharp.text.PageSize.A4, 40f, 40f, 100f, 95f);

HTMLWorker htmlparser = new HTMLWorker(pdfDoc);
PdfWriter.GetInstance(pdfDoc, Response.OutputStream);
pdfDoc.NewPage();
pdfDoc.Open();
htmlparser.Parse(sr);
pdfDoc.Close();
Response.Write(pdfDoc);
Response.End();

最佳答案

如果你想在你的 HTML 中引入分页符,你就使用了错误的类。 HTMLWorker一直不适合将 HTML+CSS 转换为 PDF。此外,该类已被放弃以支持 XML Worker。

请看HtmlPageBreaks示例:

public void createPdf(String file) throws IOException, DocumentException {
// step 1
Document document = new Document();
// step 2
PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(file));
// step 3
document.open();
// step 4
XMLWorkerHelper.getInstance().parseXHtml(writer, document,
new FileInputStream(HTML));
// step 5
document.close();
}

在此示例中,我们解析以下 HTML 文件:page_breaks.html

仔细看看第一个 <table> 的开始标签:

<table style="border: solid 1pt; page-break-after: always" cellspacing="0">

有一个 page-break-after值为“always”的属性(当前支持的唯一值)。

现在仔细看看最后一个 <h1> 的开始标签:

<h1 style="page-break-before: always">

有一个 page-break-before值为“始终”的属性。

我制作这个示例是为了演示这些 CSS 属性的使用:它们会导致 iText 触发一个新页面,如生成的 PDF 所示:page_breaks.pdf

请注意,这仅在较新的 iText 版本中受支持。如果您在 AGPL 范围之外使用 iText 和 XML Worker,您可能需要购买商业许可证。

关于c# - 使用 itextsharp 将转发器控件转换为 pdf 每个重复的内容都应该出现在新页面中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27843338/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com