0 votos

¿Mantener el copy/paste y la TOC en el PDF convertido desde el ebook?

Para la investigación, a menudo convierto libros electrónicos sin DRM a PDF utilizando Calibre. El PDF resultante tiene una TOC con enlaces que funcionan. Sin embargo, no se puede buscar en Vista Previa, y al copiar y pegar aparecen espacios en blanco, incluso al pegar en TextEdit o nValt.

(Adobe Acrobat puede buscar, copiar/pegar el PDF y la TOC funciona, pero yo uso muchas herramientas que utilizan los marcos PDF de Apple, así que me gustaría resolver esto).

Para que se pueda buscar y copiar, paso el PDF por Ghostscript utilizando estos comandos:

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

Esto genera un nuevo PDF que se puede buscar y copiar/pegar correctamente. Sin embargo, elimina los enlaces de la TOC.

¿Hay alguna forma de convertir el PDF para que conserve los enlaces de la TOC y también para que se puedan hacer búsquedas y para que funcione el copiar/pegar?

0 votos

Hmm. Cuando paso un PDF que contiene un índice por GS, los marcadores se conservan. ¿Qué pasa si vuelves a guardar el PDF 'en blanco' en Vista Previa? Pasarlo por PDFKit a veces puede 'arreglar' problemas con Vista Previa.

0 votos

Volver a guardar en Vista Previa no ha cambiado nada, pero gracias por la sugerencia.

-1voto

benwiggy Puntos 8

Supongo que lo primero sería investigar la salida de PDF de Calibre para ver si cumple con las especificaciones, y si tiene opciones que Preview podría preferir.

Ghostscript normalmente debería conservar los marcadores y otras anotaciones. Tal vez se puede establecer explícitamente -dPDFSETTINGS=/default .?

Ver la respuesta larga aquí sobre el uso de GS:

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

Si eso no funciona, puedes usar este script de Python, que copiará los Marcadores de un PDF a otro. Tenga en cuenta que sobrescribirá el PDF de destino.

#!/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 votos

¿Algún motivo en particular para la votación a la baja?

0 votos

-dPDFSETTINGS=/default no funcionó, tampoco la configuración de ebooks. No he tenido tiempo de probar con Python script. Gracias por la ayuda.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X