0 votes

Conserver le copier/coller et la table des matières dans un PDF converti à partir d'un ebook ?

Pour mes recherches, je convertis souvent des ebooks sans DRM en PDF à l'aide de Calibre. Le PDF obtenu comporte une table des matières avec des liens fonctionnels. Cependant, il n'est pas possible d'y faire des recherches dans Aperçu, et le copier/coller donne lieu à des espaces blancs vides, même lorsqu'on le colle dans TextEdit ou nValt.

(Adobe Acrobat peut rechercher, copier/coller le PDF et la table des matières fonctionne, mais j'utilise de nombreux outils qui utilisent les cadres PDF d'Apple, et j'aimerais donc résoudre ce problème).

Pour le rendre consultable et copiable, je fais passer le PDF par Ghostscript en utilisant ces commandes :

gs -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile="output" "input"

Cela donne un nouveau PDF qui est consultable et qui peut être copié/collé correctement. Cependant, elle supprime les liens de la table des matières.

Existe-t-il un moyen de convertir le PDF pour qu'il conserve les liens de la table des matières, qu'il soit consultable et que le copier/coller fonctionne ?

0 votes

Hmm. Lorsque j'exécute un PDF qui contient une table des matières dans GS, les signets sont préservés. Que se passe-t-il si vous réenregistrez le PDF "vierge" dans Aperçu ? Le fait de le rincer avec PDFKit peut parfois " réparer " les problèmes avec Preview.

0 votes

Le réenregistrement dans l'aperçu n'a rien changé, mais merci pour la suggestion.

-1voto

benwiggy Points 21125

Je suppose que la première chose à faire serait d'examiner la sortie PDF de Calibre pour voir si elle est conforme aux spécifications, et si elle dispose d'options que Preview pourrait préférer.

Ghostscript devrait normalement préserver les signets et autres annotations. On peut peut-être définir explicitement -dPDFSETTINGS=/default . ?

Voir la longue réponse ici concernant l'utilisation de GS :

https://superuser.com/questions/466031/how-do-i-reduce-a-pdfs-size-and-preserve-the-bookmarks

Si cela ne fonctionne pas, vous pouvez utiliser ce script Python, qui copiera les signets d'un PDF à un autre. Notez qu'il écrasera le PDF de destination.

#!/usr/bin/python

# Copy PDF Table of Contents from one PDF to another.
# 
# copyOutlines.py <source file> <destination file>

from Foundation import  NSURL
import Quartz as Quartz
import sys

def copyOutlines(source, dest):
    pdfURL = NSURL.fileURLWithPath_(source)
    inPDF = Quartz.PDFDocument.alloc().initWithURL_(pdfURL)
    if inPDF:
        outline = Quartz.PDFOutline.alloc().init()
        outline = inPDF.outlineRoot()
    pdfURL = NSURL.fileURLWithPath_(dest)
    outPDF = Quartz.PDFDocument.alloc().initWithURL_(pdfURL)
    outPDF.setOutlineRoot_(outline)
    outPDF.writeToFile_(dest)   

if __name__ == '__main__':
    copyOutlines(sys.argv[1], sys.argv[2])

0 votes

Une raison particulière pour ce vote négatif ?

0 votes

-dPDFSETTINGS=/default n'a pas fonctionné, ni le paramètre ebooks. Je n'ai pas eu le temps d'essayer Python script. Merci pour votre aide.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X