gpt4 book ai didi

C#解码(解压缩)PDF文件的压缩数据

转载 作者:行者123 更新时间:2023-12-01 17:28:48 25 4
gpt4 key购买 nike

我想在 C# 中解压缩一些 DeflateCoded 数据(提取的 PDF)。不幸的是,我每次都遇到异常“解码时发现无效数据”。但数据是有效的。

private void Decompress()
{
FileStream fs = new FileStream(@"S:\Temp\myFile.bin", FileMode.Open);

//First two bytes are irrelevant
fs.ReadByte();
fs.ReadByte();

DeflateStream d_Stream = new DeflateStream(fs, CompressionMode.Decompress);

StreamToFile(d_Stream, @"S:\Temp\myFile1.txt", FileMode.OpenOrCreate);

d_Stream.Close();
fs.Close();
}

private static void StreamToFile(Stream inputStream, string outputFile, FileMode fileMode)
{
if (inputStream == null)
throw new ArgumentNullException("inputStream");

if (String.IsNullOrEmpty(outputFile))
throw new ArgumentException("Argument null or empty.", "outputFile");

using (FileStream outputStream = new FileStream(outputFile, fileMode, FileAccess.Write))
{
int cnt = 0;
const int LEN = 4096;
byte[] buffer = new byte[LEN];

while ((cnt = inputStream.Read(buffer, 0, LEN)) != 0)
outputStream.Write(buffer, 0, cnt);
}
}

有人有什么想法吗?谢谢。

最佳答案

我为测试数据添加了这个:-

private static void Compress()
{
FileStream fs = new FileStream(@"C:\Temp\myFile.bin", FileMode.Create);

DeflateStream d_Stream = new DeflateStream(fs, CompressionMode.Compress);
for (byte n = 0; n < 255; n++)
d_Stream.WriteByte(n);
d_Stream.Close();
fs.Close();
}

像这样修改解压:-

private static void Decompress()
{
FileStream fs = new FileStream(@"C:\Temp\myFile.bin", FileMode.Open);

//First two bytes are irrelevant
// fs.ReadByte();
// fs.ReadByte();

DeflateStream d_Stream = new DeflateStream(fs, CompressionMode.Decompress);

StreamToFile(d_Stream, @"C:\Temp\myFile1.txt", FileMode.OpenOrCreate);

d_Stream.Close();
fs.Close();
}

像这样运行它:-

static void Main(string[] args)
{
Compress();
Decompress();
}

没有错误。

我的结论是前两个字节是相关的(显然它们与我的特定测试数据有关。)或您的数据有问题。

我们可以使用您的一些测试数据吗?

(如果它很敏感,显然不要这样做)

关于C#解码(解压缩)PDF文件的压缩数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9197678/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com