首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >有没有一种简单的方法可以手动解码FlateDecode过滤器来提取文本?C#

有没有一种简单的方法可以手动解码FlateDecode过滤器来提取文本?C#
EN

Stack Overflow用户
提问于 2014-09-12 07:34:36
回答 2查看 14.8K关注 0票数 6

我发布了一个与此a while back相关的问题,但没有得到任何回应。从那时起,我发现PDF是用FlateDecode编码的,我想知道有没有办法在C# (Windows Phone8)中手动解码PDF?我得到的输出如下:

代码语言:javascript
运行
复制
%PDF-1.5
%????
1 0 obj
<<
/Type /Catalog
/Pages 2 0 R
>>
endobj
5 0 obj
<<
/Filter /FlateDecode
/Length 9
>>
stream x^+

不幸的是,这些控件目前还没有文本提取功能,我在其他的WP控件中也找不到该功能。

基本上,所有我想要的是从OneDrive下载和阅读PDF的内容。好奇这是不是很容易做到?

EN

回答 2

Stack Overflow用户

发布于 2018-03-29 19:54:27

代码语言:javascript
运行
复制
private static string decompress(byte[] input)
{
    byte[] cutinput = new byte[input.Length - 2];
    Array.Copy(input, 2, cutinput, 0, cutinput.Length);

    var stream = new MemoryStream();

    using (var compressStream = new MemoryStream(cutinput))
    using (var decompressor = new DeflateStream(compressStream, CompressionMode.Decompress))
        decompressor.CopyTo(stream);

    return Encoding.Default.GetString(stream.ToArray());
}

根据下面类似的问题,必须从流中剪切流的前2个字节。这是在上述函数中完成的。只需将流的所有字节传递给输入即可。确保bytecount与指定的长度相同。

C# decode (decompress) Deflate data of PDF File

票数 5
EN

Stack Overflow用户

发布于 2014-09-12 22:02:32

最简单的解决方案是使用.NET框架提供的DeflateStream。示例可以在类似的thread中找到。这种方法可能有一些pitfalls

如果这不起作用,还有一些库(如DotNetZip),能够进行放气流解压缩。请查看this link进行性能比较。

我看到的最后一个可能的选择是使用其他PDF解析库,并使用它们进行流解压缩,甚至整个PDF处理。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25798538

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档