PDF dosyasının sayfalarını pdftk gibi araçlarla yeniden düzenlerken yer işaretlerini nasıl koruyabilirim?


12

pdftkBir pdf dosyasının yer imleri / anahatları ile sayfaları yeniden düzenlemek için kullanıyorum , ancak bundan sonra çıktı dosyası orijinal yer imlerini kaybetti.

Benim emrim pdftk in.pdf cat 1-22 43 23-42 44-end output out.pdf.

Sayfaları yeniden düzenlerken yer imlerini nasıl tutabileceğimi merak ediyordum?

Yanıtlar:


10

İşte çalışan bir çözüm. Ancak, ihtiyaçlarınıza göre ayarlamanız gerekecektir.

Örneğimde bir PDF'nin ilk sayfasını kaldırdım ve ardından yer işaretlerini doğru konumlara işaret edecek şekilde güncellemem gerekiyordu.

  1. 1. sayfayı in.pdf dosyasından kaldır:

    pdftk A=in.pdf cat A2-end output temp.pdf
    
  2. in.pdf adresinden bir in.info dosyası oluşturun:

    pdftk in.pdf dump_data > in.info
    
  3. Bir sayfayı kaldıracağım için in.info benim durumumda düzeltilmesi gerekiyor.

    Böylece, yer imleri doğru sayfalara götürmek için BookmarkPageNumber bir azaltmak gerekir.

    php kodu:

    $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. final çıkışı oluştur.pdf:

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

pdftk 2.01 kullanarak debian üzerinde çalışma test


1
Benim için de çalıştı. Belki Senaryonu (hiçbir fikri nasıl ...) yürütmek için nasıl bir ipucu eklemek veya python komut dosyası ekleyebilirsiniz:#!/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

Yapmanız pdftk in.pdf dump_data > in.infove ardından update_infoparametreyi oluştururken parametreyi eklemeniz gerekir out.pdf. Alıntı man pdftk:

update_info <info data filename | - | PROMPT>

Tek bir PDF'nin Bilgi sözlüğünde depolanan meta verileri giriş veri dosyasıyla eşleşecek şekilde değiştirir. Girdi veri dosyası, dump_data çıktısıyla aynı sözdizimini kullanır. ASCII olmayan karakterler XML sayısal varlıkları olarak kodlanmalıdır. Bu, PDF'nin XMP akışında (varsa) depolanan meta verileri değiştirmez. Örneğin:

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

  update_info_utf8 <info data filename | - | PROMPT>

Girişin UTF-8 olarak kodlanması dışında update_info ile aynı.


Teşekkürler! Bu dosyayı "in.info" olarak nasıl edinebilirim?
Tim

@Tim: düzenlendi. Umarım şimdi açıktır. Sen kullanmak zorunda dump_data_utf8için update_info_utf8elbette işe.
Philomath

3
Teşekkürler! Hala çalışmıyor. Benim komutları üç adımda şunlardır: pdftk in.pdf dump_data > in.info, pdftk in.pdf cat 1-22 43 23-42 44-end output out.pdfve pdftk out.pdf update_info in.info output out1.pdfhiçbir imleri hala vardır out1.pdf. ``
Tim

@Tim Bunun gerçekten işe yaramadığını onaylayabilirim. Buna şans eseri herhangi bir çözüm buldunuz mu?
Glutanimate

1
Lanetli Google trollerim, yer işaretlerinin hiç ele alınmadığını gösteriyor.
vonbrand

5

Kılavuz sayfasını dikkatle okuduğunuzda, update_infohangi formatta olursa olsun veri alır dump_data. Bunun muhtemelen sayfa karmaşasına göre ayarlanması gerekecektir. Kulağa imkansız gelmiyor , ama otomatik değil.

Pdftk sitesi yalnızca yukarıda isabet ve / oluşturarak sonuçları gibi imlerini düzenleme verir. Tüm Google, PDF'deki yer imleri ve yeniden düzenleme konusunu biliyor, yukarıdaki operasyonlara isabet ediyor ve sundukları mucizelere lirik sergiler ve bu konu ;-).

Yani yapılamıyor gibi görünüyor. Yorumlar, denendiğinde işe yaramayan bazı olasılıkları gösteriyor.


1

"pdfmod" mevcut bir PDF'den bir veya mod sayfalarının kaldırılmasını sağlayan basit bir grafik araçtır. Sadece birkaç tıklamadan ibarettir. Ayrıca pdf'deki içerik bilgilerini ve çapraz bağlantıyı korur.

"pdftk" iyi çalışıyor ve uzun zamandır kullanıyordum ama pdf'den bir veya iki sayfa çıkardıktan sonra içeriği kaybediyordum. "Pdftk" ve "pdfmod" da test edilen pdf dosyaları openoffice'ten oluşturulur.

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


pdfmodpdftkmeta verileri korumaktan daha iyi görünüyor . Bir exiftoolçıktı farkı pdfmod, meta verileri koruyan ancak & pdftköğelerini kullansanız bile her şeyi korumadığını gösterir . dump_data_utf8update_info_utf8
user1338062
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.