Lewati ke konten

PDF 2.0: apa saja yang berubah

Evidence: Standard-backed

PDF 2.0 adalah ISO 32000-2. Ini adalah spesifikasi PDF pertama yang sepenuhnya dimiliki ISO, bukan Adobe. Sebagian besar spesifikasi ini merupakan konsolidasi dan pembenahan dari 1.7, bukan perombakan besar. Halaman ini membahas apa yang sebenarnya berubah, perubahan mana yang terasa dalam praktik, dan bagaimana NextPDF menargetkan baseline 2.0 secara default sambil tetap dapat menulis struktur berkas yang lebih lama ketika profil tertentu menuntutnya.

“PDF 2.0” terdengar seolah-olah seharusnya menjadi format yang berbeda. Padahal tidak. Berkas 2.0 memakai model objek, xref, dan trailer yang sama seperti 1.7, sehingga perubahan sebenarnya mudah diremehkan. Masalah biasanya bukan muncul dari fitur besar yang menjadi sorotan, melainkan dari pengetatan: aturan yang dulu opsional di 1.7 tetapi kini diharapkan, serta fitur yang diam-diam dihapus. Dokumen yang sepenuhnya valid sebagai berkas 1.7 bisa menjadi berkas 2.0 yang tidak konforman tanpa satu pun perbedaan yang kasat mata.

Alasan lainnya adalah arah pengembangan. NextPDF adalah engine PDF 2.0. Setelah Anda memahami apa yang diharapkan oleh 2.0 dan di mana ia sengaja berbeda dari 1.7, Anda dapat menalar mengapa engine menolak hal-hal tertentu, menyematkan fon dengan lebih ketat, dan menggunakan default aliran rujukan silang alih-alih tabel.

  • PDF 2.0 = ISO 32000-2, dimiliki ISO, dan dibangun di atas (bukan menggantikan) 1.7.
  • Header menjadi %PDF-2.0; penulis yang konforman menyatakan versinya sebagai 2.0 di header atau di /Version pada katalog.
  • Sebagian besar struktur berkas tidak berubah — objek tak langsung yang sama, trailer yang sama, dan disiplin startxref/%%EOF yang sama.
  • Aliran rujukan silang adalah default 2.0 yang alami; tabel klasik 20-byte masih legal dan masih diwajibkan oleh sebagian profil PDF/A.
  • 2.0 menambahkan beberapa hal (misalnya struktur berkas terkait dan bagian dokumen yang lebih kaya, serta enkripsi yang lebih kuat melalui ekstensi AES-256-GCM) dan menghapus beberapa hal (sejumlah tag struktur; ekspektasi penyematan fon yang diperketat; koleksi karakter CJK yang dideprekasi).
  • NextPDF menargetkan 2.0 secara default dan dapat menyerialkan struktur 1.7/1.4 ketika profil konformansi membutuhkannya.

Versi adalah keputusan yang diekspresikan di satu tempat: strategi serialisasi.

Pdf20StreamStrategy (src/Writer/Pdf20StreamStrategy.php) menulis header %PDF-2.0, melaporkan /2.0 sebagai versi katalog, dan memancarkan aliran rujukan silang terkompresi. Strategi ini juga membawa pengetatan fon 2.0 secara langsung. Dalam profil 2.0, strategi ini dapat menegakkan aturan terhadap fon Type 1 standar yang tidak disematkan, bukan sekadar memperingatkannya, karena standar kini mengharapkan fon tersebut disematkan. Kedua strategi tabel (Pdf17TableStrategy, Pdf14TableStrategy) ada justru karena sebagian profil memerlukan bentuk yang lebih lama. PDF/A-2/-3 mewajibkan tabel rujukan silang tradisional, sedangkan PDF/A-1 juga melarang aliran objek dan aliran rujukan silang. Ketiga strategi mengimplementasikan satu antarmuka PdfSerializationStrategy yang sama, sehingga penulis tetap identik di atas batas itu. Yang berubah hanya bentuk trailer/xref.

Enkripsi yang lebih kuat disusun dengan pola yang sama terencananya. PdfXrefWriter (src/Writer/PdfXrefWriter.php) meneruskan opt-in AES-256-GCM (ekstensi ISO/TS 32003 untuk 2.0) ke dalam kamus enkripsi sehingga entri versi handler dan mode cipher yang dipancarkan sesuai dengan byte yang benar-benar dihasilkan. Engine tidak mengiklankan satu cipher lalu menulis cipher lain.

Secara keseluruhan, rancangannya seperti ini: 2.0 adalah default. Struktur yang lebih lama dapat dijangkau secara sengaja, tidak pernah secara tidak sengaja. Ketika 2.0 memperketat sebuah aturan, NextPDF dapat mempertahankan batas yang lebih ketat itu alih-alih melonggarkannya secara diam-diam.

  1. Step 1 of 3: ISO 32000-1 PDF 1.7 — the Adobe-authored base, adopted by ISO
  2. Step 2 of 3: ISO 32000-2 PDF 2.0 — ISO-owned consolidation, tightening, and additions
  3. Step 3 of 3: ISO/TS 32003 AES-256-GCM (AESV4) — an encryption extension to PDF 2.0
Garis keturunan versi PDF yang dijadikan acuan penalaran NextPDF: PDF 1.7 menjadi basis ISO, ISO 32000-2 adalah PDF 2.0, dan ISO/TS 32003 memperluas 2.0 dengan enkripsi AES-256-GCM.

Pernyataan versi bersifat normatif. Spec: ISO 32000-2, §7.5.2 menyatakan bahwa prosesor yang menulis berkas konforman wajib (shall) mengidentifikasi versi — baik di header maupun sebagai entri /Version pada katalog — sebagai 2.0, dan bahwa header berbentuk %PDF-1.n atau %PDF-2.n yang diikuti oleh satu penanda akhir baris. Spec: ISO 32000-2, §7.7.2 menambahkan bahwa /Version pada katalog mengesampingkan versi header sebelumnya, yang persis itulah yang membuat kenaikan versi inkremental dimungkinkan. Evidence: Standard-backed

Sifat 2.0 sebagai konsolidasi, bukan penulisan ulang, terlihat dari apa yang dipertahankannya: aliran rujukan silang (/Type /XRef) adalah mekanisme yang sama yang diperkenalkan di PDF 1.5 dan diteruskan sebagai default 2.0 ( Spec: ISO 32000-2, §7.5.8 ). Struktur objek tak langsung, trailer, dan startxref tidak berubah dari deskripsi pada halaman sebelumnya.

Perubahan yang penting adalah penghapusan dan pengetatan. Standar mencatat bahwa enam elemen struktur standar yang ada di namespace struktur standar PDF 1.7 bukan bagian dari namespace PDF 2.0 — Art, BlockQuote, TOC, Reference, BibEntry, dan Code ( Spec: ISO 32000-2, Annex L.3 , dengan perbedaan namespace didefinisikan menurut Spec: ISO 32000-2, §14.8.6 ). Standar ini juga memperketat keempat belas fon Type 1 standar: jika 1.0–1.7 mengizinkan kamus fon menghilangkan entri metrik, 2.0 menutup kelonggaran tersebut ( Spec: ISO 32000-2, §9.6.2.1 ). Standar ini juga merevisi koleksi karakter CJK yang telah ditetapkan. Sebagai contoh, Adobe-Korea1 dideprekasi di 2.0. Adobe-KR ditambahkan. Tidak satu pun dari hal ini mengubah tampilan halaman yang sudah ada. Semuanya dapat mengubah apakah halaman itu konforman atau tidak.

KategoriContoh (2.0 vs 1.7)Apakah mengubah tampilan?Mengapa penting
Tidak berubahObjek tak langsung, trailer, startxref/%%EOF, aliran xref2.0 adalah model objek yang sama; sebagian besar perkakas tetap berlaku
DitambahkanStruktur berkas terkait / bagian dokumen yang lebih kaya; enkripsi AES-256-GCM (ISO/TS 32003)TidakKemampuan baru yang Anda aktifkan; diabaikan dengan aman oleh pembaca yang lebih lama
DiperketatFon Standar-14 diharapkan disematkan; metrik tidak lagi boleh dihilangkanTidakBerkas 1.7 yang valid bisa menjadi berkas 2.0 yang tidak konforman
DihapusEnam elemen struktur namespace 1.7 (Art, BlockQuote, TOC, Reference, BibEntry, Code); koleksi CJK yang dideprekasi (misalnya, Adobe-Korea1)TidakSenyap: tidak ada yang kasat mata yang menandakan hilangnya konformansi

Perubahan PDF 2.0 yang penting sebagian besar tidak kasat mata: penambahan yang Anda aktifkan, serta pengetatan dan penghapusan yang mengubah konformansi tanpa mengubah satu piksel pun yang dirender.

Sering kali, satu-satunya perbedaan yang kasat mata antara berkas 2.0 dan berkas 1.7 hanya dua baris — header dan versi katalog — meskipun aturan konformansi di baliknya jauh berbeda.

%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>
endstream
endobj
startxref
12345
%%EOF

Pembaca melihat %PDF-2.0 dan /Version /2.0. Yang tidak dilihat pembaca — tetapi dilihat oleh pemeriksa konformansi — adalah bahwa berkas ini kini diharapkan menyematkan fon standarnya dan tidak boleh menggunakan tag struktur yang dihapus 2.0. Byte yang berbeda hanya sedikit. Perbedaan aturannya tidak.

Jebakannya adalah berpikir, “kita menghasilkan PDF 2.0, jadi kita lebih konforman daripada sebelumnya.” Menulis %PDF-2.0 adalah sebuah klaim, bukan jaminan. Sebuah berkas dapat membawa header 2.0 namun tetap melanggar 2.0 — dengan merujuk fon standar yang tidak disematkan, atau dengan menggunakan fitur yang dihapus 2.0 — persis seperti yang ditoleransi di bawah 1.7. Penanda versi menaikkan standar acuan untuk mengukur berkas tersebut; penanda itu tidak otomatis membuat berkas melewatinya. Kesalahan sebaliknya adalah berasumsi bahwa berkas 1.7 berfungsi sebagai 2.0 hanya dengan mengubah header: biasanya berkas itu dirender secara identik tetapi gagal konformansi, karena pengetatannya nyata meskipun tidak kasat mata.

Menargetkan baseline 2.0 berarti NextPDF menggunakan default struktur berkas 2.0 dan dapat mempertahankan aturan 2.0 yang diperketat. Ini tidak berarti setiap fitur opsional 2.0 telah diimplementasikan, dan juga tidak berarti memancarkan header 2.0 menyatakan dokumen telah lulus sertifikasi terhadap PDF/A, PDF/UA, atau profil lainnya. Semua itu adalah target konformansi yang terpisah dan lebih ketat, dilapiskan di atas spesifikasi dasar, masing-masing dengan validasinya sendiri.

Halaman ini adalah orientasi praktis terhadap perbedaan versi, bukan log perubahan menyeluruh antara ISO 32000-2 dan 32000-1. Ketika fitur atau deprekasi 2.0 tertentu mengatur perilaku engine, perilaku itu ditambatkan ke klausanya sendiri. Halaman ini memetakan lanskap, bukan mengenumerasi setiap delta pada tingkat klausa.

Apakah PDF 2.0 kompatibel mundur dengan pembaca 1.7? Sebagian besar ya, untuk struktur yang tidak berubah. Fitur baru 2.0 umumnya dirancang agar pembaca yang lebih lama dapat mengabaikan bagian yang tidak dipahaminya. Namun, fitur yang khusus 2.0 tidak akan didukung oleh pembaca 1.7.

Mana yang menang, header atau /Version pada katalog? /Version pada katalog diutamakan ketika entri itu menamai versi yang lebih baru daripada header. Inilah yang memungkinkan pembaruan inkremental menaikkan versi berkas tanpa menulis ulang header.

Mengapa NextPDF menggunakan default aliran rujukan silang, bukan tabel? Aliran rujukan silang adalah mekanisme alami PDF 2.0 — ringkas dan mampu mengindeks objek terkompresi. Tabel 20-byte tetap ditulis ketika profil tertentu (terutama beberapa tingkat PDF/A) membutuhkannya.

  • Apa itu PDF sebenarnya — model objek dan xref yang dipertahankan PDF 2.0 dari 1.7.
  • Lanskap standar — di mana ISO 32000-2 berada di antara standar yang dilacak NextPDF dan bagaimana sebuah klausa menjadi perilaku.
  • Fon: bagian yang sulit — pengetatan penyematan fon adalah salah satu perubahan 2.0 yang benar-benar terasa.
  • PDF 2.0 — spesifikasi PDF yang distandarkan sebagai ISO 32000-2; edisi pertama yang dimiliki ISO, bukan Adobe.
  • ISO 32000-1 — standardisasi ISO atas PDF 1.7 milik Adobe; basis yang menjadi pijakan PDF 2.0.
  • ISO/TS 32003 — spesifikasi teknis yang memperluas PDF 2.0 dengan enkripsi AES-256-GCM (AESV4).
  • /Version pada katalog — entri katalog dokumen yang menyatakan versi PDF; mengesampingkan header ketika entri itu menamai versi yang lebih baru.
  • Aliran rujukan silang — mekanisme rujukan silang PDF 1.5+ / 2.0 (/Type /XRef); default NextPDF, dengan tabel klasik yang masih tersedia untuk profil yang lebih lama.
  • Pengetatan — aturan yang di 1.7 opsional atau diizinkan, lalu di 2.0 diharapkan atau diwajibkan, sehingga mengubah konformansi tanpa mengubah tampilan.