Yer imlerini pdf’ye ekleme ve düzenleme


22

Yer imlerinin bulunduğu bazı pdf dosyalarından meta verileri alarak pdftk, yer imlerinin pdf meta verilerindeki biçimini gözlemlerim. Bu yüzden pdftkpdf dosyasının yer imlerini eklemek ve düzenlemek mümkün olduğunu tahmin ediyorum .

İşte izlemem gereken üç adım:

  1. Öncelikle bir pdf dosyasından meta veriyi (varsa yer işaretleri dahil) bir metin dosyasına alıyorum pdftk in.pdf dump_data > in.info.
  2. Daha sonra bazı yer imlerini meta veri metin dosyasına ekleyerek in.infoondan değiştiriyorum.

    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
    PageLabelNewIndex: 1
    PageLabelStart: 1
    PageLabelNumStyle: DecimalArabicNumerals
    

    için

    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
    
  3. Sonra düzenlenmiş meta verileri pdf dosyasına geri koymaya çalışıyorum pdftk in.pdf update_info in.info output out.pdf.

Ancak yeni pdf dosyasını out.pdfevince veya adobe okuyucuda açtığımda, yeni pdf dosyasında yer imi yoktur.

Meta verileri yeni pdf dosyasından out.pdfalırsam pdftk out.pdf dump_data > out.info, yer işareti eklenmez out.info. Yer imleri başarıyla eklenmemiş gibi görünüyor.

Bazı hatalar olup olmadığını merak ediyordum? Bir pdf dosyasının yer imlerini, mutlaka pdftk tarafından değil, nasıl ekler ve düzenlerim?


1
Bu küçük grafik aracı benim için çalıştı. (PDF Mod 0.9.1) apps.fedoraproject.org/packages/pdfmod
abhijit

Yanıtlar:


12

Bana göre 1.45 sürümünden (2012-12-06) geliyor, pdftk, update_info komutu ile yer imlerinin değiştirilmesine izin veriyor:

Artık PDF_ yer imlerini update_info kullanarak ekleyebilir veya değiştirebilirsiniz.

yoluyla: http://www.pdflabs.com/docs/pdftk-version-history/


3
Bu benim için çok iyi çalıştı. Biri, BookmarkBeginher yer imi girişi eksik olmadan önce etiketlerin üzerindeki giriş dosyasına eklenmelidir .
danielp

4

jPDFtweak (Java, Unix / Linux'ta çalışır) yer imlerini değiştirebilir, ancak onunla bir şey yazıp yazamayacağınızı bilmiyorum.

Komut dosyası yazmak için tek yerel Unix / Linux seçeneğinizin pdfpages paketiyle pdflatex olacağını tahmin ediyorum. Ama eğer zaten LaTeX kullanıcısı değilseniz, bu bir öğrenme eğrisidir.

EDIT: Aslında ghostscript ile mümkün olabilir: Buraya veya buraya veya buraya bakın


4

Eğer hala bu unix betiklerini kullanıyorsanız, o zaman

  1. 'dan atılan yer imi verilerini al pdftk
  2. dökülen yer imi verilerini, ghostscript komutunun gskabul ettiği pdfmarks biçimine dönüştürmek için fazladan bir komut dosyası yazınız .
  3. gsOnları pdfmarks ile birleştirmek için script kullanın

Bir göz atın http://blog.tremily.us/posts/PDF_bookmarks_with_Ghostscript/ komut pdf-merge.py(veya I) Tam olarak ne istediğimi yoktur.

pdf-merge.py --output=merged.pdf input1.pdf input2.pdf

Senaryosunda bazı küçük iyileştirmeler yapılabilir

  1. Unicode kullanımı
  2. yer imi dosyaları çıktı, böylece insanlar da ayarlayabilir

Neyse, çalışması lazım


Bir oy! Teşekkürler! Senaryonuzu dört gözle bekliyorum!
Tim

Bağlantı çalışmıyor görünüyor. Düzeltebilir misin lütfen?
Balık İzleyici

4

pdftk kesinlikle doğru araçtır (doğru sözdizimine sahip):

BookmarkBegin
BookmarkTitle: Chapter 1
BookmarkLevel: 1
BookmarkPageNumber: 1
BookmarkBegin
BookmarkTitle: Paragraph 1.1
BookmarkLevel: 2
BookmarkPageNumber: 1

2

Caleb,

Anladığım kadarıyla, PDF spesifikasyonuna göre yer imleri gibi bir teşhis aracıyla enjekte edilemiyor pdftk. Meta verileri, bölümlere ve var olmayan yer imi bağlantılarına yönlendirmek için kesinlikle çalışmaz, PDF'nizi tutarsız veya açılmaz hale getirebilir.

Sana göre söylüyoruz yapmak java + iText kütüphaneleri kullanarak sona erdi Bu eğitimde bunun otomatik gereken böylece, ama biz günlük pdf'lerden yüzlerce uğraşıyoruz. Bir defalık yapıyorsanız, Adobe Acrobat bunu yapabilmelidir.


2

Tüm bu iyi cevapları özetlemek için:

Orada bmconverter proje çeşitli PDF imi formatlarını dönüştürebilirsiniz GitHub'dan. Pdftk çıkışını jpdftweak formatına dönüştürebilir, ancak jpdftweak kullanacaksanız pdftk çıkışını csv'ye dönüştürmeniz gerekmeyecektir, çünkü tüm jpdftweak içinden tüm işleri yapabilirsiniz.

Maalesef pdfmarks proje tarafından desteklenmiyor, ama neyse ki birisi bmconverter konularında pdftk çıktısını pdfmarks'a dönüştürebilecek betiği yayınladı. Yani ghostscript toplu iş seçeneği bir seçenek


2

pdftkyer imi formatını yazmak biraz sıkıcı. Onun yerine kullanarak kendi komut dosyası oluşturulur bash, sed, pdftkve python3. Bu depoda kontrol edin: https://github.com/SiddharthPant/booky

Şimdi bkmrks.txt1000 sayfa pdf için bile yazmak sadece 5 dakika süren böyle bir metin dosyası ( ) oluşturabilirim .

{
  Title1, 1
  Title2, 2
  {
    Subtitle1, 3
    Subtitle2, 4
    {
      SubSubtitle1, 5
      ...
    }
  }
}

ve sonra betiğimi kullan

./booky.sh pdf_file.pdf bkmrks.txt

bu, yer imlerimde bulunan bir pdf ( pdf_file_new.pdf) öğesini otomatik olarak oluşturur .


1

Sadece BookmarkBeginher yer imi girişinden önce olduğu gibi ekleyin

BookmarkBegin
BookmarkTitle: Front cover
BookmarkLevel: 1
BookmarkPageNumber: 1
BookmarkBegin
    ⋮

0

1. adımda kullandığınız yönlendirme, update_info'nun düzgün çalışmamasına neden olur. Bunun yerine çıktı dosyasını pdftk olarak belirtmeniz gerekir:

pdftk in.pdf dump_data output in.info

Benzer soruya bu cevaba bakınız: /programming//a/30308964/3158933

Bir yeniden yönlendirme kullanarak oluşturduğum dosyaların biraz daha büyük bir dosya boyutu var ve pdftk, update_info komutunu çalıştırırken "Uyarı: Beklenmeyen durumda LoadDataFile (););

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.