วิธีที่นำมาบอกนี้จะเป็นวิธีที่ใช้ eclipse ในการเขียนครับ
ขั้นแรกก็ให้ download eclipse มาก่อนจากนั้นสร้าง Java Project ธรรมดาๆ มาซัก Project ตั้งชื่อตามสะดวกจากนั้นก็ add external jar เข้ามาตามนี้
- juh.jar
- jurt.jar
- ridl.jar
- unoil.jar
- bootstrapconnector.jar สามารถ download ได้จาก ที่นี่
เมื่อ add jar เสร็จแล้วให้สร้าง Class มาซัก Class แล้วใส่ code ตามนี้เลยครับ
// connect to openoffice.org String exePath = "C:/Program Files/OpenOffice.org 3/program/"; XComponentContext xContext = BootstrapSocketConnector.bootstrap(exePath); com.sun.star.lang.XMultiComponentFactory xMFC = xContext.getServiceManager(); Object oDesktop = xMFC.createInstanceWithContext("com.sun.star.frame.Desktop", xContext); XComponentLoader xCLoader = (com.sun.star.frame.XComponentLoader) UnoRuntime.queryInterface(com.sun.star.frame.XComponentLoader.class, oDesktop); // create openoffice.org writer document XComponent document = xCLoader.loadComponentFromURL("private:factory/swriter", "_blank", 0, new PropertyValue[0]); XTextDocument xTextDocument = (XTextDocument) UnoRuntime.queryInterface(XTextDocument.class, document); XText xText = xTextDocument.getText(); // create paragraph cursor XParagraphCursor xParagraphCursor = (XParagraphCursor) UnoRuntime.queryInterface(XParagraphCursor.class, xText.createTextCursor()); // add some text xText.insertString(xText.getEnd(), "My First OpenOffice Document", false); // add style XPropertySet xPropertySet = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class, xParagraphCursor); xPropertySet.setPropertyValue("ParaStyleName", "Heading 1"); // add some text xText.insertString(xText.getEnd(), "rThis is the first line in my paragraph. Some more text, just to add some text to this document. ", false); xPropertySet.setPropertyValue("ParaStyleName", "Text body"); // Add another heading paragraph xText.insertString(xText.getEnd(), "rSecond heading", false); xPropertySet.setPropertyValue("ParaStyleName", "Heading 2"); // And another text body paragraph xText.insertString(xText.getEnd(), "rThis is the second normal paragraph.", false); xPropertySet.setPropertyValue("ParaStyleName", "Text body"); // save document XStorable xStorable = (XStorable) UnoRuntime.queryInterface(XStorable.class, document); PropertyValue[] storeProps = new PropertyValue[0]; xStorable.storeAsURL("file:///d:/first_document.odt", storeProps); // export document to pdf storeProps = new PropertyValue[1]; storeProps[0] = new PropertyValue(); storeProps[0].Name = "FilterName"; storeProps[0].Value = "writer_pdf_Export"; xStorable.storeToURL("file:///d:/first_document.pdf", storeProps); // close document XCloseable xcloseable = (XCloseable) UnoRuntime.queryInterface(XCloseable.class, document); xcloseable.close(false); } catch (Exception e) { e.printStackTrace(); } catch (BootstrapException e) { e.printStackTrace(); }
จริงๆ แล้ว bootstrap นั้นไม่จำเป็นต้องระบุ path ไปที่ soffice.exe ครับ แต่เนื่องจาก ผมลองใช้ bootstrap แบบธรรมดาแล้วไม่ work เลย search ดูจึงเจอ solution นี้ขึ้นมาแทนครับ
ตัวอย่างนี้สามารถเอาไป apply เป็นแบบอื่นๆ ได้อีกมากมายครับ
ที่มา www.it-eye.nl - openoffice.org forum
ไม่มีความคิดเห็น:
แสดงความคิดเห็น