Bagaimana cara mempertahankan bookmark ketika mengatur ulang halaman file PDF dengan alat-alat seperti pdftk?

12

Saya menggunakan pdftkuntuk mengatur ulang halaman file pdf dengan bookmark / garis besar, tetapi setelah itu, file output kehilangan bookmark yang asli.

Perintah saya adalah pdftk in.pdf cat 1-22 43 23-42 44-end output out.pdf.

Saya bertanya-tanya bagaimana saya bisa menyimpan bookmark sambil mengatur ulang halaman?

Tim
sumber

Jawaban:

9

Ini solusi yang bagus. Namun Anda harus menyesuaikannya agar sesuai dengan kebutuhan Anda.

Dalam contoh saya, saya menghapus halaman pertama PDF, dan kemudian saya perlu memperbarui bookmark untuk menunjuk ke lokasi yang benar.

  1. hapus halaman 1 dari in.pdf:

    pdftk A=in.pdf cat A2-end output temp.pdf
    
  2. buat file in.info dari in.pdf:

    pdftk in.pdf dump_data > in.info
    
  3. in.info perlu diperbaiki dalam kasus saya, karena saya akan menghapus halaman.

    Jadi, saya perlu mengurangi BookmarkPageNumber sebanyak satu agar bookmark mengarah ke halaman yang benar.

    kode php:

    $file = "in.info";
    $data = file_get_contents($file);
    
    foreach (explode("\n", $data) as $row) {
        $tmp = explode(": ", $row);
    
        if ($tmp[0] == "BookmarkPageNumber") {
            if ($tmp[1] != "1") $tmp[1]--;
            echo $tmp[0].": ".$tmp[1]."\n";
        } else {
            echo $row."\n";
        }
    }
    
  4. buat final out.pdf:

    pdftk temp.pdf update_info in2.info output out.pdf
    

diuji bekerja pada debian menggunakan pdftk 2.01

Martin Olika
sumber
1
Bekerja untuk saya juga. Mungkin Anda bisa menambahkan petunjuk tentang cara menjalankan skrip Anda (tidak tahu bagaimana ...) atau menambahkan skrip python:#!/usr/bin/python output = open('res.info','w') with open('temp.info','r') as f: for line in f: if line.startswith("BookmarkPageNumber"): output.write( "BookmarkPageNumber: "+ str(int(line.split()[1])+1)+"\n") else: output.write(line)
Vser
6

Yang perlu Anda lakukan pdftk in.pdf dump_data > in.info, lalu tambahkan update_infoparameter saat membuat out.pdf. Mengutip dari man pdftk:

update_info <info data filename | - | PROMPT>

Mengubah metadata yang disimpan dalam kamus Info PDF tunggal agar cocok dengan file data input. File data input menggunakan sintaksis yang sama dengan out-put dari dump_data. Karakter non-ASCII harus dikodekan sebagai entitas numerik XML. Ini tidak mengubah metadata yang disimpan dalam aliran XMP PDF, jika ada. Sebagai contoh:

             pdftk in.pdf update_info in.info output out.pdf

  update_info_utf8 <info data filename | - | PROMPT>

Sama seperti update_info kecuali bahwa input dikodekan sebagai UTF-8.

Philomath
sumber
Terima kasih! Bagaimana saya mendapatkan file ini "in.info"?
Tim
@Tim: diedit. Saya harap sudah jelas sekarang. Anda perlu menggunakan dump_data_utf8untuk update_info_utf8bekerja, tentu saja.
Philomath
3
Terima kasih! Itu masih tidak berhasil. Perintah saya dalam tiga langkah: pdftk in.pdf dump_data > in.info, pdftk in.pdf cat 1-22 43 23-42 44-end output out.pdfdan pdftk out.pdf update_info in.info output out1.pdfMasih ada bookmark di out1.pdf. `
Tim
@Tim Saya dapat mengonfirmasi bahwa ini memang tidak berfungsi. Apakah Anda menemukan solusi untuk hal ini?
Glutanimate
1
Pukat Google sepintas saya menunjukkan bahwa bookmark tidak ditangani sama sekali.
vonbrand
5

Membaca halaman manual dengan hati-hati, dikatakan bahwa update_infomengambil data dalam format apa pun yang dump_datadihasilkan. Itu mungkin harus disesuaikan sesuai dengan pengocokan halaman. Kedengarannya tidak mungkin , tetapi otomatis tidak.

Situs PDFtk hanya memberikan klik di atas dan membuat / mengedit bookmark sebagai hasilnya. Semua Google tahu tentang masalah bookmark dalam PDF dan reorganisasi, adalah hit pada operasi di atas dan eksposisi liris pada keajaiban yang mereka tawarkan, dan utas ini ;-).

Jadi sepertinya itu tidak bisa dilakukan. Komentar menyarankan beberapa kemungkinan, yang tidak berfungsi ketika dicoba.

vonbrand
sumber
1

"pdfmod" adalah alat grafis sederhana yang memungkinkan untuk menghapus satu atau halaman mode dari PDF yang ada. Itu hanya masalah beberapa klik. Ini juga menjaga informasi konten dan tautan silang dalam pdf.

"pdftk" berfungsi dengan baik dan saya telah menggunakannya untuk waktu yang lama tetapi saya kehilangan konten setelah menghapus satu atau dua halaman dari pdf. File pdf yang diuji dalam "pdftk" dan "pdfmod" dibuat dari openoffice.

https://apps.fedoraproject.org/packages/pdfmod

abhijit
sumber
pdfmodtampaknya lebih baik daripada pdftksaat melestarikan metadata. Perbedaan exiftoolkeluaran menunjukkan bahwa pdfmodmempertahankan metadata, tetapi pdftktidak mempertahankan semuanya, bahkan jika Anda menggunakan dump_data_utf8& update_info_utf8.
user1338062