나는 C# 코드를 통해 pdf 파일을 만들 수있는 능력을 가지고 놀고있다. 필자는 PDF 사양을 조사해 왔으며 데이터 문자열을 가져 와서 UTF8 인코딩을 사용하여 바이트 배열로 인코딩하여 작업 PDF 파일을 만들 수있었습니다. 나는 PDF 스트림 개체에 DeflateStream
를 사용하려고하면.NET DeflateStream을 사용하여 PDF를 만들 수 있습니까?
내가으로 실행하는 문제입니다. 그냥 작동하지 않는 것 :
: 여기 질문에있는 PDF 객체 ( \ 연구 \ n 여기에, 각 행의 끝에서 바로 볼 수 없습니다)의 텍스트 버전입니다5 0 obj
<</Length 45>>
stream
BT 70 50 TD /F1 12 Tf (Hello, world!) Tj ET
endstream
endobj
DeflateStream
클래스를 사용하여 BT 70 50 TD /F1 12 Tf (Hello, world!) Tj ET
줄을 압축하려고하면 PDF가 작동하지 않는 것 같습니다. 나는 iTextSharp와 같은 많은 다른 라이브러리가 Deflate 압축의 자체 구현을 사용한다는 것을 알아 챘다.
DeflateStream 클래스의 마이크로 소프트의 구현이 작동하지 않는 이유는 어떤 이유가 있나요? 내가 잘못 사용하고 있거나 잘못 구현 되었습니까?
는 그 PDF 파일 (텍스트가 아닌) 바이너리 알아,하지만 난 아무것도 암호화 아니에요 경우 다음 텍스트로 모든 것을 볼 수 있습니다. 여기에 참조 할 수 있도록 전체 PDF 파일입니다 (일반 텍스트로도 \ 연구 \ n 여기에, 각 행의 끝에서 바로 볼 수 없습니다) :
%PDF-1.7
1 0 obj
<</Type /Catalog /Pages 2 0 R>>
endobj
2 0 obj
<</Type /Pages /MediaBox [ 0 0 200 200 ] /Count 1 /Kids [ 3 0 R ]>>
endobj
3 0 obj
<</Type /Page /Parent 2 0 R /Resources <</Font <</F1 4 0 R>>>> /Contents 5 0 R>>
endobj
4 0 obj
<</Type /Font /Subtype /Type1 /BaseFont /Times-Roman>>
endobj
5 0 obj
<</Length 45>>
stream
BT 70 50 TD /F1 12 Tf (Hello, world!) Tj ET
endstream
endobj
xref
0 6
0000000000 65535 f
0000000017 00000 n
0000000067 00000 n
0000000153 00000 n
0000000252 00000 n
0000000325 00000 n
trailer
<</Size 6/Root 1 0 R>>
startxref
422
%%EOF
흠, 연결 기사가 재미 있습니다. 또한 ** 압축 해제 ** 프로세스 (** 압축 ** 프로세스가 아님)에 대해 이야기하고 있지만 압축에 부정적인 영향을 미친다고 생각합니다. 압축을 위해 DotNetZip을 사용해보고 도움이되는지 확인하겠습니다. –
@ m-y 예 - 동일한 문제가 양쪽에서 발생합니다. 일반적으로 DotNetZip은 압축 라이브러리에 내장 된 것보다 훨씬 낫습니다. –
DotNetZip ZlibStream은 제대로 작동합니다. DeflateStream (.NET-4.5)을 여전히 사용하고 압축 해제시 두 바이트가 건너 뛸 때 시작 부분에 누락 된 두 바이트를 앞에 붙일 수 있을지 궁금합니다. –