Come importare, esportare e modificare i segnalibri di un file pdf?


21

Ho sentito che i segnalibri di un file pdf sono memorizzati in testo normale da qualche parte nel file. Mi chiedevo se fosse possibile importare ed esportare i segnalibri di un file pdf in e da un file di testo, per l'elaborazione batch?

In caso affermativo, esiste una descrizione sulla sintassi per la modifica del file di testo contenente i segnalibri di un file pdf?

Speravo in soluzioni software gratuite per Ubuntu 10.10 e per Windows 7.

Grazie e saluti!

Risposte:


22

Esistono numerosi strumenti che possono estrarre i segnalibri da un pdf in un file di testo semplice e viceversa. Alcuni dei quali sono i seguenti:

Inoltre, ho uno script che può convertire tra i formati di molti di questi strumenti: bmconverter.py .

Un altro modo molto carino è quello di aggiungere segnalibri a un pdf tramite pdflatex .


13

Puoi usarlo pdftkper questo. Ulteriori informazioni: Come esportare e importare segnalibri PDF .

Esporta i segnalibri PDF dalla riga di comando in questo modo:

pdftk C:\Users\Sid\Desktop\doc.pdf dump_data output C:\Users\Sid\Desktop\doc_data.txt

Importa i segnalibri PDF da un file di dati come questo:

pdftk C:\Users\Sid\Desktop\doc.pdf update_info C:\Users\Sid\Desktop\doc_data.txt output C:\Users\Sid\Desktop\updated.pdf

pdftkil formato dei segnalibri è un po 'noioso da scrivere. Invece ho creato il mio script utilizzando bash, sed, pdftke python3. Dai un'occhiata a questo repository: https://github.com/SiddharthPant/booky

Quindi ora posso creare un file di testo ( bkmrks.txt) come questo che richiede solo 5 minuti per scrivere anche per un pdf di 1000 pagine.

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

e poi usa la mia sceneggiatura

./booky.sh pdf_file.pdf bkmrks.txt

questo crea automaticamente un pdf ( pdf_file_new.pdf) che contiene i miei segnalibri.

Funzionerà nei sistemi * nix se invece sei su un computer Windows. Quindi prima installa python3e pdftkusa semplicemente il booky.pyfile nel repository per convertirlo bkmrks.txtin pdftkformato compatibile

python3 booky.py < bkmrks.txt > output.txt

e quindi utilizzare il comando export per generare un file di dati scaricato. Rimuovi i segnalibri precedenti da quel file e inserisci il contenuto di output.txtinvece usando una semplice copia incolla. E quindi importare nuovamente quei dati.


4

Se hai una versione di un documento che ha dei segnalibri e vuoi copiarli, un modo molto più semplice è usare PDF-XChange Viewer (ho usato v2.5.211). Apri il PDF che ha i segnalibri (il PDF di origine), seleziona tutti i segnalibri nel riquadro dei segnalibri, copiali usando Ctrl + C, apri il PDF che non ha i segnalibri (il PDF di destinazione) e incollali (Ctrl + V) nel riquadro dei segnalibri di quel PDF. PDF-Xchange Viewer conserva le proprietà dei segnalibri come erano dal PDF di origine (inclusa qualsiasi formattazione in grassetto / corsivo sul testo del segnalibro). Se per qualche motivo alcune sezioni del PDF di destinazione sono inferiori o superiori a causa delle revisioni apportate al documento, è possibile fare clic sul segnalibro che necessita di correzione, scorrere fino a dove sulla pagina si desidera aprire il segnalibro, a destra- fai di nuovo clic sul segnalibro e fai clic su "Imposta destinazione". Ripeti quest'ultima parte come necessario per qualsiasi segnalibro offensivo. Salva il PDF di destinazione al termine.

Questo ha funzionato alla grande per me, è stato abbastanza intuitivo e ho finito in pochi minuti. Nel mio scenario particolare, un collega aveva prodotto un documento molto lungo usando Word per Mac che non aveva segnalibri. A causa della lunghezza del documento, volevo i segnalibri corrispondenti alla struttura del documento. Potrei ottenere Word per Windows per salvare il documento come PDF con segnalibri, ma alcune differenze di formattazione tra Word per Windows e Word per Mac hanno eliminato il conteggio delle pagine (in particolare, c'erano differenze nello spazio bianco attorno ai piè di pagina e differenze nello spazio tra figure e didascalia). Sono stato in grado di giocare con le intestazioni, i piè di pagina e le dimensioni delle figure per ottenere l'impaginazione corretta in Word per Windows, quindi salvato in PDF con segnalibri. Sfortunatamente,


1
+1 per PDF-Xchange. Meno strumenti più
merrier

1

Le specifiche per i file PDF sono disponibili in formato PDF scaricabile gratuitamente da Adobe o almeno l'ultima volta che ho verificato. Tuttavia, la maggior parte dei file PDF contiene la maggior parte dei dati comprimibili compressi. Probabilmente c'era una versione sostanzialmente semplice di PDF una volta, e in tal caso sarà ancora valida ora, ma effettivamente ottenere un file in quella forma potrebbe essere un problema.

Anche se non l'ho fatto, una possibilità molto probabile (se sei disposto a pagare) è quella di acquistare Acrobat Pro e utilizzare le capacità di scripting JavaScript integrate in tale applicazione. Per iniziare ...

http://acrobatusers.com/tutorials/2008/10/auto_bookmark_creation

Questo tutorial mostra come creare automaticamente i segnalibri usando Javascript in Acrobat 7.0 Pro (la versione inclusa in Creative Suite CS2). Anche se sta diventando un po 'vecchio, la stessa tecnica dovrebbe funzionare bene per le versioni più recenti.

Le applicazioni Adobe includono una libreria per leggere / scrivere file di testo usando Javascript (qualcosa che Javascript non ha come standard), quindi è possibile scrivere i propri script di importazione / esportazione, anche se non banali per renderli robusti.


Grazie! Esiste una versione Linux di Acrobat Pro?
Tim

Scusa, ne dubito moltissimo. AFAIK è una cosa Mac o Windows e è improbabile che Adobe supporti Linux, a meno che un numero enorme di professionisti creativi (1) non inizi a utilizzare quella piattaforma e (2) dimostrino di essere disposti a pagare un sacco di software proprietario invece di utilizzare FOSS alternative. Sembra improbabile. Per una soluzione gratuita, potresti provare una libreria come blog.rubypdf.com/2007/12/12/… (per Ruby). Ne so ancora meno: l'ho appena trovato su Google.
Steve314,

1

Per esportare i segnalibri, seguo un approccio diverso che richiede l'uso di Microsoft OneNote:

Apro il lettore PDF (utilizzo la versione gratuita di Foxit) con la struttura del segnalibro visibile e quindi, in OneNote, chiedo di scattare un'istantanea e seleziono la struttura del segnalibro Foxit.

Tornando a OneNote, seleziono l' opzione "Copia testo dall'immagine" (nel menu che appare dopo aver fatto clic con il pulsante destro del mouse sull'immagine dell'istantanea), e lo incollo sul lato per correggere il rientro (di solito con i punti elenco).


1

HandyOutline. 1 trascinamento, 1 clic, fatto. https://sourceforge.net/projects/handyoutlinerfo/ . Gratuito. Sottotitoli dei rientri. Non richiede alcun lettore / editor di PDF. Inoltre modifica, esporta tutti i dettagli in testo (copia in Word scrivi una macro per riordinarla in un documento Word completamente funzionale) o XML, ripagina, importa in PDF. Dev merita donazioni.

PDF-Xchange Editor (sostituito PDFViewer) segnalibri duplicati / persi casualmente esportati in testo

JPDF richiedeva Java, spazzatura di formattazione esportata, impossibile pulirla per ottenere solo i nomi

PDFtk mi ha fatto venire il mal di testa solo guardando le istruzioni

:-)


Adoro che questo esporti in XML, invece di un formato più idiosincratico. L'interfaccia di trascinamento della selezione per le esportazioni non potrebbe essere anche più semplice. Vorrei solo che potesse fare più di una volta.
Evan Donovan,

0

Ho trovato un'altra soluzione piuttosto "stupida" per copiare tutti i segnalibri in un PDF come testo da utilizzare altrove. In Acrobat Pro (per Mac OS) non è possibile selezionare tutti i segnalibri e copiarli / incollarli in un wordprocessor. Puoi comunque esportare l'intero PDF come file HTML con l'opzione "una sola pagina HTML + aggiungi il frame di navigazione basato sui segnalibri". Quindi apri l'HTML in un browser, seleziona tutto il testo nel riquadro di navigazione e copia / incolla un wordprocessor ...


0

Per leggere tutti i segnalibri da un PDF a un file di testo, è possibile utilizzare questo comando con pdftk:

pdftk input.pdf dump_data output output.txt

Ho quindi usato regex su Notepad ++ per rimuovere le parti extra. Di seguito ho sostituito con una stringa vuota (in ordine) e poi ho finito con un elenco di segnalibri (non dimenticare di sostituire usando regex nel tuo editor di testo):

BookmarkLevel.*
BookmarkPageNumber.*
BookmarkBegin.*
\n\s+\n

Se vuoi rimuovere i numeri, sostituisci questa espressione:

BookmarkTitle: A8.\d.\d+\s
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.