2010-05-24 73 views
1

我有,我想连接成一个文件,
目前在PDF应用程序试图打开该文件是它损坏一个ArrayList的文件的一系列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; 
} 

任何指针?

+2

您是否真的试图通过连接文件将PDF粘合在一起,或者当粘合在一起时是否有几个块组成一个文件? – 2010-05-24 13:55:28

+0

如果是@Samir的评论的后者,那么使用'cat file1 file2 file3> file.pdf' – falstro 2010-05-24 13:57:06

回答

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

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栋两居室的房屋,您会得到什么?不是十间卧室的豪宅...

+0

感谢您的时间,但它没有奏效。 – Andrew 2010-05-24 14:10:47

+1

@Andrew:如果你真的拥有一系列完整的PDF文件,我不会期望它,因为我说的原因。你需要使用诸如iText之类的东西。 – 2010-05-24 14:30:17

1

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

2

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

相关问题