Ke mana perginya daftar isi setelah menggabungkan PDF: pertama-tama tentukan aturan penyimpanan bookmark

Saat menggabungkan, putuskan terlebih dahulu apakah akan mengimpor direktori asli. Jika Anda ingin membuat entri tingkat atas sendiri, Anda harus secara eksplisit import_outline=False untuk menghindari pencampuran impor default dengan rekonstruksi manual. Ini hanya menunjukkan nomor halaman dan offset direktori, dan tidak berhubungan dengan isolasi bidang formulir.

Setelah menggabungkan beberapa PDF, penanda dan daftar isi sering kali mengalami kesalahan: bilah navigasi kiri mungkin kosong, dan mengeklik penanda dapat melompat ke halaman kesalahan. Artikel ini ditulis untuk pengembang dan pemroses dokumen yang perlu menggunakan skrip untuk menyambung PDF. Setelah membaca ini, Anda akan mengetahui apa yang harus diputuskan sebelum menggabungkan, cara memverifikasi keluaran dengan sampel sintetis, dan hasil mana yang harus ditinjau secara manual.

Kode dan contoh di sini semuanya menggunakan sampel sintetis, yang hanya mendemonstrasikan ide pemrosesan nomor halaman dan offset direktori, dan tidak melibatkan isolasi bidang formulir. Catatan yang berjalan hanya menggambarkan kinerja sampel dalam lingkungan yang terisolasi dan tidak menjamin pengaruh semua file sebenarnya. Harap simpan dokumen asli sebelum menangani dokumen penting.

Kemana perginya daftar isi setelah menggabungkan PDF? Kesimpulan satu kalimat

Saat menggabungkan, putuskan terlebih dahulu apakah akan mengimpor direktori asli; jika Anda ingin membuat entri tingkat atas sendiri, atur import_outline=False secara eksplisit untuk menghindari pencampuran impor default dan rekonstruksi manual.

situasi AndaPraktik yang direkomendasikanalasan
Perlu menyimpan bookmark file sumberBuat keputusan yang jelas untuk mengimpor direktori asli saat menggabungkanPerilaku default mungkin tercampur dengan pembuatan ulang manual
Buat pintu masuk tingkat atas Anda sendiriTetapkan import_outline=False secara eksplisitHindari impor default yang dicampur dengan pembuatan ulang manual
Bookmark salah tempat setelah menggabungkan beberapa dokumenPeriksa offset awal file keduaPenanda mungkin masih mengarah ke halaman pertama
Bersiaplah untuk memberikan hasil yang terkonsolidasiTambahkan jumlah total halaman dan jumlah setiap halaman masukan yang akan diperiksa. Jika ada perbedaan maka tidak akan dikirimkan.Eksekusi kode yang berhasil tidak berarti kiriman tersedia
Pembaca yang sama perlu dimasukkan beberapa kaliHubungi reset_translation sebelum setiap penyisipanJika tidak, mengubah satu tempat dapat mempengaruhi tempat lain

Mengapa direktori hilang setelah penggabungan?

Setelah menggunakan PdfWriter.append() untuk menggabungkan beberapa PDF, Anda mungkin mendapati bilah navigasi kiri kosong atau bookmark berpindah ke halaman yang salah saat Anda membuka file keluaran. Ini adalah masalah umum pada operasi penggabungan pypdf.

Masalahnya biasanya bukan pada tindakan "penggabungan" itu sendiri, tetapi pada penanda file sumber (Garis Besar) yang menunjuk ke nomor halaman atau referensi objek internal dari dokumen asli. Setelah beberapa dokumen disambung ke dalam file baru, nomor halaman fisik diimbangi, tetapi pohon penanda lama tidak secara otomatis memperbarui offset ini.

Ada situasi lain yang lebih halus: file sumber menggunakan tujuan bernama, bukan nomor halaman absolut, dan tujuan dengan nama yang sama ada di file sumber berbeda. File yang ditambahkan kemudian akan menimpa definisi sebelumnya, menyebabkan link menjadi tidak valid.

Contoh sintesis: pertama-tama tentukan batas masukan dan keluaran yang diharapkan

Untuk memverifikasi kekuatan logika penggabungan, serangkaian sampel sintetik yang terkontrol perlu dibuat daripada mengandalkan dokumen nyata dengan struktur yang bervariasi. Contoh ini mengasumsikan dua file sumber untuk pengujian.

Skenario kesalahan atau masukan batas: Jika Anda menambahkan dua file secara langsung tanpa pemrosesan awal apa pun, hasil berikut mungkin terjadi:

  • Hanya satu bidang user_name dalam formulir yang dapat diedit, bidang lainnya dikaburkan atau data hilang.
  • Semua bookmark mengarah ke rentang halaman source_a, atau kesalahan dilaporkan saat mengklik bookmark yang sesuai dengan source_b.

Kegagalan diam-diam ini lebih mengkhawatirkan daripada kerusakan program karena merusak kegunaan dokumen tanpa memberikan pengecualian.

Contoh komposisi mandiri

Lihat daftar impor untuk contoh dependensi. Kode membuat masukan dalam memori, dan catatan proses disediakan secara terpisah dan tidak mewakili jaminan semua file sebenarnya.

from io import BytesIO
from pypdf import PdfReader, PdfWriter
def source(pages):
    writer = PdfWriter()
    for _ in range(pages):
        writer.add_blank_page(width=200, height=200)
    out = BytesIO()
    writer.write(out)
    return out.getvalue()
writer = PdfWriter()
for title, raw in [("Part A", source(2)), ("Part B", source(1))]:
    start = len(writer.pages)
    writer.append(PdfReader(BytesIO(raw)), import_outline=False)
    writer.add_outline_item(title, start)
out = BytesIO()
writer.write(out)
reader = PdfReader(BytesIO(out.getvalue()))
assert len(reader.pages) == 3
assert len(reader.outline) == 2
assert reader.get_destination_page_number(reader.outline[0]) == 0
assert reader.get_destination_page_number(reader.outline[1]) == 2

Kriteria penerimaan dan batasan tinjauan manual untuk hasil gabungan

Eksekusi kode yang berhasil tidak berarti bahwa kiriman tersedia. Tabel di bawah mencantumkan poin pengamatan penerimaan untuk menggabungkan PDF dan membedakan mana yang dapat diverifikasi secara otomatis dan mana yang memerlukan intervensi manual. Standar ini berlaku untuk validasi keluaran alat penggabungan PDF apa pun.

mengamatiapa yang harus dilakukantidak boleh disimpulkan
Jumlah total halaman gabunganPeriksa dengan jumlah halaman masukan yang ditambahkanTidak dikirimkan jika ada perbedaan
katalog keduaPeriksa offset awalMasih tidak bisa menunjuk ke halaman pertama
Kebijakan retensi direktori sumberPerjelas nilai import_outlineHindari direktori duplikat

Selain itu, perhatikan metode reset_translation. Jika Anda ingin menyisipkan halaman berbeda dari PDF yang sama ke dalam output beberapa kali, Anda harus memanggilnya sebelum setiap penyisipan; Jika tidak, sisipan kedua akan menjadi salinan referensi pertama, dan memodifikasi salah satu akan memengaruhi yang lain. Ini adalah detail tingkat kode, tetapi selama penerimaan end-to-end, sering muncul sebagai "mengubah satu bagian secara tak terduga mengubah bagian lain," yang mudah disalahartikan sebagai bug perangkat lunak.

📊 Perbandingan Inti

MetodeSkenario yang berlakuRisiko yang perlu diperhatikan
Impor ke direktori asliStruktur bookmark file sumber harus dipertahankanAnda perlu memastikan bahwa bookmark yang diimpor masih mengarah ke halaman yang benar setelah digabungkan
Atur import_outline=False secara eksplisit dan buat pintu masuk tingkat atas secara manualAnda perlu merencanakan struktur navigasi untuk file output sendiriHindari pencampuran dengan direktori impor default
Langsung tempel tanpa preprocessingTes hanya digunakan untuk memahami perilaku defaultPenanda buku mungkin tidak sejajar, dan bidang formulir dapat tersembunyi atau hilang

🎯 Metode mana yang cocok untukmu?

Jika Anda perlu menyimpan direktori file sumber,

Saat menggabungkan, tentukan dengan jelas untuk mengimpor direktori asli, dan setelah menggabungkan, periksa apakah bookmark mengarahkan ke halaman yang benar.

Jika Anda ingin merencanakan titik masuk tingkat atas untuk file output sendiri

Atur import_outline=False secara eksplisit, lalu buat entri tingkat atas secara manual untuk menghindari pencampuran kedua set direktori.

Jika Anda ingin menyisipkan halaman berbeda dari PDF yang sama berkali-kali

Sebelum setiap penyisipan, panggil reset_translation, dan selama penerimaan, periksa apakah memodifikasi satu area memengaruhi posisi lain.

Jika Anda ingin memberikan hasil kepada orang lain

Pertama, periksa total jumlah halaman dan offset awal setiap dokumen sesuai dengan formulir penerimaan; jika ada ketidaksesuaian, jangan kirim langsung.

❓ Pertanyaan yang Sering Diajukan (FAQ)

1. Mengapa bookmark melompat ke halaman yang salah setelah digabungkan?

Bookmark dalam file sumber menunjuk ke nomor halaman asli atau referensi objek internal; setelah digabungkan, nomor halaman fisik bergeser, sementara pohon bookmark lama tidak diperbarui secara otomatis.

2. Apa yang harus Anda perhatikan saat menggunakan target bernama?

Ketika file sumber yang berbeda memiliki target yang sama, penambahan berikutnya akan menimpa definisi sebelumnya, menyebabkan tautan gagal.

3. Jika kode berjalan dengan sukses, apakah itu berarti hasil penggabungan dapat dikirim?

Tidak. Eksekusi kode yang berhasil tidak berarti deliverable dapat digunakan; jumlah halaman, offset, dan bookmark tetap harus diperiksa sesuai standar penerimaan.

4. Mengapa Mengatur import_outline=False Secara Eksplisit?

Hindari mencampur direktori impor default dengan entri tingkat atas yang direkonstruksi secara manual.

📝 Ringkasan

Saat menggabungkan PDF, pertama-tama putuskan apakah akan mengimpor daftar isi asli, lalu gunakan contoh komposit dan formulir penerimaan untuk memeriksa jumlah halaman, offset, dan bookmark. Setelah proses penggabungan selesai, Anda dapat mempertimbangkan untuk memasukkan urutan halaman, tautan, dan kelengkapan isi naskah terjemahan.

Rasakan sekarang: Unggah dokumen Anda untuk mulai menerjemahkan, mempertahankan format asli

Referensi

Diperbarui 2026-11-13