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