Tôi lấy ví dụ PDF tối thiểu trong thông số PDF từ PDF Specification, sao chép nó vào NotePad, đổi tên tệp thành phần mở rộng .pdf.Ví dụ PDF tối thiểu trong đặc tả PDF
Tôi có thể mở bằng trình xem PDF khác (PDF-XChange, SumatraPDF, MuPDF). Nhưng khi tôi mở nó với Adobe Reader, nó nói rằng tập tin bị hỏng.
Tôi không chắc liệu người xem khác xem tệp "bị hỏng" này có phải là tệp trống hay không.
Tệp được cho là hiển thị một trang trống, vì đây là một ví dụ tối thiểu.
Thực tế, tôi sửa đổi ví dụ tối thiểu. Vì khi tôi sao chép từ thông số PDF sang notepad và mở tệp .txt bằng Trình chỉnh sửa Hex, tôi thấy một dòng mới trong .txt tệp cung cấp cho tôi 2 không gian. Ví dụ,
1 0 obj
<< /Type /Catalog
mang lại cho tôi (trong Hex Editor)
1 0 obj << /Type /Catalog
đó là (trong các giá trị hex)
31 20 30 20 6F 62 6A 0D 0A 3C 3C 20 2F 54 79 70
65 20 2F 43 61 74 61 6C 6F 67
2 khoảng trống giữa j
và <
là 0D 0A
.
Do đó, tôi không tạo dòng mới trong NotePad và sửa đổi các giá trị trong phần xref
.
Dưới đây là mã đầy đủ.
Bạn có biết điều gì sai với ví dụ này không? Tại sao Adobe Reader lại nói nó bị hỏng? Đây có phải là vì tôi đã đưa ra các giá trị sai trong xref
không?
%PDF-1.4 1 0 obj << /Type /Catalog /Outlines 2 0 R /Pages 3 0 R >> endobj 2 0 obj << /Type Outlines /Count 0 >> endobj 3 0 obj << /Type /Pages /Kids [4 0 R] /Count 1 >> endobj 4 0 obj << /Type /Page /Parent 3 0 R /MediaBox [0 0 612 792] /Contents 5 0 R /Resources << /ProcSet 6 0 R >> >> endobj 5 0 obj << /Length 35 >> stream … Page-marking operators … endstream endobj 6 0 obj [/PDF] endobj xref 0 7 0000000000 65535 f 0000000009 00000 n 0000000074 00000 n 0000000119 00000 n 0000000176 00000 n 0000000295 00000 n 0000000373 00000 n trailer << /Size 7 /Root 1 0 R >> startxref 395 %%EOF
Cảm ơn Kurt, nhưng tại sao giá trị của startxref là 394 không 396. Không phải là giá trị này nên được bù đắp byte của nhân vật 'x' trong 'xref' trong tập tin này? Nó là 396 trong một Hex Editor. Nhưng với 396, tệp bị hỏng và 394 công trình. Tôi không biết lý do. – user565739
@ user565739: Bạn nên chạy 'dd bs = 1 skip = 394 if = this.pdf'. Điều đó có nghĩa là bạn đã bỏ qua 394 byte đầu tiên khi bán phá giá tệp. Bây giờ đầu ra sẽ bắt đầu bằng 'xref' trên một dòng bởi chính nó. –
Khi tôi sao chép/dán, tôi phải thay đổi ký tự đơn "..." xung quanh "toán tử đánh dấu trang" thành ba ký tự "..." và startxref từ 394 đến 398. Tôi nghi ngờ rằng khi tôi sao chép/dán nhân vật duy nhất "..." bị nghiền nát. Bằng cách mở rộng thành ba, "." ở hai bên của luồng, thêm 4 byte khác đã chuyển tôi đến 398 từ 394 để bắt đầu bảng xref. – Pat