尝试使用 iText (c#) 将 HTML 转换为 PDF 时,主要内容与右边距重叠
Main content overlaps with right margin while trying to convert HTML to PDF with iText (c#)
我正在尝试使用 iText 库将 html 转换为 pdf,但是虽然 pdf 创建效果很好,但页边距不是。
我尝试手动设置边距,但程序似乎不仅不理我,而且更糟糕的是,主要内容与右侧重叠,如图所示
这里是我的一部分代码(cabecera是html所在的字符串)
主页
string file = string.Format("{0}LEGO_{1}_{2}_{3}_{4}_{5}.pdf",Constants.WebConfig.urlCopiaPdf, fecha.Day, fecha.Month, fecha.Year, fecha.Hour, fecha.Minute);
string fileWeb = string.Format("{0}LEGO_{1}_{2}_{3}_{4}_{5}.pdf", Constants.WebConfig.urlCopiaPdfWeb, fecha.Day, fecha.Month, fecha.Year, fecha.Hour, fecha.Minute);
string fileHTML = string.Format("{0}LEGO_{1}_{2}_{3}_{4}_{5}.html",Constants.WebConfig.urlCopiaPdf, fecha.Day, fecha.Month, fecha.Year, fecha.Hour, fecha.Minute);
//string file = string.Format("c:\docs\LEGO{0}_{1}_{2}_{3}_{4}.pdf", fecha.Day, fecha.Month, fecha.Year, fecha.Hour, fecha.Minute);
StringReader sr = new StringReader(cabecera);
Document pdfDoc = new Document(PageSize.A4, 40f, 40f, 60f, 20f);
pdfDoc.SetMarginMirroring(false);
HeaderAndFooter PageEventHandler = new HeaderAndFooter();
PdfWriter writer = PdfWriter.GetInstance(pdfDoc, new FileStream(file, FileMode.Create));
writer.PageEvent = PageEventHandler;
writer.SetMargins(40f, 40f, 60f, 20f);
writer.SetMarginMirroring(false);
pdfDoc.Open();
iTextSharp.tool.xml.XMLWorkerHelper.GetInstance().ParseXHtml(writer, pdfDoc, sr);
pdfDoc.Close();
是的,我复制了 setmargins 和 setmarginmirroring,我只是在尝试是否有任何效果......我什至尝试创建一个 PdfPageEventHelper 并编写以下代码作为测试
public class HeaderAndFooter : PdfPageEventHelper
{
public HeaderAndFooter()
: base()
{
}
public override void OnEndPage(PdfWriter writer, Document document)
{
PdfContentByte cb = writer.DirectContent;
ColumnText.ShowTextAligned(cb, Element.ALIGN_CENTER, new Phrase(String.Format("dsadsadsadsad", writer.PageNumber)), (document.Right - 40), (document.Bottom - document.Top) / 2, 0);
}
}
但是没有任何效果...有人可以帮助我吗?
谢谢
最后我的问题是我用来创建 PDF 的 html 格式不正确(它没有 html、head 和 body 标签,模板是'我的但是......我应该在问任何事情之前检查它),所以在添加它需要的东西之后效果很好。
我正在尝试使用 iText 库将 html 转换为 pdf,但是虽然 pdf 创建效果很好,但页边距不是。
我尝试手动设置边距,但程序似乎不仅不理我,而且更糟糕的是,主要内容与右侧重叠,如图所示
这里是我的一部分代码(cabecera是html所在的字符串)
主页
string file = string.Format("{0}LEGO_{1}_{2}_{3}_{4}_{5}.pdf",Constants.WebConfig.urlCopiaPdf, fecha.Day, fecha.Month, fecha.Year, fecha.Hour, fecha.Minute);
string fileWeb = string.Format("{0}LEGO_{1}_{2}_{3}_{4}_{5}.pdf", Constants.WebConfig.urlCopiaPdfWeb, fecha.Day, fecha.Month, fecha.Year, fecha.Hour, fecha.Minute);
string fileHTML = string.Format("{0}LEGO_{1}_{2}_{3}_{4}_{5}.html",Constants.WebConfig.urlCopiaPdf, fecha.Day, fecha.Month, fecha.Year, fecha.Hour, fecha.Minute);
//string file = string.Format("c:\docs\LEGO{0}_{1}_{2}_{3}_{4}.pdf", fecha.Day, fecha.Month, fecha.Year, fecha.Hour, fecha.Minute);
StringReader sr = new StringReader(cabecera);
Document pdfDoc = new Document(PageSize.A4, 40f, 40f, 60f, 20f);
pdfDoc.SetMarginMirroring(false);
HeaderAndFooter PageEventHandler = new HeaderAndFooter();
PdfWriter writer = PdfWriter.GetInstance(pdfDoc, new FileStream(file, FileMode.Create));
writer.PageEvent = PageEventHandler;
writer.SetMargins(40f, 40f, 60f, 20f);
writer.SetMarginMirroring(false);
pdfDoc.Open();
iTextSharp.tool.xml.XMLWorkerHelper.GetInstance().ParseXHtml(writer, pdfDoc, sr);
pdfDoc.Close();
是的,我复制了 setmargins 和 setmarginmirroring,我只是在尝试是否有任何效果......我什至尝试创建一个 PdfPageEventHelper 并编写以下代码作为测试
public class HeaderAndFooter : PdfPageEventHelper
{
public HeaderAndFooter()
: base()
{
}
public override void OnEndPage(PdfWriter writer, Document document)
{
PdfContentByte cb = writer.DirectContent;
ColumnText.ShowTextAligned(cb, Element.ALIGN_CENTER, new Phrase(String.Format("dsadsadsadsad", writer.PageNumber)), (document.Right - 40), (document.Bottom - document.Top) / 2, 0);
}
}
但是没有任何效果...有人可以帮助我吗?
谢谢
最后我的问题是我用来创建 PDF 的 html 格式不正确(它没有 html、head 和 body 标签,模板是'我的但是......我应该在问任何事情之前检查它),所以在添加它需要的东西之后效果很好。