将一系列二进制文件连接到一个文件的最佳方法是什么?

时间:2010-05-24 13:53:40

标签: c#

我在arraylist文件中有一系列PDF字节数组,我希望将它们连接成一个文件,
目前,当PDF应用程序尝试打开文件时,它已损坏:

foreach (byte[] array in files)
{
    using (Stream s = new MemoryStream(downloadbytes))
    {
        s.Write(array, 0, array.Length);
    }
}

downloadbytes是下面产生的连接字节数组是另一个也失败的实现

foreach (byte[] array in files)
{
    System.Buffer.BlockCopy(array, 0, downloadbytes, offset, array.Length);
    offset += array.Length;
}

任何指针?

5 个答案:

答案 0 :(得分:2)

如果你有字节数组,你可以直接写它们:

using (Stream output = File.OpenWrite("output.pdf"))
{
    foreach (byte[] array in files)
    {
        output.Write(array, 0, array.Length);
    }
}

这将有效地连接字节数组...但是如果每个字节数组代表一个完整的PDF文件,则不应期望连接的结果是单个有效的PDF文件。组合PDF不仅仅是一个接一个地写入的情况。你需要使用PDF库(例如iText)来做到这一点。

换句话说:如果你建造5栋彼此相邻的两居室房屋,你会得到什么?不是十间卧室的豪宅......

答案 1 :(得分:2)

您可能需要使用PDF库来连接文件。看看iTextSharp

答案 2 :(得分:1)

using (var result = File.OpenWrite("result.bin"))
{
    foreach (byte[] array in files)
    {
        result.Write(array, 0, array.Length);
    }
}

你也谈论PDF。不要指望如果您有一系列PDF文件并连接二进制文件,您只需添加字节即可收到有效的PDF文件。如果这是你想要的,你可以看看iTextSharp,它允许你concatenate PDFs

答案 3 :(得分:1)

您需要使用PDF处理工具来完成这项工作,因为PDF文件不能简单地连接成一个PDF。 PDF文件遵循规范,您不能只是将它们连接在一起。想想XML,你不能只将XML文件连接在一起形成一个XML文件。

答案 4 :(得分:1)

您不能只将字节合并在一起 - 您需要第三方库,例如PDFSharp。 PDFSharp有一个关于合并文档的教程:

http://www.pdfsharp.net/wiki/CombineDocuments-sample.ashx