Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > В чем оштбка в этом коде


Автор: JavaX 6.2.2009, 11:51
Я пытаю несколько раз вставить изображение в документ, он на первом заходе в цикле вставляет, затем выдает ошибку
Код

for (int i=0;i<5;i++){

            XTextContent xTextContent =(XTextContent)UnoRuntime.queryInterface(XTextContent.class, oGraphic );
            xText.insertTextContent(xTextCursor, xTextContent, true);
            XPropertySet xPropSet=(XPropertySet)UnoRuntime.queryInterface(XPropertySet.class, oGraphic);
        File GifFile = new java.io.File("c:/2.gif");
             StringBuffer sUrl = new StringBuffer("file:///");
             sUrl.append(GifFile.getCanonicalPath().replace('\\', '/')); 
             xPropSet.setPropertyValue( "AnchorType",TextContentAnchorType.AT_PARAGRAPH );
             xPropSet.setPropertyValue( "GraphicURL", sUrl.toString() );
             xPropSet.setPropertyValue( "HoriOrientPosition",new Integer( 5500 ) );
             xPropSet.setPropertyValue( "VertOrientPosition",new Integer( 4200 ) );
             xPropSet.setPropertyValue( "Width", new Integer( 4400 ) );
             xPropSet.setPropertyValue( "Height", new Integer(4000 ));

Автор: AntonSaburov 6.2.2009, 12:57
А текст ошибки не приводится ?

Автор: JavaX 6.2.2009, 13:01
Цитата(AntonSaburov @ 6.2.2009,  12:57)
А текст ошибки не приводится ?

Exception in thread "main" com.sun.star.uno.RuntimeException: 
    at com.sun.star.lib.uno.environments.remote.Job.remoteUnoRequestRaisedException(Job.java:182)
    at com.sun.star.lib.uno.environments.remote.Job.execute(Job.java:148)
    at com.sun.star.lib.uno.environments.remote.JobQueue.enter(JobQueue.java:344)
    at com.sun.star.lib.uno.environments.remote.JobQueue.enter(JobQueue.java:313)
    at com.sun.star.lib.uno.environments.remote.JavaThreadPool.enter(JavaThreadPool.java:101)
    at com.sun.star.lib.uno.bridges.java_remote.java_remote_bridge.sendRequest(java_remote_bridge.java:652)
    at com.sun.star.lib.uno.bridges.java_remote.ProxyFactory$Handler.request(ProxyFactory.java:154)
    at com.sun.star.lib.uno.bridges.java_remote.ProxyFactory$Handler.invoke(ProxyFactory.java:136)
    at $Proxy9.insertTextContent(Unknown Source)
    at oooReport.openDocument(oooReport.java:93)
    at oooReport.main(oooReport.java:112)
я так понимаю ему чтото ненравится в этих строчках
Код

XTextContent xTextContent =(XTextContent)UnoRuntime.queryInterface(XTextContent.class, oGraphic );    
            xText.insertTextContent(xTextCursor, xTextContent, true);

кликая на ошибки перенаправляет туда

Автор: Samotnik 7.2.2009, 04:51
JavaX,  У тебя ошибка времени выполнения, что-то куда-то не передалось, или передалось но не правильно, или еще ... вариантов много. 
Выложи либо весь код, либо самому то место,  продебажить нужно  smile 

Автор: JavaX 9.2.2009, 07:26
Цитата(Samotnik @ 7.2.2009,  04:51)
Выложи либо весь код

вот он кодик(несудить сильно покамись набросок )
Код

import com.sun.star.accessibility.*;
import com.sun.star.beans.*;
import com.sun.star.util.*;
import com.sun.star.lang.*;
import com.sun.star.text.*;
import com.sun.star.frame.*;
import com.sun.star.uno.UnoRuntime;
import com.sun.star.uno.XInterface;
import com.sun.star.uno.XComponentContext;
import com.sun.star.view.XLineCursor;
import com.sun.star.view.XSelectionSupplier;

import ooo.connector.*;
import java.io.*;
public class oooReport{

    static XComponentContext xRemoteContext = null;
    static XMultiComponentFactory xRemoteServiceManager = null;
    static XURLTransformer xTransformer = null;
    static XComponentLoader xComponentLoader = null;
    static XDesktop xDesktop = null;
    static Object oGraphic = null;
    static XText xText = null;
    
    public oooReport(){
    }
    public static void connect() throws Exception {
    xRemoteContext = BootstrapSocketConnector.bootstrap("C:/Program Files/OpenOffice.org 3/program");
    xRemoteServiceManager = xRemoteContext.getServiceManager();
    Object transformer = xRemoteServiceManager.createInstanceWithContext(
    "com.sun.star.util.URLTransformer", xRemoteContext );
    xTransformer = (XURLTransformer)UnoRuntime.queryInterface(
    XURLTransformer.class, transformer);
    Object desktop = (XInterface) xRemoteServiceManager.createInstanceWithContext(
    "com.sun.star.frame.Desktop", xRemoteContext);
    xDesktop = (XDesktop)UnoRuntime.queryInterface(
    XDesktop.class, desktop);
    xComponentLoader = (XComponentLoader)UnoRuntime.queryInterface(
    XComponentLoader.class, desktop);
}
    
    public static XComponent openDocument(String sURL) throws Exception {
    java.io.File sourceFile = new java.io.File(sURL);
    StringBuffer sTmp = new StringBuffer("file:///");
    sTmp.append(sourceFile.getCanonicalPath().replace('\\', '/'));
    sURL = sTmp.toString();
    //////////////////////////////////////////////////////////
XDesktop xDesktop = (XDesktop)UnoRuntime.queryInterface(XDesktop.class,xRemoteServiceManager.createInstanceWithContext("com.sun.star.frame.Desktop",xRemoteContext ) );
XComponentLoader xCompLoader =(XComponentLoader)UnoRuntime.queryInterface(XComponentLoader.class, xDesktop);
XComponent xComp = xCompLoader.loadComponentFromURL(sURL, "_blank", 0,new PropertyValue[0]);
XTextDocument xTextDoc =(XTextDocument)UnoRuntime.queryInterface(XTextDocument.class, xComp);
XMultiServiceFactory xMSFDoc =(XMultiServiceFactory)UnoRuntime.queryInterface(XMultiServiceFactory.class, xTextDoc);
oGraphic =xMSFDoc.createInstance("com.sun.star.text.TextGraphicObject");
XText xText = xTextDoc.getText();
XTextCursor xTextCursor = xText.createTextCursor();
//////////////////////////////////////////////
        XSearchable xsearch = (XSearchable) UnoRuntime.queryInterface(XReplaceable.class, xTextDoc);
        XSearchDescriptor xRepDesc = xsearch.createSearchDescriptor();
        
        XParagraphCursor xParagraphCursor = (XParagraphCursor)UnoRuntime.queryInterface(
                XParagraphCursor.class, xTextCursor);
        
        XWordCursor word=(XWordCursor)UnoRuntime.queryInterface(
                XWordCursor.class, xTextCursor);
        
        XAccessibleText text=(XAccessibleText)UnoRuntime.queryInterface(
                XAccessibleText.class, xTextDoc);
        
        XSentenceCursor linecursor=(XSentenceCursor)UnoRuntime.queryInterface(
                XSentenceCursor.class, xTextCursor);
    
        String s="";
        int count=0;
        int j=0;
        while(word.gotoNextWord(false)){
            count=count+1;
        }
    
        word.gotoStart(false);
        for (int i=0;i<2;i++){
            word.gotoEndOfWord(true);
            s=word.getString();
            word.gotoNextWord(false);
            if  (s.equals("SHAPE")){
                
                XTextContent xTextContent =(XTextContent)UnoRuntime.queryInterface(XTextContent.class, oGraphic );
                xText.insertTextContent(word, xTextContent, true);
                XPropertySet xPropSet=(XPropertySet)UnoRuntime.queryInterface(XPropertySet.class, oGraphic);
                 File GifFile = new java.io.File("c:/2.gif");
                 StringBuffer sUrl = new StringBuffer("file:///");
                 sUrl.append(GifFile.getCanonicalPath().replace('\\', '/')); 
                 xPropSet.setPropertyValue( "AnchorType",TextContentAnchorType.AT_PARAGRAPH );
                 xPropSet.setPropertyValue( "GraphicURL", sUrl.toString() );
                 xPropSet.setPropertyValue( "HoriOrientPosition",new Integer( 5500 ) );
                 xPropSet.setPropertyValue( "VertOrientPosition",new Integer( 4200 ) );
                 xPropSet.setPropertyValue( "Width", new Integer( 4400 ) );
                 xPropSet.setPropertyValue( "Height", new Integer(4000 ));
                //linecursor.gotoEndOfSentence(true);/*sensing the image*/
                //System.out.println(linecursor.getString());
            }
    }
    //////////////////////////////////////////////
     return xComp;
  }
    public static void InsertImage(){
        
    }
public static void main(String[] args) throws Exception {
    connect();
    openDocument("c:/1.odt");
    System.exit(0);
  }
}

Автор: JavaX 11.2.2009, 13:23
никто неможет сказать в чем дело! вешается на этой строчки кода 
   xText.insertTextContent(word, xTextContent, true);

Автор: JavaX 17.2.2009, 09:20
так чуству с таким никто несталкивался=(

Автор: ecologist 17.2.2009, 10:28
Ну звиняй - с OpenOffice пока народ не работает видимо smile

А если убрать строку, на которой вешается - то дальше вообще ничего не работает ?

Автор: JavaX 17.2.2009, 11:13
Цитата(ecologist @ 17.2.2009,  10:28)
Ну звиняй - с OpenOffice пока народ не работает видимо smile

А если убрать строку, на которой вешается - то дальше вообще ничего не работает ?

дык эта строка вставляет изображение!!!
она находится в цикле, после первого прохода рисунок вставляется, а когда начинается второй заход то выходит ошибка!!!

Автор: JavaX 17.2.2009, 12:20
все сам разобрался надобыло просто строку
Код

oGraphic =xMSFDoc.createInstance("com.sun.star.text.TextGraphicObject");


объявлять в цикле!!!воть!!!
всеравно всем спасибо кто помогал!!!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)