Как удалить все изображения в документе в LibreOffice Writer?

10

Ubuntu 12.04

Я хочу удалить все изображения из документа в LibreOffice Writer. Мой документ содержит ~ 350 изображений. Есть ли способ их массового удаления, а не один за другим? Я пытался снять отметку Инструменты> Параметры> LibreOffice Writer> Вид> Показать> «Графика и объекты». Но заполнители все еще видны.

Изменить: я знаю о сохранении страницы в виде простого текстового файла, но мне нужно форматирование в моем документе.

Chella
источник
@Chelia: Вы пытались сохранить документ как текстовый файл (в настройках «сохранить как»)?
Стивенмолл
Но почему снятие галочки "options> libreoffice writer> view> Display>" Graphics and objects "" не работает? Я попробовал это. Меня устраивает. Когда этот параметр установлен, в следующий раз, когда я открываю любой документ с графикой, я просто вижу заполнители.
ему все еще нужно удалить заполнители @ vasa1 :)
Rinzwind
Правда! Но не ясно, какова конечная цель или почему ОП не хочет видеть изображения. Экспорт в виде текстового файла может убить много форматирования.
в точку..! Я потеряю все форматирование, если сохраню только текст.
Челла

Ответы:

12

Вы также можете использовать короткий макрос из LibreOffice для удаления всех изображений в документе:

Sub RemoveImages

   Dim oDoc as Object
   oDoc = ThisComponent

   Dim oGraphics as Object
   oGraphics = oDoc.getGraphicObjects()

   Dim oImg as Object

   For Each oImg in oGraphics
       oDoc.getText().removeTextContent(oImg)
   Next 

End Sub

Этот пример также можно изменить, чтобы изменить свойства изображений (например, сделать их все одинакового размера), а также обработать объекты формы и т. Д.

Создание макросов

LibreOffice предоставляет базовый язык, а также IDE для создания, отладки, хранения и запуска кода.

Чтобы открыть диалоговое окно макроса, используйте Alt+ F11или в меню Инструменты > Макросы > Упорядочить макросы > LibreOffice Basic.

Код размещается в модулях , которые организованы в библиотеки . Вы можете создать свой собственный, но для большинства целей вы можете использовать встроенную библиотеку MyMacros и встроенный модуль Module1 .

Как только диалоговое окно макроса открыто, выделите Module1 и нажмите Edit . Это открывает IDE.

Код организован в подпрограммы и функции. Заимствуя из VBA, функции используются для возврата значения, а подпрограммы не возвращают значение. Вы можете определить свои собственные сабвуферы и функции в любом месте ниже Main. Чтобы использовать этот код для удаления изображений, просто вставьте его в модуль.

Использование макросов

Вы можете запустить код прямо из IDE, щелкнув в любом месте внутри Sub, который вы хотите запустить, и нажмите F5. (Функции, так как они возвращают значение, должны вызываться из Sub.) Вы также можете использовать диалоговые кнопки или меню для запуска кода. IDE включает в себя встроенный отладчик, который имеет решающее значение при написании нового кода.

В следующий раз, когда вы откроете диалоговое окно макроса, вы увидите подпрограмму, перечисленную как макрос, и ее можно будет запустить без открытия IDE. Отдельные макросы также могут быть назначены элементам меню или панели инструментов.

Примечание: этот макрос будет работать на любом активном документе. При запуске макроса из меню или диалогового окна макроса это может быть документ, в котором вы только что нажали кнопку; но при использовании IDE для создания, запуска или отладки кода убедитесь, что вы не сделали другой документ активным документом.

LibreOffice Basic

LibreOffice Basic очень похож на VBA, но это сходство также может быть обманчивым, поскольку объектная модель совершенно другая и синтаксис также имеет много различий.

Например, в VBA, если у вас есть ссылка на объект изображения, у объекта изображения будет метод удаления. Здесь объекты имеют или наследуют очень мало методов. Чтобы удалить объект изображения, вы используете элемент документа со структурой и синтаксисом, очень похожим на DOM на основе браузера.

Справка LibreOffice содержит ссылки для начала работы с LibreOffice Basic.

chaskes
источник
Если это не так уж и сложно, может помочь небольшая инструкция о том, как на самом деле преобразовать код в макрос. Учитывая все крики о Java, люди также должны знать, что JRE необходим для работы макросов. Будем надеяться, что LibreOffice наконец-то станет свободным от Java.
Genius. :) И все еще работает в LibO Writer 5.1, возможно, стоит добавить.
Dɑvïd
5

Я предполагаю, что текст документа отформатирован, и сохранение в виде только текста не является идеальным. В этом случае можно использовать несколько более длинный подход:

  • Создайте временную папку.

  • Откройте документ в LibreOffice как обычно.

  • Выберите Save Asи выберите здесь HTML Document (Writer) (.html)в качестве формата.

    • Кроме того, укажите временную папку для назначения и дайте предлагаемому html-файлу подходящее имя. Согласитесь, Save as htmlа не формат odt на следующем экране.
  • Закройте LibreOffice.

  • Откройте временную папку, созданную выше. Вы должны увидеть один HTML-файл и кучу изображений.

    • Удалите изображения, если они больше не нужны.
  • Затем откройте .htmlфайл в соответствующем текстовом редакторе, чтобы удалить теги, которые в противном случае, если их оставить, могут вызвать пропуски в документе.

    • Например, в Geany я использовал <IMG SRC="[^>]+>в качестве поискового выражения и ничего в поле «заменить на».

Geany

  • Сохраните файл .html. Теперь при просмотре в браузере или даже в LibreOffice не будет изображений, заполнителей, только отформатированный текст.

Редактировать: вместо использования текстового редактора на основе графического интерфейса, предполагая, что он находится в соответствующей папке, и это cli.htmlимя дается при сохранении htmlв LibreOffice, можно просто использовать командную строку следующим образом:

perl -p -i.bak -e 's/<IMG[^>]+>//g' cli.html

Файл резервной копии, cli.html.bakсоздается на всякий случай ...


источник