#java #image #openoffice.org #openoffice-writer
#java #изображение #openoffice.org #openoffice-writer
Вопрос:
Я пытаюсь создать документ openoffice writer из шаблона. Я могу заменить текстовые части отчета этим кодом
private static void searchAndReplace(final String search,
final String replace, final XTextDocument mxDoc) {
XReplaceable xReplaceable = (XReplaceable) UnoRuntime.queryInterface(
XReplaceable.class, mxDoc);
XReplaceDescriptor xRepDesc = xReplaceable.createReplaceDescriptor();
xRepDesc.setSearchString(search);
xRepDesc.setReplaceString(replace);
xReplaceable.replaceAll(xRepDesc);
}
Я нашел несколько примеров кода из here, чтобы связать или встроить изображение в xTextDocument.
Но я не могу вставить в xTextDocument. Есть ли какой-либо другой способ сделать это с помощью Java?
Версия Openoffice — 3.1.0.
Есть ответ?
Ответ №1:
Я нашел это здесь: https://svn.apache.org/repos/asf/openoffice/ooo-site/trunk/content/api/Examples/Snippets/Writer/Writer.Встроить графическое изображение в текстовый документ.снип
private void embedGraphic(GraphicInfo grProps,
XMultiServiceFactory xMSF, XTextCursor xCursor) {
XNameContainer xBitmapContainer = null;
XText xText = xCursor.getText();
XTextContent xImage = null;
String internalURL = null;
try {
xBitmapContainer = (XNameContainer) UnoRuntime.queryInterface(
XNameContainer.class, xMSF.createInstance(
"com.sun.star.drawing.BitmapTable"));
xImage = (XTextContent) UnoRuntime.queryInterface(
XTextContent.class, xMSF.createInstance(
"com.sun.star.text.TextGraphicObject"));
XPropertySet xProps = (XPropertySet) UnoRuntime.queryInterface(
XPropertySet.class, xImage);
// helper-stuff to let OOo create an internal name of the graphic
// that can be used later (internal name consists of various checksums)
xBitmapContainer.insertByName("someID", grProps.unoURL);
internalURL = AnyConverter.toString(xBitmapContainer
.getByName("someID"));
xProps.setPropertyValue("AnchorType",
com.sun.star.text.TextContentAnchorType.AS_CHARACTER);
xProps.setPropertyValue("GraphicURL", internalURL);
xProps.setPropertyValue("Width", (int) grProps.widthOfGraphic);
xProps.setPropertyValue("Height", (int) grProps.heightOfGraphic);
// inser the graphic at the cursor position
xText.insertTextContent(xCursor, xImage, false);
// remove the helper-entry
xBitmapContainer.removeByName("someID");
} catch (Exception e) {
System.out.println("Failed to insert Graphic");
}
}
Комментарии:
1. Спасибо за ваш ответ. Я нашел временное решение этой проблемы. Прошло много времени после устранения проблемы. Я попробую ваше решение и сообщу вам о результате.