Z przekazaniem projektu OpenOffice.org do Fundacji Apache, było wiele zgrzytów i niezadowolenia społeczności. Emocji dodaje również coraz większe oddalanie się od siebie LibreOffice i OpenOffice.org. Tymczasem ciekawy projekt – ODF Toolkit, trafił pod skrzydła Fundacji Apache. Jest to zestaw narzędzi oraz bibliotek napisanych w Javie, które służą do pracy z dokumentami ODF. Oprogramowanie to przeznaczone jest głównie dla programistów, którzy potrzebują wykonać dowolne operacje na dokumencie ODF. Potrafi ono manipulować treścią dokumentu, generować raporty, wyciągać informacje, czy sprawdzać poprawność dokumentu. Idealnie nadaje się do uruchomienia na serwerze.
W przeciwieństwie do zamkniętych formatów, ODF jest otwartym standardem i korzystając z wielu aplikacji, możemy swobodnie zapisywać i odczytywać tego typu dokumenty. Niestety pisanie oprogramowania, które to wykona jest ciężkim zadaniem. Dlatego tę czynność może wykonać ODF Toolkit, który bardzo upraszcza sprawę.
Generowanie przykładowego dokumentu
Do rozpoczęcia pracy będzie nam potrzebna Java 1.5 lub wyższa w wydaniu SDK (Software Development Kit). Pozostałe pliki jakie musimy pobrać to:
Po ściągnięciu i rozpakowaniu plików, kopiujemy je (odfdom-java-0.8.7.jar, simple-odf-0.6.6.jar, xercesImpl.jar
) do katalogu lib
w naszym projekcie. W katalogu z projektem tworzymy plik OSWorld.java i umieszczamy w nim kod:
[java]// Importujemy potrzebne klasy
import java.net.URI;
import org.odftoolkit.simple.TextDocument;
import org.odftoolkit.simple.table.Cell;
import org.odftoolkit.simple.table.Table;
import org.odftoolkit.simple.text.list.List;
import org.odftoolkit.simple.text.Paragraph;
import org.odftoolkit.simple.draw.Frame;
import org.odftoolkit.simple.draw.Image;
import org.odftoolkit.simple.style.StyleTypeDefinitions.*;
import org.odftoolkit.simple.draw.FrameStyleHandler;
import org.odftoolkit.simple.style.Font;
import org.odftoolkit.simple.style.StyleTypeDefinitions;
public class OSWorld {
public static void main(String[] args) {
TextDocument outputOdt;
try {
// Tworzymy nowy dokument tekstowy
outputOdt = TextDocument.newTextDocument();
// Dodajemy obrazek w pierwszym paragrafie
Paragraph para = outputOdt.getParagraphByIndex(0, false);
Image image = Image.newImage(para, new URI("osworld.png"));
// Ustawiamy jego tytuł oraz opis
image.setTitle("Lorem ipsum");
image.setDescription("Praesent faucibus tempor ultricies. Maecenas aliquet cursus leo.");
// Ustawiamy jego pozycję oraz zakotwiczenie na stronie
image.setVerticalPosition(FrameVerticalPosition.TOP);
FrameStyleHandler handler = image.getStyleHandler();
handler.setAchorType(AnchorType.AS_CHARACTER);
// Dodajemy kolejny paragraf
outputOdt.addParagraph("Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris congue neque eu tellus egestas fermentum. In magna libero, aliquet sagittis faucibus sed, malesuada vel odio. Donec consectetur volutpat pretium. Ut molestie iaculis rhoncus. Proin lobortis placerat ultricies. Etiam porttitor, justo at porttitor mattis, urna orci scelerisque dolor, non interdum dolor purus a neque. Nulla volutpat, dolor eu hendrerit venenatis, metus lectus tincidunt leo, mattis suscipit erat dui eu tortor. ");
// Ustalamy jego pozycję, pogrubienie.
Paragraph para1 = outputOdt.getParagraphByIndex(1, false);
Font font = para1.getFont();
font.setFontStyle(StyleTypeDefinitions.FontStyle.BOLD );
para1.setFont(font);
HorizontalAlignmentType align = para1.getHorizontalAlignment();
para1.setHorizontalAlignment(HorizontalAlignmentType.JUSTIFY);
outputOdt.addParagraph("");
outputOdt.addParagraph("Praesent faucibus tempor ultricies. Maecenas aliquet cursus leo, viverra malesuada turpis volutpat sed. Nam et mauris turpis, vel cursus dolor. Praesent ut consectetur risus. Nunc venenatis aliquam egestas. Donec vel justo dolor. Proin nec vehicula nisl. Mauris pulvinar laoreet metus, vitae lacinia augue eleifend vel. Nam consequat, quam non pretium convallis, quam libero lacinia nibh, non consectetur tellus enim consectetur ante. Phasellus leo purus, rhoncus sit amet ultricies eu, ultrices eu lorem. Duis ac sapien sit amet massa consequat ornare scelerisque at mauris. Ut nulla nunc, auctor a commodo ac, blandit non nisi.");
outputOdt.addParagraph("");
// Dodajemy listę pod koniec dokumentu
outputOdt.addParagraph("Lorem ipsum dolor sit amet:");
List list = outputOdt.addList();
String[] items = {"Suspendisse", "Phasellus", "Donec", "Quisque", "Praesent"};
list.addItems(items);
// Dodajemy tablekę
Table table = outputOdt.addTable(2, 2);
Cell cell = table.getCellByPosition(0, 0);
cell.setStringValue("Hello World!");
// Zapisujemy do pliku
outputOdt.save("OSWorld.odt");
} catch (Exception e) {
System.err.println("ERROR: unable to create output file.");
}
}
}[/java]
Teraz wystarczy skompilować i uruchomić projekt, a powinien zostać wygenerowany dokument OSWorld.odt:
javac -cp lib/odfdom-java-0.8.7.jar:lib/simple-odf-0.6.6.jar:lib/xercesImpl.jar:. OSWorld.java java -cp lib/odfdom-java-0.8.7.jar:lib/simple-odf-0.6.6.jar:lib/xercesImpl.jar:. OSWorld
Przykładowy kod oraz pliki z tego projektu dostępne są do pobrania z archiwum OSWorld-ODF.tar.gz.
Szczegółowe informacje na temat wykorzystania projektu dostępne są w oraz na stronie z przykładami.
> outputOdt.addParagraph("");
Ciekawe podeście do formatowania dokumentu ;)
No zwykłe…. tak jakby dać enter programie. So?
Raczej 2 entery. Jeden kończy pełny paragraf, a kolejny kończy pusty.
I tak się nie robi. Poprawnie ustalasz w stylu odstęp pomiędzy akapitami.
Potem przy takiej edycji są ciągle puste linie na początku strony, już nie mówiąc o utrudnianiu działania inteligentnych metod składania tekstu (np. niezostawianie jednej linii akapitu na poprzedniej stronie).
Nie no jasne, ale jak pisze podanie na uczelnię i klikam drukuj to nie bawie sie w takie pirdoły. Enter enter drukuj i skasowany plik.
Super, dokładnie czegoś takiego poszukiwałem. Dobra dokumentacja :)
ODF Toolkit to nie tylko Java, ale i inne technologie. Ze strony domowej:
Libraries for reading and writing ODF documents programmatically.
ODFDOM, Java
AODL, .NET ( C# )
Simple Java API for ODF, Java
http://odftoolkit.org/
Poza tym, jest też WebODF.
https://demo.webodf.org/demo/
Ale większość to Java a .NET wali microsoftem :)
Świetna sprawa. Można na stronie zamiast pdf generować dokument ODF :)
Można i jest to o tyle fajnie, że można wygenerować plik do edycji (np. jakieś podanie). Równie dobrze można zaczytać jakiś plik tekstowy, który zostanie sformatowany.
[…] rozwojem oprogramowania SmartSuite. Dzisiaj jest kontrybutorem w projekcie Apache OpenOffice oraz ODF Toolkit. Przewodzi także komitetowi technicznemu, który odpowiedzialny jest za rozwój standardu […]