Jak usunąć wszystkie obrazy z dokumentu w LibreOffice Writer?

10

Ubuntu 12.04

Chcę usunąć wszystkie obrazy z dokumentu w programie LibreOffice Writer. Mój dokument zawiera ~ 350 zdjęć. Czy istnieje sposób, aby usunąć je masowo, a nie pojedynczo? Próbowałem odznaczyć Narzędzia> Opcje> LibreOffice Writer> Widok> Wyświetlacz> „Grafika i obiekty”. Ale symbole zastępcze są nadal widoczne.

Edycja: Wiem o zapisywaniu strony jako zwykłego pliku tekstowego, ale potrzebuję formatowania w dokumencie.

Chella
źródło
@Chelia: Czy próbowałeś zapisać dokument jako plik tekstowy (w preferencjach „zapisz jako”)?
stephenmyall
Ale dlaczego odznaczanie „opcji> pisarz libreoffice> widok> Wyświetlanie>„ Grafika i obiekty ”„ nie działa? Próbowałem tego. Mi to pasuje. Po zaznaczeniu tego ustawienia przy następnym otwarciu dowolnego dokumentu z grafiką widzę tylko symbole zastępcze.
nadal będzie musiał usunąć symbole zastępcze @ vasa1 :)
Rinzwind
Prawdziwe! Ale nie jest jasne, jaki jest ostateczny cel ani dlaczego OP nie chce oglądać obrazów. Eksportowanie jako pliku tekstowego może zabić wiele formatowania.
dokładnie..! Utracę formatowanie, jeśli zapiszę je tylko z tekstem.
Chella

Odpowiedzi:

12

Możesz również użyć krótkiego makra z LibreOffice, aby usunąć wszystkie obrazy w dokumencie:

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

Ten przykład można również zmodyfikować, aby zmienić właściwości obrazów (np. Nadając im jednolity rozmiar), a także obsługiwać obiekty kształtów itp.

Tworzenie makr

LibreOffice zapewnia język podstawowy, a także w IDE do tworzenia, debugowania, przechowywania i uruchamiania kodu.

Aby otworzyć okno dialogowe makra, użyj Alt+ F11lub z menu Narzędzia > Makra > Organizuj makra > LibreOffice Basic

Kod jest umieszczony w modułach , które są zorganizowane w biblioteki . Możesz utworzyć własną, ale do większości celów możesz użyć wbudowanej biblioteki MyMacros i wbudowanego modułu Module1 .

Po otwarciu okna dialogowego makra podświetl Moduł1 i naciśnij Edytuj . To otworzy IDE.

Kod jest podzielony na podrzędne i funkcje. Pożyczając od VBA, funkcje są używane do zwracania wartości, a Subs nie zwracają wartości. Możesz zdefiniować własne subwoofery i funkcje w dowolnym miejscu poniżej Main. Aby użyć tego kodu do usunięcia obrazów, wystarczy wkleić go do modułu.

Korzystanie z makr

Możesz uruchomić kod bezpośrednio z IDE, klikając dowolne miejsce w Sub, które chcesz uruchomić i naciśnij F5. (Funkcje, ponieważ zwracają wartość, muszą być wywoływane z Sub.) Możesz również użyć przycisków dialogowych lub menu, aby uruchomić kod. IDE zawiera zintegrowany debugger, który ma kluczowe znaczenie podczas pisania nowego kodu.

Następnym razem, gdy otworzysz okno dialogowe makra, zobaczysz podrzędne podrzędne jako makro, a następnie można je uruchomić bez otwierania IDE. Poszczególne makra można również przypisać do elementów menu lub paska narzędzi.

Uwaga: To makro będzie działać na dowolnym aktywnym dokumencie. Podczas uruchamiania makra z menu lub okna dialogowego makr można założyć, że jest to dokument, w którym właśnie nacisnąłeś przycisk; ale korzystając z IDE do tworzenia, uruchamiania lub debugowania kodu, upewnij się, że inny dokument nie jest aktywnym dokumentem.

LibreOffice Basic

LibreOffice Basic jest bardzo podobny do VBA, ale to podobieństwo może być także mylące, ponieważ model obiektowy jest zupełnie inny, a składnia również ma wiele różnic.

Na przykład w języku VBA, gdy masz odwołanie do obiektu obrazu, obiekt obrazu będzie miał metodę usuwania. Tutaj obiekty mają lub dziedziczą bardzo niewiele metod. Aby usunąć obiekt obrazu, użyj elementu dokumentu o strukturze i składni bardzo podobnej do DOM opartej na przeglądarce.

Pomoc LibreOffice zawiera łącza do rozpoczęcia pracy z LibreOffice Basic.

kolby
źródło
Jeśli nie jest to zbyt duży problem, może być przydatna krótka instrukcja, jak faktycznie przekonwertować kod na makro. Biorąc pod uwagę wszystkie wątpliwości związane z Javą, ludzie powinni również wiedzieć, że środowisko JRE jest potrzebne, aby umożliwić działanie makr. Miejmy nadzieję, że LibreOffice w końcu będzie wolne od Java.
Geniusz. :) I nadal działa w LibO Writer 5.1, warto dodać.
Dɑvïd
5

Zakładam, że tekst dokumentu jest sformatowany i że zapisywanie go jako tekstu nie jest idealne. W takim przypadku można przyjąć nieco zbyt długie podejście:

  • Utwórz folder tymczasowy.

  • Normalnie otwórz dokument w LibreOffice.

  • Wybierz Save Asi tutaj wybierz HTML Document (Writer) (.html)jako format.

    • Określ także folder tymczasowy dla miejsca docelowego i nadaj proponowanemu plikowi HTML odpowiednią nazwę. Zgadzam się Save as htmli nie format ODT w następnym ekranie.
  • Zamknij LibreOffice.

  • Otwórz folder tymczasowy utworzony powyżej. Powinieneś zobaczyć jeden plik HTML i kilka zdjęć.

    • Usuń obrazy, jeśli nie są już potrzebne.
  • Następnie otwórz .htmlplik w odpowiednim edytorze tekstu, aby usunąć tagi, które w przeciwnym razie, jeśli pozostawione, spowodują luki w dokumencie.

    • Na przykład w Geany użyłem <IMG SRC="[^>]+>jako wyrażenia wyszukiwania i nic w polu „zamień na”.

geany

  • Zapisz plik .html. Teraz, podczas przeglądania w przeglądarce lub nawet w LibreOffice, nie będzie żadnych obrazów, żadnych symboli zastępczych, tylko sformatowany tekst.

Edycja: Zamiast używać edytora tekstowego opartego na graficznym interfejsie użytkownika, zakładając, że znajduje się on w odpowiednim folderze i taka cli.htmljest nazwa nadana podczas zapisywania htmlw LibreOffice, można po prostu użyć wiersza poleceń w ten sposób:

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

Plik kopii zapasowej cli.html.bakjest tworzony na wszelki wypadek ...


źródło