【问题标题】:ByteArray In C# Is Unable To Show All Contents In TextBoxC#中的ByteArray无法在TextBox中显示所有内容
【发布时间】:2009-11-19 08:18:42
【问题描述】:

我正在解析一个 pdf 文件...我将数据转换为字节数组,但它没有显示完整的文件.. 我不想使用任何 lib 或 softy..

        FileStream fs = new FileStream(fname, FileMode.Open);
        BinaryReader br = new BinaryReader(fs);

        int pos = 0;
        int length = (int)br.BaseStream.Length;

        byte [] file = br.ReadBytes(length);

        String text = System.Text.ASCIIEncoding.ASCII.GetString(file);

        displayFile.Text = text;

【问题讨论】:

  • 如果你能显示一些代码sn-p会很有帮助。
  • 你是怎么解析的?也许您没有阅读完整的文件?请提供更多信息...

标签: c# pdf parsing


【解决方案1】:

如果您能提供更多详细信息,这将真的有所帮助 - 包括一些代码,最好是演示问题的简短但完整的程序。

我的猜测是,当您进行转换时,您最终会得到一些包含空字符 ('\0') 的文本 - Windows 窗体控件将其视为字符串终止符。

例如,如果您使用:

label.Text = "hello\0there";

你只会看到“你好”。

现在您可能遇到这个问题,因为使用错误的编码将字节数组转换为文本 - 但您提供的信息很少,我们真的无能为力。 p>

【讨论】:

    【解决方案2】:

    根据您的代码示例,我想说问题在于您假设 PDF 文件包含纯 ascii 文本,但事实并非如此。 PDF 是一种复杂的格式,并且有一些库可以让您解析它们。

    快速谷歌搜索:iTextSharp 可以阅读 pdf 格式。

    【讨论】:

      【解决方案3】:

      您不能仅通过将 PDF 解释为 ASCII 来将其转换为文本。您可能很幸运,其中一些文本实际上是 ASCII,但您也可以期望一些非文本内容与 ASCII 无法区分。

      请改用其中一种解决方案来解析 PDF。这是使用 PDFBox 和 IKVM 的一种方法:Naspinski.net: Parsing/Reading a PDF file with C# and Asp.Net to text

      【讨论】:

        【解决方案4】:

        即使是纯Ascii 集合也包含许多不可打印、不可显示和控制字符。

        正如 Jon 所说,字符串开头的 \0 (NUL) 会终止 .NET 中的所有内容。几年前,我对这种行为有过痛苦的经历。像“bell”和“backspace”等控制字符会给你有趣的输出。但不要指望听到铃声:P。

        【讨论】:

        • \0 不会在 .NET 本身中终止字符串 - 它会在 Windows 窗体控件中终止它。
        • @Jon:你说得对,我有在 WinForm 中使用 log4net 的经验,并且文件的日志输出也被 \0 终止。我一直“指责”.NET,现在我知道了罪魁祸首。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-10-22
        • 1970-01-01
        • 1970-01-01
        • 2014-09-19
        • 2021-06-06
        相关资源
        最近更新 更多