如何在c#中解码扁平解码流
本文关键字:解码 | 更新日期: 2023-09-27 18:04:03
嗨,我正在尝试解码pdf文件的flatedecode流。我如何在c#中做到这一点?谢谢你的回答。
我要做的是解码,例如像这样的流:
<</Filter[/FlateDecode]/Length 18446>>
stream
xœíÜ=K[aÇáã‹/qE8YÐÅ‚]¤‘b'‡
qn]ܺ6ÁFJ÷
u'+ˆ[>@¶Ìš€Ål]„‚C&%ÖóNä¾®éÿóÍï~r×:Lþi”—^ž½H €!×è~y~”×ï?ì Ãnwfz<=
<|œßÈ{ ¹ïëoŠéû¯ŸÇó d®ÔïUÒ[@{Ðœæ½ È'G0 B €X Á F0 b €X –Ò—?§b¡Ñ{5ù®5:—l®ü˜,ußn½®ý®Í$ ðßÜþÚ¾¸YÜûyµzº~pÿw9ïA Õ»j Šš Ä¢& ±”ú½Jzhš³Õ¼× ™ë @(‚ ‹` Ä" Á @,‚ ‹` ÄrÜï5žO•öàzj" Z#ë—µ'ç>Q
endstream
如果您有剪切的流(作为18446二进制字节,而不是上面看到的文本),那么将剪切的文件通过zlib- flatate传递。
qpdf-11.3.0-msvc32'bin'zlib-flate.exe -uncompress <fonts_woff.flate
不同但典型的"结果";在控制台,持续了很长时间:-)
/GSa gs /CSp cs /CSp CS
0.750000000 0 0 -0.750000000 9.75000000 832.250000 cm
q q
Q
Q q
q
Q
q
0.960000000 0 0 0.960000000 0 0 cm
/CSp cs 0 0 0 scn
/GSa gs
0 0 0 SCN
1 w 0 J 2 M 0 j []0 d
Q
Q q
0 0 m
766.080006 0 l
766.080006 1095.71724 l
...
保存为文件
zlib-flate.exe -uncompress <fonts_woff.flate>inflated.txt
要在上下文中看到这样的流,可以使用一个标准的平减/膨胀器
- MuPDF Mutools(非自由/开源软件,用于私人使用或许可)
- PDFtk(特别低成本的服务器商业版本)
- qpdf包含以上zlib-flate(可用于商业项目的自由/开源软件)