Documentación de la API para las herramientas de modificación de libros electrónicos

Las herramientas de modificación de libros electrónicos consisten en un objeto calibre.ebooks.oeb.polish.container.Container que representa un libro como colección de archivos HTML y de recursos, y varias herramientas que pueden usarse para realizar diversas operaciones sobre el contenedor. Todas las herramientas están bajo la forma de funciones a nivel de módulo, en los distintos módulos calibre.ebooks.oeb.polish.*.

Se obtiene un objeto contenedor para un libro en una ruta como esta:

from calibre.ebooks.oeb.polish.container import get_container
container = get_container('Path to book file', tweak_mode=True)

Si está escribiendo un complemento para el editor de libros electrónicos, puede obtener el contenedor actual para el libro que se está modificando de este modo:

from calibre.gui2.tweak_book import current_container
container = current_container()
if container is None:
    report_error # No book has been opened yet

El objeto contenedor

class calibre.ebooks.oeb.polish.container.Container(rootpath, opfpath, log, clone_data=None)[fuente]

Un contenedor representa un libro electrónico abierto como una carpeta con archivos más un archivo opf. Hay varios conceptos importantes:

  • La carpeta raíz. Ésta es la base del libro electrónico. Todos los archivos del libro se encuentran en esta carpeta o en sus subcarpetas.

  • Nombres: Son rutas a los archivos del libro con respecto a la carpeta raíz. Siempre contienen separadores POSIX, sin comillas. Pueden considerarse como identificadores canónicos para los archivos del libro. La mayoría de los métodos en el objeto contenedor trabajan con nombres. Los nombres están siempre en la forma normalizada Unicode NFC.

  • Clones: el objeto contenedor soporta clonación eficiente en disco, que se utiliza para implementar hitos en el editor de libros electrónicos. Para que esto funcione, nunca se debe acceder a los archivos del sistema de archivos directamente. En su lugar, debe usarse raw_data() o open() para leer o escribir en los archivos que integran el libro.

Al convertir entre hrefs y nombres utilice los métodos suministrados por esta clase, éstos asumen que todas las hrefs están entre comillas.

abspath_to_name(fullpath, root=None)[fuente]

Convierte una ruta absoluta en un nombre canónico con respecto a root

Parámetros:

root – La carpeta base. De manera predeterminada se usa la raíz del objeto contenedor.

add_file(name, data, media_type=None, spine_index=None, modify_name_if_needed=False, process_manifest_item=None)[fuente]

Añade un archivo a este contenedor. Se crean automáticamente las entradas para el archivo en el manifiesto OPF y el lomo (si el archivo es un documento de texto)

add_name_to_manifest(name, process_manifest_item=None)[fuente]

Añade una entrada al manifiesto para un archivo con el nombre especificado. Devuelve el id del manifiesto.

add_properties(name, *properties)[fuente]

Añade las propiedades especificadas (properties) al elemento del manifiesto identificado por name.

apply_unique_properties(name, *properties)[fuente]

Se asegura de que las propiedades especificadas (properties) estás establecidas sólo en el elemento del manifiesto identificado por name. Pueda usarse None como name para eliminar la propiedad de todos los elementos.

book_type = 'oeb'

El tipo de libro (epub para archivos EPUB o azw3 para archivos AZW3)

commit(outpath=None, keep_parsed=False)[fuente]

Almacena todos los objetos procesados modificados en el sistema de archivos y escribe el archivo del libro en outpath.

Parámetros:
  • output – La ruta de acceso donde se escribe el archivo del libro. Si es None, se usa la ruta del archivo original.

  • keep_parsed – Si es True, la representación procesada de los elementos almacenados se mantiene en memoria.

commit_item(name, keep_parsed=False)[fuente]

Almacena un objeto procesado en el disco (se serializa y escribe en el archivo subyacente). Si keep_parsed es True la representación procesada se mantiene en el caché. Véase también: parsed()

dirty(name)[fuente]

Marca el objeto analizado correspondiente a nombre como sucio. Véase también parsed().

exists(name)[fuente]

True si y sólo si existe un archivo o carpeta que corresponde con el nombre canónico name. Tenga en cuenta que esta función sufre las limitaciones del sistema de archivos del sistema operativo subyacente, en particular la distinción o no entre mayúsculas y minúsculas. En un sistema de archivos que no distingue entre mayúsculas y minúsculas, esta función devuelve True incluso si name y el archivo en el sistema de archivos difieren en mayúsculas y minúsculas. Véase también has_name().

filesize(name)[fuente]

Devuelve el tamaño en bytes del archivo representado por el nombre canónico name. Gestiona automáticamente objectos procesados modificados. Véase también parsed().

generate_item(name, id_prefix=None, media_type=None, unique_href=True)[fuente]

Añade un elemento al manifiesto con href derivado del name dado. Asegura la unicidad del href y del id automáticamente. Devuelve el elemento generado.

get_file_path_for_processing(name, allow_modification=True)[fuente]

Parecido a open() pero devuelve una ruta de archivo en lugar de un objeto de archivo abierto.

property guide_type_map

Mapa de tipo de guía a nombre canónico

has_name(name)[fuente]

Devuelve True si y sólo si existe un archivo con el mismo nombre canónico que el name especificado. A diferencia de exists(), este método siempre distingue mayúsculas y minúsculas.

href_to_name(href, base=None)[fuente]

Convierte un href (relativo a base) a un nombre. base debe ser un nombre o None, en cuyo caso se usa self.root.

insert_into_xml(parent, item, index=None)[fuente]

Inserta item en parent (o lo añade al final si index es None), arreglando la sangría. Sólo funciona con elementos con cierre incorporado.

is_dir = False

Si este contenedor representa un libro descomprimido (un directorio)

Itera sobre todos los enlaces en name. Si get_line_numbers es True, los resultados producidos son de la forma (enlace, número_de_línea, desplazamiento). Donde «número_de_línea» es número de línea en el que aparece el enlace y «desplazamiente» es el número de caracteres desde el inicio de la línea. Tenga en cuenta que el desplazamiento puede de hecho abarcar varias líneas si no es cero.

make_name_unique(name)[fuente]

Se asegura de que name no existe ya en este libro. Si existe, devuelve una versión modificada que no exista.

manifest_has_name(name)[fuente]

Devuelve True si el manifiesto tiene una entrada correspondiente a name

property manifest_id_map

Correspondencia entre id del manifiesto y nombres canónicos

manifest_items_of_type(predicate)[fuente]

Los nombres de todos los elementos del manifiesto cuyo media-type coincide con predicate. predicate puede ser un conjunto, una lista, un texto o una función que toma un único argumento, que se ejecutará con el media-type.

manifest_items_with_property(property_name)[fuente]

Todos los elementos del manifiesto que tienen la propiedad especificada

property manifest_type_map

Correspondencia entre media-type del manifiesto y lista de nombres canónicos de cada media-type

property mi

Los metadatos de este libro como un objeto Metadata. Tenga en cuenta que este objeto se construye al vuelo cada vez que se solicita la propiedad, por lo que debe usarse con moderación.

name_to_abspath(name)[fuente]

Convierte un nombre canónico en una ruta de acceso absoluta acorde al sistema operativo

name_to_href(name, base=None)[fuente]

Convierte un nombre a un href relativo a la base, que debe ser un nombre o None, en cuyo caso self.root se toma como la base

property names_that_must_not_be_changed

Conjunto de nombres que nunca deben cambiarse. Depende del formato de archivo del libro electrónico.

property names_that_must_not_be_removed

Conjunto de nombres que nunca deben borrarse del contenedor. Depende del formato de archivo del libro electrónico.

property names_that_need_not_be_manifested

Conjunto de nombres que pueden estar ausentes del manifiesto. Depende del formato de archivo del libro electrónico.

open(name, mode='rb')[fuente]

Abre el archivo apuntado por name para lectura o escritura directa. Tenga en cuenta que esto almacenará el archivo si se modifica y lo eliminará del caché de procesamiento. Debe acabar con este archivo antes de acceder de nuevo a la versión procesada u ocurrirán cosas malas.

property opf

El archivo OPF analizado

opf_get_or_create(name)[fuente]

Método práctico que devuelve el primer elemento XML con el nombre especificado (name) o lo crea bajo el elemento opf:package y luego lo devuelve, si no existe previamente.

property opf_version

La versión establecida en el elemento <package> del OPF

property opf_version_parsed

La versión establecida en el elemento <package> del OPF, como una tupla de enteros

opf_xpath(expr)[fuente]

Método práctico para evaluar una expresión XPath en el archivo OPF, tiene los prefijos de espacio de nombres «opf:» y «dc:» predefinidos.

parsed(name)[fuente]

Devuelve una representación procesada del archivo especificado por name. Para archivos HTML y XML, devuelve un árbol lxml. Para archivos CSS devuelve una hoja de estilos css_parser. Tenga en cuenta que los objetos procesados se mantienen en caché para mejorar el rendimiento. Si hace algún cambio en el objeto procesado, debe ejecutar dirty() para que el contenedor sepa que tiene que actualizar el caché. Véase también replace().

raw_data(name, decode=True, normalize_to_nfc=True)[fuente]

Devuelve el contenido en bruto correspondiente al archivo especificado por su name

Parámetros:
  • decode – Si es True y el archivo tiene un tipo MIME basado en texto, lo descodifica y devuelve un objeto unicode en lugar de bytes en bruto.

  • normalize_to_nfc – Si es True el objeto Unicode devuelto se normaliza a la norma NFC, como requieren los formatos de archivo EPUB y AZW3.

relpath(path, base=None)[fuente]

Convierte una ruta absoluta (con separadores de sistema operativo) a una ruta relativa a base (de manera predeterminada, self.root). La ruta relativa no es un nombre. Use abspath_to_name() para obtener un nombre.

remove_from_spine(spine_items, remove_if_no_longer_in_spine=True)[fuente]

Elimina los elementos especificados (por nombre canónico) del lomo. Si remove_if_no_longer_in_spine es True, los elementos también se borran del libro, no sólo del lomo.

remove_from_xml(item)[fuente]

Elimina item del elemento superior, arreglando la sangría (sólo funciona con elementos con cierre incorporado)

remove_item(name, remove_from_guide=True)[fuente]

Elimina el elemento identificado por name de este contenedor. Esto elimina todas las referencias al elemento del manifiesto, guía y lomo del OPF, así como de cualquier caché interno.

rename(current_name, new_name)[fuente]

Cambia el nombre de un archivo de current_name a new_name. Cambia automáticamente la base de todos los enlaces en el archivo si cambia la carpeta en que se encuentra el archivo. Tenga en cuenta, no obstante, que no se actualizan los enlaces en otros archivos que puedan hacer referencia a éste. Esto es así por motivos de rendimiento, tales actualizaciones deben hacerse una sola vez en masa.

replace(name, obj)[fuente]

Sustituye el objeto procesado correspondiente a name por obj, que debe ser un objeto similar, es decir, un árbol lxml para archivos HTML o XML o una hoja de estilos css_parser para archivos CSS.

Sustituye todos los enlaces en name usando replace_func, que debe ser un objeto ejecutable que acepte un URL y devuelva el URL sustituido. También debe tener un atributo replaced que sea True si se ha efectuado alguna sustitución. Pueden crearse tales objetos ejecutables de forma práctica usando las clases LinkReplacer y LinkRebaser.

serialize_item(name)[fuente]

Convierte un objeto analizado (identificado por su nombre canónico) en una cadena de bytes. Vea parsed().

set_spine(spine_items)[fuente]

Establece el lomo como spine_items, donde spine_items es un objeto iterable de la forma (nombre, lineal). Se producirá un error si alguno de los nombres no está presente en el manifiesto.

property spine_items

Un iterador que proporciona la ruta de acceso para cada elemento del lomo de los libros. Véase también: spine_iter y spine_items.

property spine_iter

Un iterador que proporciona elemento, nombre, es_lineal para cada elemento del lomo de los libros. elemento es el elemento lxml, nombre es el nombre canónico del archivo y es_lineal es True si el elemento es lineal. Véase también: spine_names y spine_items.

property spine_names

Un iterador que proporciona nombre y es_lineal para cada elemento del lomo de los libros. Véase también: spine_iter y spine_items.

Gestionar los archivos dentro de un contenedor

Sustituye enlaces a archivos en el contenedor. Iterará sobre todos los archivos en el contenedor y cambiará los enlaces especificados en ellos.

Parámetros:
  • link_map – Un mapa de nombre canónico antiguo a nombre canónico nuevo. Por ejemplo: {'images/antiguo.png': 'images/nuevo.png'}

  • frag_map – Un objeto ejecutable que toma dos argumentos (name, anchor) y devuelve un punto de anclaje. Esto es útil si tiene que cambiar los puntos de anclaje en archivos HTML. De manera predeterminada, no hace nada.

  • replace_in_opf – Si es False, no se sustituyen los enlaces en el archivo OPF.

calibre.ebooks.oeb.polish.replace.rename_files(container, file_map)[fuente]

Cambia el nombre de archivos en el contenedor, actualizando automáticamente actualizando todos los enlaces a que apunten a ellos.

Parámetros:

file_map – Un mapo de nombres canónicos antiguo a nombre canónico nuevo, por ejemplo: {'text/capitulo1.html': 'capitulo1.html'}.

Devuelve las carpetas recomendadas para los nombres de archivo dados. La recomendación se basa en dónde se encuentra la mayoría de los archivos del mismo tipo en el contenedor. Si no hay archivos de un tipo concreto, la carpeta recomendada es la que contiene el archivo OPF.

Presentación mejorada y corrección automática de errores

calibre.ebooks.oeb.polish.pretty.fix_html(container, raw)[fuente]

Corrige cualquier error de procesado en el HTML representado como un texto en raw. La corrección se realiza usando el algoritmo de procesado HTML5.

calibre.ebooks.oeb.polish.pretty.fix_all_html(container)[fuente]

Corrige cualquer error de procesado en todos los archivos HTML del contenedor. La corrección ser realiza usando el algoritmo de procesado HTML5.

calibre.ebooks.oeb.polish.pretty.pretty_html(container, name, raw)[fuente]

Redistribuye el HTML representado como un texto en raw

calibre.ebooks.oeb.polish.pretty.pretty_css(container, name, raw)[fuente]

Redistribuye el CSS representado como un texto en raw

calibre.ebooks.oeb.polish.pretty.pretty_xml(container, name, raw)[fuente]

Redistribuye el XML representado como un texto en raw. Si name es el nombre del OPF, se realiza una redistribución adicional específica para OPF.

calibre.ebooks.oeb.polish.pretty.pretty_all(container)[fuente]

Redistribuye todos los archivos HTML, CSS y XML del contenedor

Gestionar las sobrecubiertas de los libros

calibre.ebooks.oeb.polish.jacket.remove_jacket(container)[fuente]

Elimina una sobrecubierta existente, si la hay. Devuelve False si no se encontró una sobrecubierta.

calibre.ebooks.oeb.polish.jacket.add_or_replace_jacket(container)[fuente]

Crea una nueva sobrecubierta a partir de los metadatos del libro o sustituye una sobrecubierta existente. Devuelve True si se sustutuyó una sobrecubierta existente.

Dividir y combinar archivos

calibre.ebooks.oeb.polish.split.split(container, name, loc_or_xpath, before=True, totals=None)[fuente]

Divide el archivo especificado por name en la ubicación especificada por loc_or_xpath. La división migra automáticamente todos los enlaces y referencias a los archivos afectados.

Parámetros:
  • loc_or_xpath – Debería ser una expresión XPath como «//h:div[@id=»dividir_aqui»]». También puede ser un loc, que se usa internamente para ejecutar la división en el panel de vista previa.

  • before – Si es True, la división ocurre antes del elemento identificado, en caso contrario ocurre después.

  • totals – Usado internamente

calibre.ebooks.oeb.polish.split.multisplit(container, name, xpath, before=True)[fuente]

Divide el archivo especificado en múltiples ubicaciones (todas las etiquetas que coincidan con la expresión XPath especificada). Véase también split(). La división migra automáticamente todos los enlaces y referencias a los archivos afectados.

Parámetros:

before – Si es True las divisiones se producen antes del elemento identificado, en caso contrario se producen después.

calibre.ebooks.oeb.polish.split.merge(container, category, names, master)[fuente]

Combina los archivos especificados en un único archivo, migrando automáticamente todos los enlaces y referencias a los archivos afectados. Los archivos deben ser todos HTML o todos CSS.

Parámetros:
  • category – Debe ser 'text' para archivos HTML o 'styles' para archivos CSS

  • names – La lista de archivos para combinar.

  • master – Cuál de los archivos combinados es el archivo maestro, es decir, el archivo que se mantendrá después del proceso.

Gestionar portadas

calibre.ebooks.oeb.polish.cover.set_cover(container, cover_path, report=None, options=None)[fuente]

Establece la imagen a la que apunta cover_path como la portada del libro.

Parámetros:
  • cover_path – La ruta absoluta a un archivo de imagen o el nombre canónico de una imagen en el libro. Si usa una imagen del libro, debe especificar también options, ver más abajo.

  • report – Un objeto ejecutable opcional que toma un solo argumento. Se ejecutará con información sobre las tareas que se llevan a cabo.

  • options – None o un diccionario que controla cómo se establece la portada. El diccionario puede tener entradas: keep_aspect: True o False (mantiene la proporción de las portadas en EPUB) no_svg: True o False (Usa un envoltorio de portada SVG en la página de título EPUB) existing: True o False (cover_path se refiere a una imagen existente en el libro)

calibre.ebooks.oeb.polish.cover.mark_as_cover(container, name)[fuente]

Marca la imagen especificada como la imagen de portada.

calibre.ebooks.oeb.polish.cover.mark_as_titlepage(container, name, move_to_start=True)[fuente]

Marca el archivo HTML especificado como la página de título del EPUB.

Parámetros:

move_to_start – Si es True, el archivo HTML se mueve al inicio del lomo

Trabajar con CSS

calibre.ebooks.oeb.polish.fonts.change_font(container, old_name, new_name=None)[fuente]

Cambia un tipo de letra de old_name a new_name. Modifica todas las ocasiones en que aparece el tipo de letra en hojas de estilo, etiquetas estilo y atributos de estilo. Si old_name se refiere a un tipo de letr incrustado, se elimina. Puede establecer new_name como None para eliminar el tipo de letra en lugar de cambiarlo.

calibre.ebooks.oeb.polish.css.remove_unused_css(container, report=None, remove_unused_classes=False, merge_rules=False, merge_rules_with_identical_properties=False, remove_unreferenced_sheets=False)[fuente]

Elimina todas las reglas CSS no utilizadas en el libro. Una regla CSS sin usar es una que no coincide con ningún contenido real.

Parámetros:
  • report – Un objeto ejecutable opcional que toma un único argumento. Se ejecuta con información sobre las operaciones que se lleva a cabo.

  • remove_unused_classes – Si es True, también se eliminan los atributos de clase del HTML que no correspondan a ninguna regla CSS.

  • merge_rules – Si es True, se combinan las reglas con selectores idénticos.

  • merge_rules_with_identical_properties – Si es True, se combinan las reglas con propiedades idénticas.

  • remove_unreferenced_sheets – Si es True, se eliminan las hojas de estilos que no tienen referencias en otros archivos

calibre.ebooks.oeb.polish.css.filter_css(container, properties, names=())[fuente]

Elimina las propiedades CSS especificadas de todas las reglas CSS del libro.

Parámetros:
  • properties – Conjunto de propiedades para eliminar. Por ejemplo: {'font-family', 'color'}.

  • names – Los archivos en los que se eliminan las propiedades. De manera predeterminada, todos los archivos HTML y CSS del libro.

Trabajar con el índice

calibre.ebooks.oeb.polish.toc.from_xpaths(container, xpaths, prefer_title=False)[fuente]

Genera un índice a partir de una lista de expresiones XPath. Cada expresión de la lista corresponde a un nivel del índice generado. Por ejemplo: ['//h:h1', '//h:h2', '//h:h3'] generará un índice de tres niveles a partir de las etiquetas <h1>, <h2> y <h3>.

Genera un índice a partir de los enlaces del libro.

calibre.ebooks.oeb.polish.toc.from_files(container)[fuente]

Genera un índice a partir de los archivos del libro.

calibre.ebooks.oeb.polish.toc.create_inline_toc(container, title=None)[fuente]

Crea un índice explícito (HTML) a partir de un índice NCX existente.

Parámetros:

title – El título de este índice.

Herramienta para modificar libro

class calibre.gui2.tweak_book.plugin.Tool[fuente]

Bases: object

La clase básica para las herramientas individuales en un complemento para modificar libros. Algunos miembros útiles incluyen:

Métodos que deben reemplazarse en subclases:

name = None

Especifique un nombre único que se utilizará como clave

allowed_in_toolbar = True

Si es True, el usuario puede colocar esta herramienta en la barra de herramientas de complementos

allowed_in_menu = True

Si es True, el usuario puede colocar esta herramienta en el menú de complementos

toolbar_button_popup_mode = 'delayed'

El modo emergente para el menú (si lo hay) del botón de la barra de herramientas. Los valores posibles son «delayed», «instant», «button»

property boss

El objeto calibre.gui2.tweak_book.boss.Boss. Utilizado para controlar la interfaz de usuario.

property gui

La ventana principal de la interfaz del usuario

property current_container

Devuelve el objeto calibre.ebooks.oeb.polish.container.Container actual que representa el libro que se está modificando.

register_shortcut(qaction, unique_name, default_keys=(), short_text=None, description=None, **extra_data)[fuente]

Registra un atajo de teclado que ejecutará la qaction especificada. Este atajo de teclado será automáticamente personalizable por el usuario a través de la sección Atajos de teclado de las preferencias del editor.

Parámetros:
  • qaction – Un objeto QAction, se ejecutará cuando el usuario pulse la combinación de teclas configurada.

  • unique_name – Un nombre único para este atajo o acción. Se usará internamente, no debe coincidir con ninguna otra acción de este complemento.

  • default_keys – Una lista de los atajos de teclado predeterminados. Si no se especifica, no se establecerá ningún atajo predeterminado. Si los atajos especificados están en conflicto on atajos predefinidos, con la configuración del usuario o con otros complementos, no se tendrán en cuenta. En tal caso, los usuarios tendrán que configurar los atajos manualmente a través de las Preferencias. Por ejemplo: default_keys=('Ctrl+J', 'F9').

  • short_text – Una breve descripción opcional de esta acción. Si no se especifica, se utilizará el texto de la QAction.

  • description – Una descripción opcional más extensa de esta acción, que se usará en la entrada de las preferencias para este acceso directo.

create_action(for_toolbar=True)[fuente]

Crea una QAction que se añadirá a la barra de herramientas de complementos, o al menú de complementos según el valor de for_toolbar. Por ejemplo:

def create_action(self, for_toolbar=True):
    ac = QAction(get_icons('myicon.png'), 'Do something')
    if for_toolbar:
        # We want the toolbar button to have a popup menu
        menu = QMenu()
        ac.setMenu(menu)
        menu.addAction('Do something else')
        subaction = menu.addAction('And another')

        # Register a keyboard shortcut for this toolbar action be
        # careful to do this for only one of the toolbar action or
        # the menu action, not both.
        self.register_shortcut(ac, 'some-unique-name', default_keys=('Ctrl+K',))
    return ac

Ver también

Método register_shortcut().

Controlar la interfaz de usuario del editor

La interfaz de usuario del editor de libros electrónicos está controlada por un único objeto global Boss. Este objeto posee varios métodos útiles que pueden utilizarse en el código de los complementos para realizar diversas tareas.

class calibre.gui2.tweak_book.boss.Boss(parent, notify=None)[fuente]
add_savepoint(msg)[fuente]

Crea un hito de restauración con el nombre especificado como msg

apply_container_update_to_gui(mark_as_modified=True)[fuente]

Actualiza todos los componentes de la interfaz para reflejar los datos más recientes del contenedor de libro actual.

Parámetros:

mark_as_modified – Si es True, el libro se marcará como modificado, por lo que al usuario se le pedirá guardarlo al salir.

close_editor(name)[fuente]

Cierra el editor que está modificando el archivo especificado por name

commit_all_editors_to_container()[fuente]

Almacena todos los cambios que el usuario haya hecho en los archivos abiertos en el contenedor. Debe ejecutar este método antes de realizar cualquier acción sobre el contenedor actual.

property currently_editing

Devuelve el nombre del archivo que está se está modificando actualmente o None si no se está modificando ningún archivo.

edit_file(name, syntax=None, use_template=None)[fuente]

Abre el archivo especificado por name en un editor

Parámetros:
  • syntax – El tipo de medio del archivo, por ejemplo: 'text/html'. Si no se especifica, se supone uno a partir de la extensión del archivo.

  • use_template – Una plantilla con la que inicializar el editor abierto

open_book(path=None, edit_file=None, clear_notify_data=True, open_folder=False, search_text=None)[fuente]

Abre el libro electrónico en path para modificarlo. Mostrará un error si el libro electrónico no está en un formato compatible o si el libro actual tiene cambios sin guardar.

Parámetros:

edit_file – El nombre de un archivo dentro del libro abierto para iniciar la modificación. También puede ser una lista de nombres.

rewind_savepoint()[fuente]

Deshace la creación anterior de un hito de restauración, útil si crea un hito y luego cancela la operación sin ningún cambio

save_book()[fuente]

Guarda el libro. El guardado se lleva a cabo en segundo plano

set_modified()[fuente]

Marca el libro como modificado

show_current_diff(allow_revert=True, to_container=None)[fuente]

Muestra los cambios en el libro desde el estado del último hito

Parámetros:
  • allow_revert – Si es True el cuadro de diferencias tendrá un botón que le permitirá al usuario deshacer los cambios

  • to_container – Un objeto de contenedor para compararlo con el contenedor actual. Si es None, se usará el contenedor del hito anterior.

show_editor(name)[fuente]

Muestra el editor que está modificando el archivo especificado por name

sync_preview_to_editor()[fuente]

Sincroniza la posición del panel de previsualización con la posición actual del cursor en el editor.