混合文本和图像会导致垂直定位不正确

时间:2015-12-14 20:25:05

标签: itextsharp itext

使用iTextSharp版本5.5.8(5.5.7中存在相同的错误),当您向章节和章节添加图像时会出现令人不快的错误 - 图像和章节标题开始正常但很快就会变得偏移相对彼此。

从以下代码生成的PDF开始正确,它表示"第1节"以下是图像。下一部分("第2部分和第34部分;)有一些图像与部分文本重叠,下一部分甚至更糟,等等。我认为这是一个错误的文本。定位,而不是图像。

这是一个已知的iTextSharp错误吗?

    static Document m_doc = null;
    static BaseFont m_helvetica = null;
    static Font m_font = null;
    static PdfWriter m_writer = null;

    static Image m_image = null;

    static void Main(string[] args)
    {
        m_doc = new Document(PageSize.LETTER);

        m_helvetica = BaseFont.CreateFont(BaseFont.HELVETICA, BaseFont.CP1252, BaseFont.NOT_EMBEDDED);
        m_font = new Font(m_helvetica, 10.0f);

        m_writer = PdfWriter.GetInstance(m_doc, new FileStream("Output.pdf", FileMode.Create));

        m_writer.StrictImageSequence = true;

        m_doc.Open();

        m_doc.Add(new Chunk("Created by iTextSharp version " + new iTextSharp.text.Version().GetVersion, m_font));

        Chapter chapter = new Chapter("Chapter 1", 1);
        chapter.TriggerNewPage = false;

        if (m_image == null)
        {
            m_image = Image.GetInstance(new Uri("https://pbs.twimg.com/profile_images/2002307628/Captura_de_pantalla_2012-03-17_a_la_s__22.14.48.png"));
            m_image.ScaleAbsolute(100, 100);
        }

        for (int i = 0; i < 5; i++)
        {
            Section section = chapter.AddSection(18, "Section " + (i + 1));
            section.Add(new Chunk("   ", m_font));
            section.Add(m_image);
        }

        m_doc.Add(chapter);

        m_doc.Close();
    }

1 个答案:

答案 0 :(得分:2)

来自the documentation for the Java version

  

Section是包含其他DocumentSectionParagraph和/或List的{​​{1}}的一部分。

进一步查看C#源代码中的Add()方法,我们看到:

  

添加段落,列表,表格或其他部分

基本上,代替Table使用Chunk。所以不是这个

Paragraph

使用此:

section.Add(new Chunk("   ", m_font));

或者就是这样:

section.Add(new Paragraph(new Chunk("   ", m_font)));