2013-02-25 40 views
8

Tôi đã cố gắng làm việc với pdftk để kiểm tra thông tin từ các dòng pdf nén được tạo bởi Nitro Reader, nhưng pdftk sẽ không làm lệch luồng. Nó tạo ra không có lỗi, nhưng nó dường như không làm bất cứ điều gì ngoài việc sắp xếp lại các đối tượng pdf. Here là một ví dụ tối thiểu về một trong các tệp pdf này.pdftk sẽ không giải nén các dòng dữ liệu

pdftk test.pdf output test-d.pdf uncompress 

Khi tôi thử pdftk trên các tệp pdf khác, có vẻ như nó hoạt động tốt. Nếu tôi tự trích xuất các luồng dữ liệu và giải nén chúng bằng cách sử dụng zlib trong Python, chúng giải nén đúng cách. Ngoài ra, nếu tôi mở pdf trong Adobe Reader và lưu lại, pdftk hoạt động tốt trên pdf kết quả.

Tôi đã kiểm tra thủ công bản pdf Nitro theo khả năng tốt nhất của mình và có vẻ như đây là pdf hợp lệ. Tôi rất bối rối về những gì đang xảy ra ở đây.

Là nền tảng cho vấn đề, tôi có hàng trăm tệp pdf này và tôi đang tìm kiếm các từ khóa nhất định mà tôi có thể thực hiện nếu tôi có thể tự động giải nén.

pdftk phiên bản 1,45
Windows 7 Home Premium SP1
Nitro đọc 2 phiên bản 2.5.0.36

Cảm ơn, James

Trả lời

2

Tôi đã nhận được câu trả lời cho câu hỏi này từ nhà phát triển. Hóa ra là một lỗi theo cách pdftk xử lý một đường dây /DecodeParms [null].

Nếu tham số giải mã là null, người viết chỉ có thể bỏ qua dòng /DecodeParms, nhưng trình đọc tuân thủ phải hiểu theo cách này. Tôi đã thử phiên bản mới của pdftk và vấn đề dường như được giải quyết.

6

Nếu bạn không gắn liền với pdftk, bạn có thể sử dụng qpdf. Ví dụ: bạn có thể sử dụng:

$ qpdf --stream-data=uncompress input.pdf output.pdf 

Đối với giá trị, nếu có, chúng vẫn có thể xuất hiện dưới dạng nhị phân. Mặc dù, phần còn lại của luồng sẽ không được nén (hoặc với pdftk hoặc qpdf). qpdf cho phép bạn giải nén tất cả hoặc chỉ các luồng.

Từ qpdf dẫn sử dụng:

Khi --stream-data = giải nén được chỉ định, qpdf sẽ cố gắng loại bỏ bất kỳ bộ lọc không tổn hao mà nó hỗ trợ. Điều này bao gồm /FlateDecode,/LZWDecode,/ASCII85Decode và/ASCIIHexDecode. Điều này có thể rất hữu ích để kiểm tra nội dung của các luồng khác nhau.

Điều tương tự cũng có thể xảy ra với pdftk.

Các vấn đề liên quan