Dengan mendapatkan metadata dari beberapa file pdf dengan bookmark pdftk
, saya mengamati format bookmark dalam pdf metadata. Jadi saya menduga bahwa dengan pdftk
, dimungkinkan untuk menambah dan mengedit bookmark file pdf.
Berikut tiga langkah yang saya ikuti:
- Saya pertama-tama mendapatkan metadata (termasuk bookmark jika ada) dari file pdf ke dalam file teks oleh
pdftk in.pdf dump_data > in.info
. Selanjutnya saya menambahkan beberapa penanda ke file teks metadata
in.info
, mengubahnya dariInfoKey: Creator InfoValue: PScript5.dll Version 5.2 InfoKey: Title InfoValue: SSReader Print. InfoKey: Producer InfoValue: Acrobat Distiller 7.0 (Windows) InfoKey: Author InfoValue: Administrator InfoKey: ModDate InfoValue: D:20050605073244+08'00' InfoKey: CreationDate InfoValue: D:20050605073244+08'00' PdfID0: 591a87c91dc76881fdf2ccf3811e72a5 PdfID1: 6b6ab11de8824e438e4f5eb1d85ec72 NumberOfPages: 400 PageLabelNewIndex: 1 PageLabelStart: 1 PageLabelNumStyle: DecimalArabicNumerals
untuk
InfoKey: Creator InfoValue: PScript5.dll Version 5.2 InfoKey: Title InfoValue: SSReader Print. InfoKey: Producer InfoValue: Acrobat Distiller 7.0 (Windows) InfoKey: Author InfoValue: Administrator InfoKey: ModDate InfoValue: D:20050605073244+08'00' InfoKey: CreationDate InfoValue: D:20050605073244+08'00' PdfID0: 591a87c91dc76881fdf2ccf3811e72a5 PdfID1: 6b6ab11de8824e438e4f5eb1d85ec72 NumberOfPages: 400 BookmarkBegin BookmarkTitle: Front cover BookmarkLevel: 1 BookmarkPageNumber: 1 BookmarkBegin BookmarkTitle: About the Author BookmarkLevel: 1 BookmarkPageNumber: 5 BookmarkBegin BookmarkTitle: Title page BookmarkLevel: 1 BookmarkPageNumber: 6 BookmarkBegin BookmarkTitle: Copyright page BookmarkLevel: 1 BookmarkPageNumber: 7 BookmarkBegin BookmarkTitle: Foreword BookmarkLevel: 1 PageLabelNewIndex: 1 PageLabelStart: 1 PageLabelNumStyle: DecimalArabicNumerals
- Kemudian saya mencoba mengembalikan metadata yang sudah diedit ke file pdf
pdftk in.pdf update_info in.info output out.pdf
.
Tetapi ketika saya membuka file pdf baru out.pdf
di evince atau adobe reader, tidak ada bookmark di file pdf baru.
Jika saya mendapatkan metadata dari baru file pdf out.pdf
oleh pdftk out.pdf dump_data > out.info
, tidak akan ada bookmark di out.info
. Sepertinya bookmark tidak berhasil ditambahkan.
Saya bertanya-tanya apakah ada beberapa kesalahan? Bagaimana saya harus menambah dan mengedit bookmark file pdf, tidak harus dengan pdftk?
Jawaban:
Sepertinya dari versi 1.45 (2012-12-06), pdftk memungkinkan modifikasi bookmark melalui perintah update_info:
via: http://www.pdflabs.com/docs/pdftk-version-history/
sumber
BookmarkBegin
tag sebelum setiap entri bookmark hilang.jPDFtweak (Java, jadi berjalan di Unix / Linux) dapat mengubah bookmark, tapi saya tidak tahu apakah Anda bisa skrip apa pun dengan itu.
Untuk skrip, saya kira satu-satunya pilihan Unix / Linux asli Anda akan pdflatex dengan paket pdfpages. Tapi itu kurva belajar jika Anda belum menjadi pengguna LaTeX.
EDIT: Sebenarnya mungkin dengan ghostscript: Lihat di sini atau di sini atau di sini
sumber
Jika Anda tetap menggunakan skrip unix itu, maka
pdftk
gs
diterima.gs
skrip untuk menggabungkannya dengan pdfmarksLihatlah http://blog.tremily.us/posts/PDF_bookmarks_with_Ghostscript/ skrip
pdf-merge.py
melakukan persis apa yang Anda (atau saya) inginkan.pdf-merge.py --output=merged.pdf input1.pdf input2.pdf
Beberapa perbaikan kecil dapat dilakukan dalam skripnya
Bagaimanapun, itu harus bekerja
sumber
pdftk jelas merupakan alat yang tepat (dengan sintaks yang tepat):
sumber
Caleb,
Sejauh yang saya mengerti, bookmark sesuai spesifikasi PDF tidak dapat disuntikkan melalui alat diagnostik seperti
pdftk
. Memperbarui metadata untuk merujuk ke bab dan penanda jangkar pendaratan yang tidak ada pasti tidak akan berfungsi, bahkan mungkin membuat PDF Anda tidak konsisten atau tidak dapat dibuka.Saya akhirnya menggunakan pustaka java + iText untuk melakukan apa yang Anda sarankan sesuai tutorial ini , tapi kami berhadapan dengan ratusan pdf setiap hari, jadi itu perlu otomatis. Jika Anda melakukan sekali saja, Adobe Acrobat harus dapat melakukan ini.
sumber
Untuk meringkas semua jawaban yang baik ini:
Ada proyek bmconverter di GitHub yang dapat mengonversi berbagai format bookmark PDF. Itu dapat mengkonversi output pdftk ke format jpdftweak, meskipun jika Anda akan menggunakan jpdftweak maka Anda tidak perlu mengkonversi output pdftk ke csv, karena Anda dapat melakukan semua pekerjaan dari dalam jpdftweak.
Sayangnya pdfmarks tidak didukung oleh proyek, tetapi untungnya seseorang memposting skrip dalam masalah bmconverter yang dapat mengubah output pdftk ke pdfmarks. Jadi opsi batch ghostscript adalah opsi
sumber
pdftk
Format bookmark agak membosankan untuk ditulis. Sebaliknya saya membuat naskah saya sendiri menggunakanbash
,sed
,pdftk
danpython3
. Lihat di repo ini: https://github.com/SiddharthPant/bookyJadi sekarang saya dapat membuat file teks (
bkmrks.txt
) seperti ini yang hanya membutuhkan 5 menit untuk menulis bahkan untuk pdf 1000 halaman.dan kemudian gunakan skrip saya
ini secara otomatis membuat pdf (
pdf_file_new.pdf
) yang memiliki bookmark saya di dalamnya.sumber
Cukup tambahkan
BookmarkBegin
sebelum setiap entri bookmark, seperti padasumber
Arahan ulang yang Anda gunakan pada langkah 1 akan menyebabkan update_info tidak berfungsi dengan benar. Anda perlu menentukan file output ke pdftk sebagai gantinya:
Lihat jawaban ini dari pertanyaan serupa: /programming//a/30308964/3158933
File yang saya buat menggunakan redirect memiliki ukuran file yang sedikit lebih besar dan menyebabkan pdftk mengeluarkan pesan "Peringatan: tak terduga 1 di LoadDataFile (); melanjutkan" saat menjalankan perintah update_info.
sumber