.NET deflateStream似乎不适用于pdf

.NET deflateStream似乎不适用于pdf,pdf,stream,pdf-generation,dotnetzip,Pdf,Stream,Pdf Generation,Dotnetzip,我正在尝试用c#编写PDF文件,我还想压缩PDF流。不要使用任何第三方库(DotNetZip等),这一点很重要。 压缩pdf流的唯一方法是System.IO.DeflateStream,但它似乎不起作用:当我压缩一个简单的流时 BT /F9 30 Tf 10 730 Td (Hello World!) Tj ET PDF无法解压缩它,并且不显示任何文本。 我读过类似的话题 但答案包含MS bug报告上的断开链接,我无法在我的项目中使用任何第三方库 是否有可能强制DeflateStream在pd

我正在尝试用c#编写PDF文件,我还想压缩PDF流。不要使用任何第三方库(DotNetZip等),这一点很重要。 压缩pdf流的唯一方法是System.IO.DeflateStream,但它似乎不起作用:当我压缩一个简单的流时

BT
/F9 30 Tf
10 730 Td
(Hello World!) Tj
ET
PDF无法解压缩它,并且不显示任何文本。 我读过类似的话题 但答案包含MS bug报告上的断开链接,我无法在我的项目中使用任何第三方库

是否有可能强制DeflateStream在pdf中正常工作

编辑:源代码

以下是我如何编写PDF对象:

  var resultLine = new StringBuilder();
  resultLine.AppendFormatLine("{0} 0 obj", objectId);
  resultLine.AppendFormatLine("<< /Length {0} /Filter /FlateDecode >>");
  resultLine.AppendLine("stream");
  WriteRaw(resultLine.ToString());

  WriteRaw(DeflateCompress(content));

  var footer = new StringBuilder();
  footer.AppendLine();
  footer.AppendLine("endstream");
  footer.AppendLine("endobj");
输入源变量为

"q\r\nBT\r\n/F9 30 Tf\r\n0 0 0 rg\r\n10 730 Td\r\n(Hello World!) Tj\r\nET\r\nQ\r\n"
输出字节数组为

{byte[61]}
    [0]: 43
    [1]: 228
    [2]: 229
    [3]: 114
    [4]: 10
    [5]: 225
    [6]: 229
    [7]: 210
    [8]: 119
    [9]: 179
    [10]: 84
    [11]: 48
    [12]: 54
    [13]: 80
    [14]: 8
    [15]: 73
    [16]: 227
    [17]: 229
    [18]: 50
    [19]: 80
    [20]: 0
    [21]: 193
    [22]: 162
    [23]: 116
    [24]: 94
    [25]: 46
    [26]: 67
    [27]: 3
    [28]: 5
    [29]: 115
    [30]: 144
    [31]: 96
    [32]: 10
    [33]: 47
    [34]: 151
    [35]: 134
    [36]: 71
    [37]: 106
    [38]: 78
    [39]: 78
    [40]: 190
    [41]: 66
    [42]: 120
    [43]: 126
    [44]: 81
    [45]: 78
    [46]: 138
    [47]: 162
    [48]: 166
    [49]: 66
    [50]: 72
    [51]: 22
    [52]: 47
    [53]: 151
    [54]: 43
    [55]: 80
    [56]: 91
    [57]: 32
    [58]: 47
    [59]: 23
    [60]: 0
编辑2:未正确压缩的PDF

%PDF-1.6
1 0 obj
<<
/Type /Catalog
/Version /1.6
/Pages 5 0 R
/Outlines 3 0 R
>>
endobj
2 0 obj
<<
/Title (my( title..)
/Subject ()
/Keywords ()
/Author (me..\)
/CreationDate (D:20150724042147)
/ModDate (D:20150724042147)
/Creator ()
/Producer ()
>>
endobj
3 0 obj
<<
/Type /Outlines
/Count 0
>>
endobj
4 0 obj
<<
/Type /Font
/Subtype /Type1
/Name /F6
/BaseFont /Courier-Bold
>>
endobj
5 0 obj
<<
/Type /Pages
/Count 1
/Kids [6 0 R ]
>>
endobj
6 0 obj
<<
/Type /Page
/UserUnit 1
/Parent 5 0 R
/Resources <</Font <</F6 4 0 R >>
>>
/MediaBox [0 0 612 792]
/CropBox [0 0 612 792]
/Rotate 0
/ProcSet [/PDF /Text /ImageC]
/Contents [7 0 R ]
>>
endobj
7 0 obj
<< /Length 61 /Filter /FlateDecode >>
stream
+деr
беТwіT06PIге2P Бўt^.Csђ`
/—†GjNNѕBx~QNЉў¦BH/—+P[ / 
endstream
endobj
xref
0 8
0000000000 65535 f
0000000010 00000 n
0000000097 00000 n
0000000278 00000 n
0000000330 00000 n
0000000421 00000 n
0000000486 00000 n
0000000702 00000 n
trailer
<<
/Size 8
/Root 1 0 R
/Info 2 0 R
>>
startxref
840
%%EOF
%PDF-1.6
10 obj
>
endobj
20 obj
>
endobj
30 obj
>
endobj
40 obj
>
endobj
50 obj
>
endobj
60 obj
>
endobj
70 obj
>
流动
+ааr
ббіT06PIб2PБўt^.Csђ`
/-†GjNNѕBx~QNЉўBH/-+P[/
尾流
endobj
外部参照
0 8
0000000000 65535 f
00000000 100万n
00000000 9700000N
000000027800000N
0000000 33000000N
0000000 421 00000n
000000048600000 n
0000000 702 00000n
拖车
>
起始外部参照
840
%%EOF

您应该在问题中包含一些如何生成PDF文件的示例代码,以及一个示例输出PDF,这样我们就可以看到它有什么问题。从bouncycastle获取zlib文件,它们就可以工作了。该许可证非常自由,您可以将它们包含在您的项目商业版中,也可以不包含,它本质上是同一个zlib许可证。我是dded源代码。生成PDF对象块的方法在没有压缩的情况下可以完美地工作。但当我使用DeflateCompress时,它失败了。我还尝试从结果字节数组中删除前两个字节,但没有成功。resultLine.AppendFormatLine(“>”);其中没有长度…如何写入外部参照表?同样,您需要包含一个示例输出PDF。
%PDF-1.6
1 0 obj
<<
/Type /Catalog
/Version /1.6
/Pages 5 0 R
/Outlines 3 0 R
>>
endobj
2 0 obj
<<
/Title (my( title..)
/Subject ()
/Keywords ()
/Author (me..\)
/CreationDate (D:20150724042147)
/ModDate (D:20150724042147)
/Creator ()
/Producer ()
>>
endobj
3 0 obj
<<
/Type /Outlines
/Count 0
>>
endobj
4 0 obj
<<
/Type /Font
/Subtype /Type1
/Name /F6
/BaseFont /Courier-Bold
>>
endobj
5 0 obj
<<
/Type /Pages
/Count 1
/Kids [6 0 R ]
>>
endobj
6 0 obj
<<
/Type /Page
/UserUnit 1
/Parent 5 0 R
/Resources <</Font <</F6 4 0 R >>
>>
/MediaBox [0 0 612 792]
/CropBox [0 0 612 792]
/Rotate 0
/ProcSet [/PDF /Text /ImageC]
/Contents [7 0 R ]
>>
endobj
7 0 obj
<< /Length 61 /Filter /FlateDecode >>
stream
+деr
беТwіT06PIге2P Бўt^.Csђ`
/—†GjNNѕBx~QNЉў¦BH/—+P[ / 
endstream
endobj
xref
0 8
0000000000 65535 f
0000000010 00000 n
0000000097 00000 n
0000000278 00000 n
0000000330 00000 n
0000000421 00000 n
0000000486 00000 n
0000000702 00000 n
trailer
<<
/Size 8
/Root 1 0 R
/Info 2 0 R
>>
startxref
840
%%EOF