关于countrychunks的第2章示例

时间:2013-10-09 12:55:54

标签: itextsharp

我正在尝试从第2章运行Countrychunks示例。该示例有效但行:document.Add(Chunk.NEWLINE);不生成新行,循环覆盖第一行。我在这里发布我的代码,以防我做错了什么:

 public void createCountryChunks(String fileName)
        {
            iTextSharp.text.Font font;
            Document document = new iTextSharp.text.Document();

            //PdfWriter.GetInstance(document, new FileStream(fileName)).setInitialLeading(16);
            PdfWriter.GetInstance(document, new FileStream(fileName, FileMode.Create));
            document.Open();

            font = new iTextSharp.text.Font(iTextSharp.text.Font.FontFamily.HELVETICA, 6, iTextSharp.text.Font.BOLD, iTextSharp.text.BaseColor.WHITE);

            foreach (var p in myProducts)
            {
                // add a country to the document as a Chunk
                document.Add(new Chunk(p.pr_name));
                document.Add(new Chunk(" "));
                Chunk id = new Chunk(p.pr_URN.ToString(), font);

                // with a background color
                id.SetBackground(BaseColor.BLACK, 1f, 0.5f, 1f, 1.5f);

                // and a text rise
                id.SetTextRise(6);
                document.Add(id);
                document.Add(Chunk.NEWLINE);
            }

            document.Close();
        }

正如您所看到的,示例因数据而略有不同,但其余部分与原始Java示例几乎相同。

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

你无法带来的setInitialLeading电话并被注释掉其实非常重要。添加它将解决您的问题。我真的不喜欢直接在我构造的对象上添加属性,所以我将分两行:

var w = PdfWriter.GetInstance(document, new FileStream(fileName, FileMode.Create));
w.InitialLeading = 16;