首页 文章

iTextSharp ColumnText.SetSimpleColumn Addtext在Adobe Reader X 10.1.5中导致错误

提问于
浏览
1

下面的代码说明了我对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);
        }
    }

1 回答

  • 1

    删除 cb.BeginText();cb.EndText(); . 将 BT / ET 文本对象嵌套是非法的 . 报告您找到文档的地方,该文档告诉您将 BeginText() / EndTextColumnText 结合使用,以便我们可以要求作者从他或她的文档中更正 .

相关问题