该文件已损坏,无法在Itextsharp pdf创建中打开

时间:2014-06-03 15:48:57

标签: pdf itextsharp

如果这不是一个非常有建设性的问题,我很抱歉,但相信我的问题让我很难受。现在这里是对情况的描述。 我想创建一个pdf页面,将其分成两部分。我用Google搜索并了解ColumnText可以用来对最新的.dll的itexthsarp做同样的事情。

所以我得到了这样的代码..

    public static void paraPDF()
    {
        string imagepath = "D:\\pdf\\Hello.pdf";
        Document doc = new Document();
        try
        {
            string TEXT = "This is some long paragraph that will be added over and over again to prove a point.";
            Rectangle[] COLUMNS = { new Rectangle(36, 36, 290, 806), new Rectangle(305, 36, 559, 806) };
            PdfWriter writer2 = PdfWriter.GetInstance(doc, new FileStream(imagepath, FileMode.Create));
            doc.Open();
            PdfContentByte canvas = writer2.DirectContent;
            ColumnText ct = new ColumnText(canvas);
            int side_of_the_page = 0;
            ct.SetSimpleColumn(COLUMNS[side_of_the_page]);
            int paragraphs = 0;
            while (paragraphs < 30)
            {
                ct.AddElement(new Paragraph(String.Format("Paragraph %s: %s", ++paragraphs, TEXT)));
                while (ColumnText.HasMoreText(ct.Go()))
                {
                    if (side_of_the_page == 0)
                    {
                        side_of_the_page = 1;
                        canvas.MoveTo(297.5f, 36);
                        canvas.LineTo(297.5f, 806);
                        canvas.Stroke();
                    }
                    else
                    {
                        side_of_the_page = 0;
                        doc.NewPage();
                    }
                    ct.SetSimpleColumn(COLUMNS[side_of_the_page]);

                }
            }
            doc.Close();
        }
        catch { 


        }
    }
}

在运行上面的方法时,pdf文件正在创建内部的一些数据,因为大小不是零kb但是我无法打开因为我收到错误... The file is damage and can not be opened in Itextsharp pdf creation

请帮帮我。 提前谢谢。

1 个答案:

答案 0 :(得分:1)

你有两个问题:

  1. 您已将doc.close()置于错误的位置。我已经在你的问题中解决了这个问题。这解决了你的文件损坏的问题&#34;问题,揭示了有关字符串格式的第二个问题。
  2. 您在C#中使用Java语法,因此,String格式化是完全错误的。
  3. 在Java中,你可以这样做:

    String.format("Paragraph %s: %s", ++paragraphs, TEXT)
    

    在C#中,你需要这样做:

    String.Format("Paragraph {0}: {1}", ++paragraphs, TEXT)
    

    免责声明:我不了解C#。我从未写过C#程序。我只是用谷歌搜索答案,这就是我找到的。如果不正确,我还会谷歌。