下面的代码说明了我对iTextSharp的一个问题。一切都很完美。 pdf文件已创建并在屏幕上显示正确。当我从Adobe Reader X打印pdf时,它看起来完全正确,但Adobe报告“此页面上存在错误.Acrobat可能无法正确显示页面。请联系创建PDF文档的人员以解决问题。”
不幸的是,该文件必须附加到电子邮件并发送给客户。错误消息不好看,我想解决它。它发生在我尝试过的所有Reader版本中,包括今天安装的10.1.15。
我在Windows 7 Pro SP1下有iTextSharp 5.3.4.0
private void writeTestDoc()
{
string fname = "test.pdf";
float textWidth = 500;
float leftMgn = 60;
float rubricTop = 720;
float leftPad = 5;
float topPad = 12;
float leading = 0;
BaseFont baseCalibri = BaseFont.CreateFont("c:/windows/fonts/calibri.ttf", BaseFont.WINANSI, true);
Font plainFont = new Font(baseCalibri, 11, Font.NORMAL);
Document document = new Document();
try
{
PdfWriter writer = PdfWriter.GetInstance(document, new FileStream(fname, FileMode.Create));
document.Open();
PdfContentByte cb = writer.DirectContent;
cb.BeginText();
ColumnText ct = new ColumnText(cb);
float boxTop = rubricTop;
ct.SetSimpleColumn(leftMgn + leftPad, boxTop - topPad, leftMgn + textWidth, boxTop, leading, Element.ALIGN_CENTER);
ct.AddText(new Phrase("A test message", plainFont));
ct.Go();
cb.EndText();
document.Close();
}
catch (Exception ex)
{
writeFile("ERROR in writeTestDoc " + ex.Message);
}
}
答案 0 :(得分:1)
删除cb.BeginText();
和cb.EndText();
。将BT
/ ET
文本对象嵌套是非法的。报告您找到文档的地方,该文档告诉您将BeginText()
/ EndText
与ColumnText
结合使用,以便我们可以要求作者从他或她的文档中更正