PDF 2.0: สิ่งที่เปลี่ยนไป
ISO 32000-2 Evidence: Standard-backed
ภาพรวมโดยย่อ
หัวข้อที่มีชื่อว่า “ภาพรวมโดยย่อ”PDF 2.0 คือ ISO 32000-2 ข้อกำหนด PDF ฉบับนี้เป็นฉบับแรกที่อยู่ภายใต้การดูแลของ ISO ทั้งหมด แทนที่จะเป็น Adobe โดยส่วนใหญ่แล้วเป็น การรวบรวมและจัดระเบียบ 1.7 มากกว่าการคิดค้นใหม่ทั้งหมด หน้านี้ครอบคลุมสิ่งที่เปลี่ยนไปจริง การเปลี่ยนแปลงใดส่งผลในทางปฏิบัติ และ NextPDF ตั้งเป้าเส้นฐาน 2.0 เป็นค่าเริ่มต้นอย่างไร พร้อมกับยังเขียนโครงสร้างไฟล์รุ่นเก่าได้เมื่อโปรไฟล์เรียกร้อง
เหตุใดเรื่องนี้จึงสำคัญ
หัวข้อที่มีชื่อว่า “เหตุใดเรื่องนี้จึงสำคัญ”“PDF 2.0” ฟังเหมือนควรเป็นรูปแบบที่แตกต่างออกไป แต่ไม่ใช่ ไฟล์ 2.0 ใช้โมเดลออบเจกต์ xref และเทรลเลอร์เดียวกันกับ 1.7 จึงทำให้การเปลี่ยนแปลงที่แท้จริงถูกมองข้ามได้ง่าย การเปลี่ยนแปลงที่มักก่อให้เกิดปัญหาไม่ใช่คุณสมบัติเด่นที่ถูกพูดถึง แต่คือ การกำหนดให้เข้มงวดขึ้น: กฎที่เคยเป็นตัวเลือกใน 1.7 แต่ตอนนี้กลายเป็นสิ่งที่คาดหวัง และคุณสมบัติที่ถูก นำออก ไปอย่างเงียบๆ เอกสารที่เคยเป็นไฟล์ 1.7 ที่ถูกต้องสมบูรณ์อาจกลายเป็นไฟล์ 2.0 ที่ไม่เป็นไปตามข้อกำหนดได้โดยไม่มีความแตกต่างที่มองเห็นได้แม้แต่จุดเดียว
อีกเหตุผลหนึ่งคือทิศทางของ NextPDF เป็นเอนจิน PDF 2.0 เมื่อทราบว่า 2.0 คาดหวังอะไร และจุดที่ 2.0 จงใจแตกต่างจาก 1.7 ก็จะอธิบายได้ว่าเหตุใดเอนจินจึงปฏิเสธบางรายการ ฝังฟอนต์อย่างเข้มงวดขึ้น และเลือกใช้สตรีมการอ้างอิงไขว้เป็นค่าเริ่มต้นแทนตาราง
ฉบับย่อ
หัวข้อที่มีชื่อว่า “ฉบับย่อ”- PDF 2.0 = ISO 32000-2 อยู่ภายใต้ ISO ต่อยอดจาก (ไม่ได้แทนที่) 1.7
- ส่วนหัวจะกลายเป็น
%PDF-2.0ตัวเขียนไฟล์ที่เป็นไปตามข้อกำหนดจะระบุเวอร์ชันเป็น 2.0 ในส่วนหัว หรือ ในแคตาล็อก/Versionของเอกสาร - โครงสร้างไฟล์ส่วนใหญ่ ไม่เปลี่ยนแปลง — ออบเจกต์ทางอ้อมแบบเดียวกัน เทรลเลอร์แบบเดียวกัน วินัยของ
startxref/%%EOFแบบเดียวกัน - การอ้างอิงไขว้แบบ สตรีม คือค่าเริ่มต้นโดยธรรมชาติของ 2.0 ส่วนตารางขนาด 20 ไบต์แบบดั้งเดิมยังคงถูกต้องตามกฎและยังคงจำเป็นสำหรับบางโปรไฟล์ PDF/A
- 2.0 เพิ่ม สิ่งต่างๆ (ตัวอย่างเช่น โครงสร้างไฟล์ที่เกี่ยวข้องและส่วนต่างๆของเอกสารที่สมบูรณ์ยิ่งขึ้น การเข้ารหัสลับที่แข็งแกร่งขึ้นผ่านส่วนขยาย AES-256-GCM) และ นำออก สิ่งต่างๆ (แท็กโครงสร้างบางส่วน การคาดหวังการฝังฟอนต์ที่เข้มงวดขึ้น คอลเลกชันอักขระ CJK ที่เลิกใช้แล้ว)
- NextPDF มุ่งเป้าไปที่ 2.0 เป็นค่าเริ่มต้น และสามารถซีเรียลไลซ์โครงสร้าง 1.7/1.4 ได้เมื่อโปรไฟล์ความสอดคล้องเรียกร้อง
NextPDF รับมือกับเรื่องนี้อย่างไร
หัวข้อที่มีชื่อว่า “NextPDF รับมือกับเรื่องนี้อย่างไร”เวอร์ชันคือ การตัดสินใจ ที่แสดงออกในจุดเดียว นั่นคือกลยุทธ์การซีเรียลไลซ์
Pdf20StreamStrategy (src/Writer/Pdf20StreamStrategy.php) เขียนส่วนหัว %PDF-2.0 ระบุ /2.0 เป็นเวอร์ชันของแคตาล็อก และส่งออก สตรีม การอ้างอิงไขว้แบบบีบอัด นอกจากนี้ยังนำข้อกำหนดด้านฟอนต์ที่เข้มงวดขึ้นของ 2.0 มาใช้โดยตรง เมื่ออยู่ภายใต้โปรไฟล์ 2.0 กลยุทธ์นี้สามารถ บังคับใช้ กฎกับฟอนต์ Type 1 มาตรฐานที่ไม่ได้ฝัง แทนที่จะเพียงเตือนเท่านั้น เพราะข้อกำหนดตอนนี้คาดหวังให้มีการฝังฟอนต์เหล่านั้น กลยุทธ์ตารางทั้งสอง (Pdf17TableStrategy, Pdf14TableStrategy) มีอยู่เพราะบางโปรไฟล์ต้องการรูปแบบเดิม PDF/A-2/-3 กำหนดให้ใช้ตารางการอ้างอิงไขว้แบบดั้งเดิม และ PDF/A-1 ยังห้ามใช้สตรีมออบเจกต์และสตรีมการอ้างอิงไขว้เพิ่มเติมด้วย กลยุทธ์ทั้งสามนำอินเทอร์เฟซ PdfSerializationStrategy เดียวกันไปใช้งาน ดังนั้นตัวเขียนชั้นบนจึงเหมือนเดิม มีเพียงรูปแบบของ trailer/xref เท่านั้นที่เปลี่ยนแปลง
การเข้ารหัสลับที่แข็งแกร่งขึ้นถูกผูกเข้ากับระบบด้วยแนวทางเดียวกันอย่างตั้งใจ PdfXrefWriter (src/Writer/PdfXrefWriter.php) ส่งต่อการเลือกใช้ AES-256-GCM (ส่วนขยาย ISO/TS 32003 สำหรับ 2.0) เข้าไปในพจนานุกรมการเข้ารหัสลับ เพื่อให้รายการเวอร์ชันของตัวจัดการและโหมดของรหัสที่ส่งออกตรงกับไบต์ที่สร้างขึ้นจริง เอนจินจะไม่ประกาศรหัสหนึ่งแล้วเขียนอีกรหัสหนึ่ง
การออกแบบโดยรวมเป็นดังนี้ 2.0 เป็นค่าเริ่มต้น โครงสร้างรุ่นเก่าเข้าถึงได้โดยตั้งใจ ไม่ใช่โดยบังเอิญ และในจุดที่ 2.0 กำหนดกฎให้เข้มงวดขึ้น NextPDF สามารถยึดแนวทางที่เข้มงวดนั้นไว้ แทนที่จะผ่อนปรนลงอย่างเงียบๆ
- Step 1 of 3: ISO 32000-1 PDF 1.7 — the Adobe-authored base, adopted by ISO
- Step 2 of 3: ISO 32000-2 PDF 2.0 — ISO-owned consolidation, tightening, and additions
- Step 3 of 3: ISO/TS 32003 AES-256-GCM (AESV4) — an encryption extension to PDF 2.0
หลักฐานบอกอะไร
หัวข้อที่มีชื่อว่า “หลักฐานบอกอะไร”ข้อความระบุเวอร์ชันเป็นข้อกำหนดเชิงบรรทัดฐาน Spec: ISO 32000-2, §7.5.2 ISO 32000-2 §7.5.2 ระบุว่าตัวประมวลผลที่เขียนไฟล์ที่เป็นไปตามข้อกำหนด จะต้อง ระบุเวอร์ชัน — ไม่ว่าจะในส่วนหัวหรือเป็นรายการ /Version ในแคตาล็อก — เป็น 2.0 และส่วนหัวคือ %PDF-1.n หรือ %PDF-2.n ตามด้วยเครื่องหมายสิ้นสุดบรรทัดเพียงตัวเดียว
Spec: ISO 32000-2, §7.7.2 ISO 32000-2 §7.7.2 เพิ่มเติมว่าแคตาล็อก
/Version มีผลแทนเวอร์ชันในส่วนหัวที่ระบุก่อนหน้า ซึ่งเป็นสิ่งที่ทำให้
การยกระดับเวอร์ชันแบบเพิ่มทีละขั้นเป็นไปได้ Evidence: Standard-backed
การที่ 2.0 เป็นการรวม ไม่ใช่การเขียนใหม่ เห็นได้จากสิ่งที่ 2.0 คงไว้: สตรีมการอ้างอิงไขว้ (/Type /XRef) เป็นกลไกเดียวกันกับที่นำมาใช้ใน PDF 1.5 และสืบทอดต่อมาเป็นค่าเริ่มต้นของ 2.0 ( Spec: ISO 32000-2, §7.5.8 ISO 32000-2 §7.5.8 ) โครงสร้างของออบเจกต์ทางอ้อม เทรลเลอร์ และ startxref ไม่เปลี่ยนแปลงไปจากคำอธิบายในหน้าก่อนหน้า
การเปลี่ยนแปลงที่สำคัญคือการนำออกและการกำหนดให้เข้มงวดขึ้น ข้อกำหนดบันทึกไว้ว่าองค์ประกอบโครงสร้างมาตรฐานหกรายการที่มีอยู่ในเนมสเปซโครงสร้างมาตรฐานของ PDF 1.7 ไม่ เป็นส่วนหนึ่งของเนมสเปซ PDF 2.0 — Art, BlockQuote, TOC, Reference, BibEntry และ Code ( Spec: ISO 32000-2, Annex L.3 ISO 32000-2 Annex L.3 โดยมีความแตกต่างของเนมสเปซที่นิยามไว้ตาม Spec: ISO 32000-2, §14.8.6 ISO 32000-2 §14.8.6 ) นอกจากนี้ยังเข้มงวดขึ้นกับฟอนต์ Type 1 มาตรฐานสิบสี่ตัว: ในจุดที่ 1.0–1.7 อนุญาตให้พจนานุกรมของฟอนต์ละเว้นรายการ metrics ได้ 2.0 ปิดการอนุญาตนั้น ( Spec: ISO 32000-2, §9.6.2.1 ISO 32000-2 §9.6.2.1 ) และยังปรับปรุงคอลเลกชันอักขระ CJK ที่กำหนดไว้ล่วงหน้าด้วย ตัวอย่างเช่น Adobe-Korea1 ถูกเลิกใช้ใน 2.0 Adobe-KR ถูกเพิ่มเข้ามา ไม่มีสิ่งใดเหล่านี้เปลี่ยนลักษณะที่ปรากฏของหน้าเดิม แต่ทั้งหมดสามารถเปลี่ยนได้ว่าหน้านั้นเป็นไปตามข้อกำหนดหรือไม่
| หมวดหมู่ | ตัวอย่าง (2.0 เทียบกับ 1.7) | เปลี่ยนลักษณะที่ปรากฏหรือไม่ | เหตุใดจึงสำคัญ |
|---|---|---|---|
| ไม่เปลี่ยนแปลง | ออบเจกต์ทางอ้อม เทรลเลอร์ startxref/%%EOF สตรีม xref | — | 2.0 ใช้โมเดลออบเจกต์เดียวกัน เครื่องมือส่วนใหญ่ใช้งานต่อได้ |
| เพิ่ม | โครงสร้างไฟล์ที่เกี่ยวข้อง / ส่วนของเอกสารที่สมบูรณ์ยิ่งขึ้น การเข้ารหัสลับ AES-256-GCM (ISO/TS 32003) | ไม่ | ความสามารถใหม่ที่เลือกใช้ได้ ตัวอ่านรุ่นเก่าจะข้ามไปอย่างปลอดภัย |
| กำหนดเข้มงวดขึ้น | คาดหวังให้ฝังฟอนต์ Standard-14 ไม่สามารถละเว้น metrics ได้อีกต่อไป | ไม่ | ไฟล์ 1.7 ที่ถูกต้องอาจเป็นไฟล์ 2.0 ที่ไม่เป็นไปตามข้อกำหนด |
| นำออก | องค์ประกอบโครงสร้างเนมสเปซ 1.7 หกรายการ (Art, BlockQuote, TOC, Reference, BibEntry, Code) คอลเลกชัน CJK ที่เลิกใช้ (ตัวอย่างเช่น Adobe-Korea1) | ไม่ | เงียบ: ไม่มีสิ่งใดที่มองเห็นได้บ่งบอกถึงความสอดคล้องที่สูญเสียไป |
การเปลี่ยนแปลงสำคัญส่วนใหญ่ของ PDF 2.0 มองไม่เห็น: สิ่งที่เพิ่มเข้ามาซึ่งเลือกใช้ได้ และการกำหนดให้เข้มงวดขึ้น/การนำออกที่เปลี่ยนความสอดคล้องโดยไม่เปลี่ยน พิกเซลที่เรนเดอร์ออกมาแม้แต่จุดเดียว
ตัวอย่างในทางปฏิบัติ
หัวข้อที่มีชื่อว่า “ตัวอย่างในทางปฏิบัติ”ความแตกต่างที่ มองเห็นได้ ระหว่างไฟล์ 2.0 กับไฟล์ 1.7 มักมีเพียงสองบรรทัด — ส่วนหัวและเวอร์ชันของแคตาล็อก — แม้ว่ากฎความสอดคล้องที่อยู่เบื้องหลังจะแตกต่างกันอย่างมาก
%PDF-2.0 % was %PDF-1.7...1 0 obj<< /Type /Catalog /Version /2.0 % catalog states 2.0; overrides header if later /Pages 2 0 R >>endobj...% Cross-reference STREAM is the 2.0 default (was often a 20-byte table)99 0 obj<< /Type /XRef /Size 100 /W [1 2 2] /Filter /FlateDecode /Root 1 0 R >>stream<binary xref entries>endstreamendobjstartxref12345%%EOFตัวอ่านเห็น %PDF-2.0 และ /Version /2.0 สิ่งที่ตัวอ่าน ไม่ เห็น — และสิ่งที่ตัวตรวจสอบความสอดคล้องเห็น — คือขณะนี้ไฟล์นี้ถูกคาดหวังให้ฝังฟอนต์มาตรฐานและต้องไม่ใช้แท็กโครงสร้างที่ 2.0 นำออกไปแล้ว ไบต์ที่แตกต่างกันมีเพียงไม่กี่ไบต์ แต่กฎที่แตกต่างกันนั้นไม่ใช่เรื่องเล็ก
ความเข้าใจผิดที่พบบ่อย
หัวข้อที่มีชื่อว่า “ความเข้าใจผิดที่พบบ่อย”กับดักคือ “เราส่งออก PDF 2.0 ดังนั้นเราจึงเป็นไปตามข้อกำหนดมากขึ้น” การเขียน %PDF-2.0 เป็น การกล่าวอ้าง ไม่ใช่การรับประกัน ไฟล์สามารถมีส่วนหัว 2.0 และยังคงละเมิด 2.0 ได้ — ด้วยการอ้างอิงถึงฟอนต์มาตรฐานที่ไม่ได้ฝัง หรือด้วยการใช้คุณสมบัติที่ 2.0 นำออกไปแล้ว — ในรูปแบบที่อาจยอมรับได้ภายใต้ 1.7 เครื่องหมายระบุเวอร์ชันยกระดับมาตรฐานที่ใช้วัดไฟล์นั้นให้สูงขึ้น แต่ไม่ได้ทำให้ไฟล์ผ่านมาตรฐานนั้นโดยอัตโนมัติ ข้อผิดพลาดอีกด้านหนึ่งคือการสมมติว่าไฟล์ 1.7 กลายเป็น 2.0 ได้ด้วยการเปลี่ยนส่วนหัว: โดยทั่วไปแล้วจะเรนเดอร์ออกมาเหมือนกันแต่ ไม่ผ่านความสอดคล้อง เพราะกฎที่เข้มงวดขึ้นยังมีผล แม้จะมองไม่เห็นในผลลัพธ์ก็ตาม
ข้อจำกัดและขอบเขต
หัวข้อที่มีชื่อว่า “ข้อจำกัดและขอบเขต”การมุ่งเป้าไปที่เส้นฐาน 2.0 หมายความว่า NextPDF ใช้โครงสร้างไฟล์ 2.0 เป็นค่าเริ่มต้นและสามารถยึดกฎที่เข้มงวดขึ้นของ 2.0 ไว้ได้ สิ่งนี้ ไม่ได้ หมายความว่าทุกคุณสมบัติทางเลือกของ 2.0 ถูกนำมาใช้แล้ว และไม่ได้หมายความว่าการส่งออกส่วนหัว 2.0 จะรับรองว่าเอกสารผ่าน PDF/A, PDF/UA หรือโปรไฟล์อื่นใด สิ่งเหล่านั้นเป็นเป้าหมายความสอดคล้องที่แยกต่างหากและเข้มงวดกว่า ซึ่งซ้อนทับอยู่บนข้อกำหนดพื้นฐาน โดยแต่ละเป้าหมายมีการตรวจสอบความถูกต้องของตนเอง
หน้านี้เป็นแนวทางในทางปฏิบัติเกี่ยวกับความแตกต่างของเวอร์ชัน ไม่ใช่รายการเปลี่ยนแปลงทั้งหมดของ ISO 32000-2 เทียบกับ 32000-1 ในจุดที่คุณสมบัติเฉพาะของ 2.0 หรือการเลิกใช้กำกับพฤติกรรมของเอนจิน พฤติกรรมนั้นจะอ้างอิงข้อกำหนดเฉพาะของเรื่องนั้น หน้านี้ให้ภาพรวมของบริบท มากกว่าการระบุความแตกต่างในระดับข้อกำหนดทุกรายการ
คำถามที่พบบ่อยฉบับย่อ
หัวข้อที่มีชื่อว่า “คำถามที่พบบ่อยฉบับย่อ”PDF 2.0 เข้ากันย้อนหลังกับตัวอ่าน 1.7 หรือไม่ ส่วนใหญ่เข้ากันได้ สำหรับโครงสร้างที่ไม่เปลี่ยนแปลง คุณสมบัติใหม่ของ 2.0 โดยทั่วไปได้รับการออกแบบมาเพื่อให้ตัวอ่านรุ่นเก่าสามารถข้ามสิ่งที่ไม่เข้าใจได้ แต่ตัวอ่าน 1.7 จะไม่รองรับคุณสมบัติที่มีเฉพาะใน 2.0
ส่วนหัวหรือ /Version ในแคตาล็อกมีผลเหนือกว่า /Version ในแคตาล็อกมีผลเหนือกว่าเมื่อระบุเวอร์ชันที่ ใหม่กว่า ส่วนหัว นี่คือสิ่งที่ทำให้การอัปเดตแบบเพิ่มทีละขั้นยกระดับเวอร์ชันของไฟล์ได้โดยไม่ต้องเขียนส่วนหัวใหม่
เหตุใด NextPDF จึงใช้สตรีมการอ้างอิงไขว้เป็นค่าเริ่มต้น ไม่ใช่ตาราง สตรีมการอ้างอิงไขว้เป็นกลไกหลักของ PDF 2.0 — กะทัดรัดและสามารถจัดทำดัชนีออบเจกต์ที่บีบอัดได้ ตารางขนาด 20 ไบต์ยังคงถูกเขียนเมื่อโปรไฟล์ (โดยเฉพาะ PDF/A บางระดับ) เรียกร้อง
เอกสารที่เกี่ยวข้อง
หัวข้อที่มีชื่อว่า “เอกสารที่เกี่ยวข้อง”- PDF คืออะไรกันแน่ — โมเดลออบเจกต์และ xref ที่ PDF 2.0 คงไว้จาก 1.7
- ภูมิทัศน์ของมาตรฐาน — ตำแหน่งของ ISO 32000-2 ท่ามกลางมาตรฐานที่ NextPDF ติดตาม และข้อกำหนดกลายเป็นพฤติกรรมได้อย่างไร
- ฟอนต์: ส่วนที่ยาก — ข้อกำหนดการฝังฟอนต์ที่เข้มงวดขึ้นเป็นหนึ่งในการเปลี่ยนแปลงของ 2.0 ที่สัมผัสได้จริง
อภิธานศัพท์
หัวข้อที่มีชื่อว่า “อภิธานศัพท์”- PDF 2.0 — ข้อกำหนด PDF ที่กำหนดเป็นมาตรฐานในชื่อ ISO 32000-2 ฉบับแรกที่ ISO เป็นเจ้าของแทนที่จะเป็น Adobe
- ISO 32000-1 — การกำหนดมาตรฐานโดย ISO ของ PDF 1.7 ของ Adobe ซึ่งเป็นฐานที่ PDF 2.0 ต่อยอดมา
- ISO/TS 32003 — ข้อกำหนดทางเทคนิคที่ขยาย PDF 2.0 ด้วยการเข้ารหัสลับ AES-256-GCM (AESV4)
/Versionในแคตาล็อก — รายการในแคตาล็อกของเอกสารที่ระบุเวอร์ชัน PDF และมีผลแทนส่วนหัวเมื่อระบุเวอร์ชันที่ใหม่กว่า- สตรีมการอ้างอิงไขว้ — กลไกการอ้างอิงไขว้ของ PDF 1.5+ / 2.0 (
/Type /XRef) เป็นค่าเริ่มต้นของ NextPDF โดยตารางแบบดั้งเดิมยังคงใช้ได้สำหรับโปรไฟล์รุ่นเก่า - การกำหนดให้เข้มงวดขึ้น — กฎที่เคยเป็นตัวเลือกหรือได้รับอนุญาตใน 1.7 และเป็นสิ่งที่คาดหวังหรือจำเป็นใน 2.0 ซึ่งเปลี่ยนแปลงความสอดคล้องโดยไม่เปลี่ยนแปลงลักษณะที่ปรากฏ