Re: [Rendering] Trying to render text page to a bitmap
Ariel , Very instructive, copied to my learning stuff, thansk i pointed Eric to a other technic, opening the doc in preview mode in a frame based on a new created window in a filepicker dialog. Principle parts of the code Sub PreviewWindowLoadOOFile(sUrl as String) oPreviewWindow = InstallNewPreviewWindow(oFPickerDialog.Window, 0) oFrame = createUnoService(com.sun.star.frame.Frame) oFrame.initialize(oPreviewWindow) Dim aProps(0) As New com.sun.star.beans.PropertyValue aProps(0).Name = Preview aProps(0).Value = true oPreviewDoc = oFrame.loadComponentFromURL(sUrl, , 0, aProps()) end sub function InstallNewPreviewWindow(oWin as Object, lWinAttrs as Long) as Object ' Create a window descriptor and set up its properties Dim aDescriptor As New com.sun.star.awt.WindowDescriptor aDescriptor.Type = com.sun.star.awt.WindowClass.SIMPLE aDescriptor.Parent = oWin aDescriptor.Bounds = oWin.Windows(lLastWindowAtStart).PosSize aDescriptor.WindowAttributes = com.sun.star.awt.WindowAttribute.SHOW or lWinAttrs oToolkit = createUnoService(com.sun.star.awt.Toolkit) InstallNewPreviewWindow = oToolkit.createWindow(aDescriptor) end function Greetz Fernand REM * BASIC * Option Explicit Sub Main GlobalScope.BasicLibraries.loadLibrary(Tools) Dim oDoc as Object oDoc = ThisComponent If HasUnoInterfaces(oDoc, com.sun.star.view.XRenderable) Then Dim sBaseURL as String sBaseURL = DirectoryNameOutOfPath(oDoc.getURL(), /) Dim oSFA as Object oSFA = CreateUnoService(com.sun.star.ucb.SimpleFileAccess) Dim oGraphicProvider as Object oGraphicProvider = CreateUnoService(com.sun.star.graphic.GraphicProvider) Dim oController as Object Dim oUnitConverter as Object oController = oDoc.getCurrentController() oUnitConverter = oController.getFrame().getComponentWindow() Dim oSelection as Object ' it could be the whole document oSelection = oDoc ' or the selection 'Dim oTextCursor as Object 'oTextCursor = oDoc.getText().createTextCursorByRange(oDoc.getText().getStart()) 'oTextCursor.goToRange(oDoc.getText().getEnd(), True) 'oController.select(oTextCursor) 'oSelection = oController.getSelection() Dim oDevice as Object Dim aRenderOptions(5) as New com.sun.star.beans.PropertyValue aRenderOptions(0).Name = RenderDevice aRenderOptions(0).Value = oDevice aRenderOptions(1).Name = ExportNotesPages aRenderOptions(1).Value = False aRenderOptions(2).Name = IsFirstPage aRenderOptions(2).Value = True aRenderOptions(3).Name = IsLastPage aRenderOptions(3).Value = False aRenderOptions(4).Name = IsSkipEmptyPages aRenderOptions(4).Value = True aRenderOptions(5).Name = PageRange aRenderOptions(5).Value = Dim nPageCount as Integer nPageCount = oDoc.getRendererCount( oSelection, aRenderOptions ) If nPageCount 0 Then Dim oToolkit as Object oToolkit = CreateUnoService(com.sun.star.awt.Toolkit) Dim oRenderer as Object Dim oPageSize as Object Dim i% Dim sURL$ While nPageCount 0 nPageCount = nPageCount - 1 oRenderer = oDoc.getRenderer(nPageCount, oSelection, aRenderOptions) For i = 0 To UBound(oRenderer) If oRenderer(i).Name = PageSize Then oPageSize = oRenderer(i).Value Exit For End If Next Dim oDeviceSize as Object oDeviceSize = oUnitConverter.convertSizeToPixel(oPageSize, com.sun.star.util.MeasureUnit.MM_100TH) oDevice = oToolkit.createScreenCompatibleDevice( oDeviceSize.Width, oDeviceSize.Height) aRenderOptions(0).Value = oDevice oDoc.render( nPageCount, oSelection, aRenderOptions) Dim oBitmap as Object oBitmap = oDevice.createBitmap( 0, 0, oDevice.Info.Width,oDevice.Info.Height) sURL = sBaseURL + / + CStr(nPageCount) + .png If oSFA.exists(sURL) Then oSFA.kill(sURL) StoreBitmapToURL(oGraphicProvider, oBitmap, sURL) Wend End If End If End Sub Sub StoreBitmapToURL(oGraphicProvider, oBitmap, sURL) Dim oMediaProperties(0) as New com.sun.star.beans.PropertyValue oMediaProperties(0).Name = Bitmap oMediaProperties(0).Value = oBitmap Dim oGraphic as Object oGraphic = oGraphicProvider.queryGraphic(oMediaProperties) If NOT IsNull(oGraphic) Then Dim oMediaPropertiesOut(2) as New com.sun.star.beans.PropertyValue oMediaPropertiesOut(0).Name = URL
Re: [Rendering] Trying to render text page to a bitmap
Hi, Thanks for the code but it doesn't work. Heres my code to anser every question one will ever have about ooo. Sub TheAnswerForEveryting() If isDepressed() Then doNothing() ElseIf isHappy() Then doSomething() ElseIf isHatred() Then crashForNoReason() ElseIf isPolite() Then throwAnError() Else waitForOneSecondAndTryAgain() End If End Sub Erik 2012/5/3 Fernand Vanrie s...@pmgroup.be Erik , With BASIC it can been done have a look at this thread http://openoffice.2283327.n4.** nabble.com/api-dev-Open-a-**file-with-standard-**application-from-dialog-* *td3067760.htmlhttp://openoffice.2283327.n4.nabble.com/api-dev-Open-a-file-with-standard-application-from-dialog-td3067760.html hope it helps Fernand Hi, I'm trying to render a page to a bitmap and I don't get it working. Drawing primitives works but not render a document. Do anyone know how to do this? Here is my code: public static BufferedImage makeThumb(File inFile) throws IOException, BootstrapException, IllegalArgumentException, Exception, java.io.IOException { XComponentLoader xCompLoader = OfficeConnection.**getConnection().**getXComponentLoader(); PropertyValue[] loadProps = new PropertyValue[2]; loadProps[0] = OfficeTools.makeProperty(**ReadOnly, Boolean.TRUE); loadProps[1] = OfficeTools.makeProperty(**Hidden, Boolean.TRUE); XComponent xDoc = xCompLoader.**loadComponentFromURL(**OfficeTools.makeOpenOfficeUrl(**inFile.getAbsolutePath()), _blank, 0, loadProps); XRenderable xRender = (XRenderable)UnoRuntime.** queryInterface(XRenderable.**class, xDoc); if (xRender != null) { System.out.println(Is Renderable); XDevice xDevice = OfficeConnection.** getConnection().getXToolkit().**createScreenCompatibleDevice(**1024, 1024); PropertyValue[] renderProps = new PropertyValue[2]; renderProps[0] = OfficeTools.makeProperty(**RenderDevive, xDevice); renderProps[1] = OfficeTools.makeProperty(**PageRange, 1); xRender.render(0, xDoc, renderProps); XBitmap xBitmap = xDevice.createBitmap(0, 0, 1024, 1024); if (xBitmap != null) return ImageIO.read(new ByteArrayInputStream(xBitmap.**getDIB())); else System.out.println(No bitmap created!); } else { System.out.println(Not Renderable); } return null; } Thanks in advance, Erik Wigforss
Re: [Rendering] Trying to render text page to a bitmap
On 30/05/2012 11:20, Erik Wigforss wrote: Hi, Thanks for the code but it doesn't work. for you i suppose :-) Heres my code to anser every question one will ever have about ooo. Sub TheAnswerForEveryting() If isDepressed() Then doNothing() ElseIf isHappy() Then doSomething() ElseIf isHatred() Then crashForNoReason() ElseIf isPolite() Then throwAnError() Else waitForOneSecondAndTryAgain() End If End Sub Erik 2012/5/3 Fernand Vanries...@pmgroup.be Erik , With BASIC it can been done have a look at this threadhttp://openoffice.2283327.n4.** nabble.com/api-dev-Open-a-**file-with-standard-**application-from-dialog-* *td3067760.htmlhttp://openoffice.2283327.n4.nabble.com/api-dev-Open-a-file-with-standard-application-from-dialog-td3067760.html hope it helps Fernand Hi, I'm trying to render a page to a bitmap and I don't get it working. Drawing primitives works but not render a document. Do anyone know how to do this? Here is my code: public static BufferedImage makeThumb(File inFile) throws IOException, BootstrapException, IllegalArgumentException, Exception, java.io.IOException { XComponentLoader xCompLoader = OfficeConnection.**getConnection().**getXComponentLoader(); PropertyValue[] loadProps = new PropertyValue[2]; loadProps[0] = OfficeTools.makeProperty(**ReadOnly, Boolean.TRUE); loadProps[1] = OfficeTools.makeProperty(**Hidden, Boolean.TRUE); XComponent xDoc = xCompLoader.**loadComponentFromURL(**OfficeTools.makeOpenOfficeUrl(**inFile.getAbsolutePath()), _blank, 0, loadProps); XRenderable xRender = (XRenderable)UnoRuntime.** queryInterface(XRenderable.**class, xDoc); if (xRender != null) { System.out.println(Is Renderable); XDevice xDevice = OfficeConnection.** getConnection().getXToolkit().**createScreenCompatibleDevice(**1024, 1024); PropertyValue[] renderProps = new PropertyValue[2]; renderProps[0] = OfficeTools.makeProperty(**RenderDevive, xDevice); renderProps[1] = OfficeTools.makeProperty(**PageRange, 1); xRender.render(0, xDoc, renderProps); XBitmap xBitmap = xDevice.createBitmap(0, 0, 1024, 1024); if (xBitmap != null) return ImageIO.read(new ByteArrayInputStream(xBitmap.**getDIB())); else System.out.println(No bitmap created!); } else { System.out.println(Not Renderable); } return null; } Thanks in advance, Erik Wigforss
Re: [Rendering] Trying to render text page to a bitmap
No the code is not working for me and I seek help. I want to have help with thumbnails and previews thats quick and stable, And the preview that exists is just too slow and unstable. Did you know that MS Wordpad is creating the thumbnails for OOo but Ms Office have no thumbnails? And the opposite for preview. --- http://openoffice.2283327.n4.** nabble.com/api-dev-Open-a-**file-with-standard-**application-from-dialog-* *td3067760.html http://openoffice.2283327.n4.nabble.com/api-dev-Open-a-file-with-standard-application-from-dialog-td3067760.html -- 2012/5/30 Fernand Vanrie s...@pmgroup.be On 30/05/2012 11:20, Erik Wigforss wrote: Hi, Thanks for the code but it doesn't work. for you i suppose :-) Heres my code to anser every question one will ever have about ooo. Sub TheAnswerForEveryting() If isDepressed() Then doNothing() ElseIf isHappy() Then doSomething() ElseIf isHatred() Then crashForNoReason() ElseIf isPolite() Then throwAnError() Else waitForOneSecondAndTryAgain() End If End Sub Erik 2012/5/3 Fernand Vanries...@pmgroup.be Erik , With BASIC it can been done have a look at this threadhttp://openoffice.**2283327.n4.http://openoffice.2283327.n4. ** nabble.com/api-dev-Open-a-file-with-standard- application-from-dialog-*http://nabble.com/api-dev-Open-a-**file-with-standard-**application-from-dialog-* *td3067760.htmlhttp://**openoffice.2283327.n4.nabble.** com/api-dev-Open-a-file-with-**standard-application-from-** dialog-td3067760.htmlhttp://openoffice.2283327.n4.nabble.com/api-dev-Open-a-file-with-standard-application-from-dialog-td3067760.html hope it helps Fernand Hi, I'm trying to render a page to a bitmap and I don't get it working. Drawing primitives works but not render a document. Do anyone know how to do this? Here is my code: public static BufferedImage makeThumb(File inFile) throws IOException, BootstrapException, IllegalArgumentException, Exception, java.io.IOException { XComponentLoader xCompLoader = OfficeConnection.getConnection().getXComponentLoader(); PropertyValue[] loadProps = new PropertyValue[2]; loadProps[0] = OfficeTools.makeProperty(ReadOnly, Boolean.TRUE); loadProps[1] = OfficeTools.makeProperty(Hidden, Boolean.TRUE); XComponent xDoc = xCompLoader.loadComponentFromURL(OfficeTools.makeOpenOfficeUrl(* ***inFile.getAbsolutePath()), _blank, 0, loadProps); XRenderable xRender = (XRenderable)UnoRuntime.** queryInterface(XRenderable.class, xDoc); if (xRender != null) { System.out.println(Is Renderable); XDevice xDevice = OfficeConnection.** getConnection().getXToolkit().**createScreenCompatibleDevice(*** *1024, 1024); PropertyValue[] renderProps = new PropertyValue[2]; renderProps[0] = OfficeTools.makeProperty(RenderDevive, xDevice); renderProps[1] = OfficeTools.makeProperty(PageRange, 1); xRender.render(0, xDoc, renderProps); XBitmap xBitmap = xDevice.createBitmap(0, 0, 1024, 1024); if (xBitmap != null) return ImageIO.read(new ByteArrayInputStream(xBitmap.* ***getDIB())); else System.out.println(No bitmap created!); } else { System.out.println(Not Renderable); } return null; } Thanks in advance, Erik Wigforss
Re: [Rendering] Trying to render text page to a bitmap
Erik, wath part of the code is not working ? No the code is not working for me and I seek help. I want to have help with thumbnails and previews thats quick and stable, And the preview that exists is just too slow and unstable. Did you know that MS Wordpad is creating the thumbnails for OOo but Ms Office have no thumbnails? And the opposite for preview. --- http://openoffice.2283327.n4.** nabble.com/api-dev-Open-a-**file-with-standard-**application-from-dialog-* *td3067760.html http://openoffice.2283327.n4.nabble.com/api-dev-Open-a-file-with-standard-application-from-dialog-td3067760.html -- 2012/5/30 Fernand Vanries...@pmgroup.be On 30/05/2012 11:20, Erik Wigforss wrote: Hi, Thanks for the code but it doesn't work. for you i suppose :-) Heres my code to anser every question one will ever have about ooo. Sub TheAnswerForEveryting() If isDepressed() Then doNothing() ElseIf isHappy() Then doSomething() ElseIf isHatred() Then crashForNoReason() ElseIf isPolite() Then throwAnError() Else waitForOneSecondAndTryAgain() End If End Sub Erik 2012/5/3 Fernand Vanries...@pmgroup.be Erik , With BASIC it can been done have a look at this threadhttp://openoffice.**2283327.n4.http://openoffice.2283327.n4. ** nabble.com/api-dev-Open-a-file-with-standard- application-from-dialog-*http://nabble.com/api-dev-Open-a-**file-with-standard-**application-from-dialog-* *td3067760.htmlhttp://**openoffice.2283327.n4.nabble.** com/api-dev-Open-a-file-with-**standard-application-from-** dialog-td3067760.htmlhttp://openoffice.2283327.n4.nabble.com/api-dev-Open-a-file-with-standard-application-from-dialog-td3067760.html hope it helps Fernand Hi, I'm trying to render a page to a bitmap and I don't get it working. Drawing primitives works but not render a document. Do anyone know how to do this? Here is my code: public static BufferedImage makeThumb(File inFile) throws IOException, BootstrapException, IllegalArgumentException, Exception, java.io.IOException { XComponentLoader xCompLoader = OfficeConnection.getConnection().getXComponentLoader(); PropertyValue[] loadProps = new PropertyValue[2]; loadProps[0] = OfficeTools.makeProperty(ReadOnly, Boolean.TRUE); loadProps[1] = OfficeTools.makeProperty(Hidden, Boolean.TRUE); XComponent xDoc = xCompLoader.loadComponentFromURL(OfficeTools.makeOpenOfficeUrl(* ***inFile.getAbsolutePath()), _blank, 0, loadProps); XRenderable xRender = (XRenderable)UnoRuntime.** queryInterface(XRenderable.class, xDoc); if (xRender != null) { System.out.println(Is Renderable); XDevice xDevice = OfficeConnection.** getConnection().getXToolkit().**createScreenCompatibleDevice(*** *1024, 1024); PropertyValue[] renderProps = new PropertyValue[2]; renderProps[0] = OfficeTools.makeProperty(RenderDevive, xDevice); renderProps[1] = OfficeTools.makeProperty(PageRange, 1); xRender.render(0, xDoc, renderProps); XBitmap xBitmap = xDevice.createBitmap(0, 0, 1024, 1024); if (xBitmap != null) return ImageIO.read(new ByteArrayInputStream(xBitmap.* ***getDIB())); else System.out.println(No bitmap created!); } else { System.out.println(Not Renderable); } return null; } Thanks in advance, Erik Wigforss
Re: [Rendering] Trying to render text page to a bitmap
I get all kinds of errors. Errors I shouldn't even get. I have tried in AOO and LO. Got it working in LO but very unstable crashing for no reason at all every time. In AOO it don't work at all even if it works in LO unstably. It's so wierd and totally random. Now this line in Function getGraphFromUrl(sFileURL as String) As Object don't work: --- Dim oProvider As Object oProvider = createUnoService(com.sun.star.graphic.GraphicProvider) Dim oPropsIN(0 to 0) As Object oPropsIN(0) = new com.sun.star.beans.PropertyValue oPropsIN(0).Name = URL oPropsIN(0).Value = sFileURL getGraphFromUrl = oProvider.queryGraphic(oPropsIN()) ' Don't working --- I have changed some line like the props setup lines beacuse they didn't work at all before. 2012/5/30 Fernand Vanrie s...@pmgroup.be Erik, wath part of the code is not working ? No the code is not working for me and I seek help. I want to have help with thumbnails and previews thats quick and stable, And the preview that exists is just too slow and unstable. Did you know that MS Wordpad is creating the thumbnails for OOo but Ms Office have no thumbnails? And the opposite for preview. --- http://openoffice.2283327.n4. nabble.com/api-dev-Open-a-file-with-standard- application-from-dialog-*http://nabble.com/api-dev-Open-a-**file-with-standard-**application-from-dialog-* *td3067760.html http://openoffice.2283327.n4.**nabble.com/api-dev-Open-a-** file-with-standard-**application-from-dialog-**td3067760.htmlhttp://openoffice.2283327.n4.nabble.com/api-dev-Open-a-file-with-standard-application-from-dialog-td3067760.html -- 2012/5/30 Fernand Vanries...@pmgroup.be On 30/05/2012 11:20, Erik Wigforss wrote: Hi, Thanks for the code but it doesn't work. for you i suppose :-) Heres my code to anser every question one will ever have about ooo. Sub TheAnswerForEveryting() If isDepressed() Then doNothing() ElseIf isHappy() Then doSomething() ElseIf isHatred() Then crashForNoReason() ElseIf isPolite() Then throwAnError() Else waitForOneSecondAndTryAgain() End If End Sub Erik 2012/5/3 Fernand Vanries...@pmgroup.be Erik , With BASIC it can been done have a look at this threadhttp://openoffice.2283327.n4. http://openoffice.**2283327.n4 http://openoffice.2283327.n4. ** nabble.com/api-dev-Open-a-**file-with-standard-http://nabble.com/api-dev-Open-a-file-with-standard- application-from-dialog-*http**://nabble.com/api-dev-Open-a-*** *file-with-standard-application-from-dialog-*http://nabble.com/api-dev-Open-a-**file-with-standard-**application-from-dialog-* *td3067760.htmlhttp://openoffice.2283327.n4.nabble. com/api-dev-Open-a-file-with-standard-application-from-** dialog-td3067760.htmlhttp://**openoffice.2283327.n4.nabble.** com/api-dev-Open-a-file-with-**standard-application-from-** dialog-td3067760.htmlhttp://openoffice.2283327.n4.nabble.com/api-dev-Open-a-file-with-standard-application-from-dialog-td3067760.html hope it helps Fernand Hi, I'm trying to render a page to a bitmap and I don't get it working. Drawing primitives works but not render a document. Do anyone know how to do this? Here is my code: public static BufferedImage makeThumb(File inFile) throws IOException, BootstrapException, IllegalArgumentException, Exception, java.io.IOException { XComponentLoader xCompLoader = OfficeConnection.**getConnection().**getXComponentLoader(); PropertyValue[] loadProps = new PropertyValue[2]; loadProps[0] = OfficeTools.makeProperty(**ReadOnly, Boolean.TRUE); loadProps[1] = OfficeTools.makeProperty(**Hidden, Boolean.TRUE); XComponent xDoc = xCompLoader.**loadComponentFromURL(** OfficeTools.makeOpenOfficeUrl(*** ***inFile.getAbsolutePath()), _blank, 0, loadProps); XRenderable xRender = (XRenderable)UnoRuntime.** queryInterface(XRenderable.**class, xDoc); if (xRender != null) { System.out.println(Is Renderable); XDevice xDevice = OfficeConnection.** getConnection().getXToolkit().**createScreenCompatibleDevice(* *1024, 1024); PropertyValue[] renderProps = new PropertyValue[2]; renderProps[0] = OfficeTools.makeProperty(**RenderDevive, xDevice); renderProps[1] = OfficeTools.makeProperty(**PageRange, 1); xRender.render(0, xDoc, renderProps); XBitmap xBitmap = xDevice.createBitmap(0, 0, 1024, 1024); if (xBitmap != null) return ImageIO.read(new ByteArrayInputStream(xBitmap.* ***getDIB())); else System.out.println(No bitmap created!); } else { System.out.println(Not Renderable); } return null; } Thanks in advance, Erik Wigforss
Re: [Rendering] Trying to render text page to a bitmap
On 30/05/2012 15:58, Erik Wigforss wrote: I get all kinds of errors. Errors I shouldn't even get. I have tried in AOO and LO. Got it working in LO but very unstable crashing for no reason at all every time. In AOO it don't work at all even if it works in LO unstably. It's so wierd and totally random. Now this line in Function getGraphFromUrl(sFileURL as String) As Object don't work: --- Dim oProvider As Object oProvider = createUnoService(com.sun.star.graphic.GraphicProvider) Dim oPropsIN(0 to 0) As Object oPropsIN(0) = new com.sun.star.beans.PropertyValue oPropsIN(0).Name = URL oPropsIN(0).Value = sFileURL getGraphFromUrl = oProvider.queryGraphic(oPropsIN()) ' Don't working you need the function :-) function getGraphFromUrl(sFileURL as String) as Object oProvider = createUnoService(com.sun.star.graphic.GraphicProvider) Dim oPropsIN(0)as new com.sun.star.beans.PropertyValue oPropsIN(0).Name = URL oPropsIN(0).Value = sFileURL getGraphFromUrl = oProvider.queryGraphic(oPropsIN()) end function --- I have changed some line like the props setup lines beacuse they didn't work at all before. 2012/5/30 Fernand Vanries...@pmgroup.be Erik, wath part of the code is not working ? No the code is not working for me and I seek help. I want to have help with thumbnails and previews thats quick and stable, And the preview that exists is just too slow and unstable. Did you know that MS Wordpad is creating the thumbnails for OOo but Ms Office have no thumbnails? And the opposite for preview. --- http://openoffice.2283327.n4. nabble.com/api-dev-Open-a-file-with-standard- application-from-dialog-*http://nabble.com/api-dev-Open-a-**file-with-standard-**application-from-dialog-* *td3067760.html http://openoffice.2283327.n4.**nabble.com/api-dev-Open-a-** file-with-standard-**application-from-dialog-**td3067760.htmlhttp://openoffice.2283327.n4.nabble.com/api-dev-Open-a-file-with-standard-application-from-dialog-td3067760.html -- 2012/5/30 Fernand Vanries...@pmgroup.be On 30/05/2012 11:20, Erik Wigforss wrote: Hi, Thanks for the code but it doesn't work. for you i suppose :-) Heres my code to anser every question one will ever have about ooo. Sub TheAnswerForEveryting() If isDepressed() Then doNothing() ElseIf isHappy() Then doSomething() ElseIf isHatred() Then crashForNoReason() ElseIf isPolite() Then throwAnError() Else waitForOneSecondAndTryAgain() End If End Sub Erik 2012/5/3 Fernand Vanries...@pmgroup.be Erik , With BASIC it can been done have a look at this threadhttp://openoffice.2283327.n4. http://openoffice.**2283327.n4http://openoffice.2283327.n4. ** nabble.com/api-dev-Open-a-**file-with-standard-http://nabble.com/api-dev-Open-a-file-with-standard- application-from-dialog-*http**://nabble.com/api-dev-Open-a-*** *file-with-standard-application-from-dialog-*http://nabble.com/api-dev-Open-a-**file-with-standard-**application-from-dialog-* *td3067760.htmlhttp://openoffice.2283327.n4.nabble. com/api-dev-Open-a-file-with-standard-application-from-** dialog-td3067760.htmlhttp://**openoffice.2283327.n4.nabble.** com/api-dev-Open-a-file-with-**standard-application-from-** dialog-td3067760.htmlhttp://openoffice.2283327.n4.nabble.com/api-dev-Open-a-file-with-standard-application-from-dialog-td3067760.html hope it helps Fernand Hi, I'm trying to render a page to a bitmap and I don't get it working. Drawing primitives works but not render a document. Do anyone know how to do this? Here is my code: public static BufferedImage makeThumb(File inFile) throws IOException, BootstrapException, IllegalArgumentException, Exception, java.io.IOException { XComponentLoader xCompLoader = OfficeConnection.**getConnection().**getXComponentLoader(); PropertyValue[] loadProps = new PropertyValue[2]; loadProps[0] = OfficeTools.makeProperty(**ReadOnly, Boolean.TRUE); loadProps[1] = OfficeTools.makeProperty(**Hidden, Boolean.TRUE); XComponent xDoc = xCompLoader.**loadComponentFromURL(** OfficeTools.makeOpenOfficeUrl(*** ***inFile.getAbsolutePath()), _blank, 0, loadProps); XRenderable xRender = (XRenderable)UnoRuntime.** queryInterface(XRenderable.**class, xDoc); if (xRender != null) { System.out.println(Is Renderable); XDevice xDevice = OfficeConnection.** getConnection().getXToolkit().**createScreenCompatibleDevice(* *1024, 1024); PropertyValue[] renderProps = new PropertyValue[2]; renderProps[0] = OfficeTools.makeProperty(**RenderDevive, xDevice); renderProps[1] = OfficeTools.makeProperty(**PageRange, 1); xRender.render(0, xDoc, renderProps); XBitmap xBitmap = xDevice.createBitmap(0, 0, 1024, 1024); if (xBitmap != null) return ImageIO.read(new ByteArrayInputStream(xBitmap.* ***getDIB())); else System.out.println(No bitmap created!); } else { System.out.println(Not Renderable); } return null; } Thanks in advance, Erik Wigforss
Re: [Rendering] Trying to render text page to a bitmap
Hi Erik, On Wed, May 30, 2012 at 11:20:23AM +0200, Erik Wigforss wrote: Hi, Thanks for the code but it doesn't work. Heres my code to anser every question one will ever have about ooo. Sub TheAnswerForEveryting() If isDepressed() Then doNothing() ElseIf isHappy() Then doSomething() ElseIf isHatred() Then crashForNoReason() ElseIf isPolite() Then throwAnError() Else waitForOneSecondAndTryAgain() End If End Sub That made me laugh :) You can find a way how to use XRenderable here: http://people.apache.org/~arielch/api/XRenderable/ The Basic code in the Writer document produces the two PNG images. REM * BASIC * Option Explicit Sub Main GlobalScope.BasicLibraries.loadLibrary(Tools) Dim oDoc as Object oDoc = ThisComponent If HasUnoInterfaces(oDoc, com.sun.star.view.XRenderable) Then Dim sBaseURL as String sBaseURL = DirectoryNameOutOfPath(oDoc.getURL(), /) Dim oSFA as Object oSFA = CreateUnoService(com.sun.star.ucb.SimpleFileAccess) Dim oGraphicProvider as Object oGraphicProvider = CreateUnoService(com.sun.star.graphic.GraphicProvider) Dim oController as Object Dim oUnitConverter as Object oController = oDoc.getCurrentController() oUnitConverter = oController.getFrame().getComponentWindow() Dim oSelection as Object ' it could be the whole document oSelection = oDoc ' or the selection 'Dim oTextCursor as Object 'oTextCursor = oDoc.getText().createTextCursorByRange(oDoc.getText().getStart()) 'oTextCursor.goToRange(oDoc.getText().getEnd(), True) 'oController.select(oTextCursor) 'oSelection = oController.getSelection() Dim oDevice as Object Dim aRenderOptions(5) as New com.sun.star.beans.PropertyValue aRenderOptions(0).Name = RenderDevice aRenderOptions(0).Value = oDevice aRenderOptions(1).Name = ExportNotesPages aRenderOptions(1).Value = False aRenderOptions(2).Name = IsFirstPage aRenderOptions(2).Value = True aRenderOptions(3).Name = IsLastPage aRenderOptions(3).Value = False aRenderOptions(4).Name = IsSkipEmptyPages aRenderOptions(4).Value = True aRenderOptions(5).Name = PageRange aRenderOptions(5).Value = Dim nPageCount as Integer nPageCount = oDoc.getRendererCount( oSelection, aRenderOptions ) If nPageCount 0 Then Dim oToolkit as Object oToolkit = CreateUnoService(com.sun.star.awt.Toolkit) Dim oRenderer as Object Dim oPageSize as Object Dim i% Dim sURL$ While nPageCount 0 nPageCount = nPageCount - 1 oRenderer = oDoc.getRenderer(nPageCount, oSelection, aRenderOptions) For i = 0 To UBound(oRenderer) If oRenderer(i).Name = PageSize Then oPageSize = oRenderer(i).Value Exit For End If Next Dim oDeviceSize as Object oDeviceSize = oUnitConverter.convertSizeToPixel(oPageSize, com.sun.star.util.MeasureUnit.MM_100TH) oDevice = oToolkit.createScreenCompatibleDevice( oDeviceSize.Width, oDeviceSize.Height) aRenderOptions(0).Value = oDevice oDoc.render( nPageCount, oSelection, aRenderOptions) Dim oBitmap as Object oBitmap = oDevice.createBitmap( 0, 0, oDevice.Info.Width,oDevice.Info.Height) sURL = sBaseURL + / + CStr(nPageCount) + .png If oSFA.exists(sURL) Then oSFA.kill(sURL) StoreBitmapToURL(oGraphicProvider, oBitmap, sURL) Wend End If End If End Sub Sub StoreBitmapToURL(oGraphicProvider, oBitmap, sURL) Dim oMediaProperties(0) as New com.sun.star.beans.PropertyValue oMediaProperties(0).Name = Bitmap oMediaProperties(0).Value = oBitmap Dim oGraphic as Object oGraphic = oGraphicProvider.queryGraphic(oMediaProperties) If NOT IsNull(oGraphic) Then Dim oMediaPropertiesOut(2) as New com.sun.star.beans.PropertyValue oMediaPropertiesOut(0).Name = URL oMediaPropertiesOut(0).Value = sURL oMediaPropertiesOut(1).Name = MimeType oMediaPropertiesOut(1).Value = image/png oGraphicProvider.storeGraphic(oGraphic, oMediaPropertiesOut) End If End Sub Regards -- Ariel Constenla-Haile La Plata, Argentina pgpU2Eit2sUHz.pgp Description: PGP signature
Re: [Rendering] Trying to render text page to a bitmap
Erik , With BASIC it can been done have a look at this thread http://openoffice.2283327.n4.nabble.com/api-dev-Open-a-file-with-standard-application-from-dialog-td3067760.html hope it helps Fernand Hi, I'm trying to render a page to a bitmap and I don't get it working. Drawing primitives works but not render a document. Do anyone know how to do this? Here is my code: public static BufferedImage makeThumb(File inFile) throws IOException, BootstrapException, IllegalArgumentException, Exception, java.io.IOException { XComponentLoader xCompLoader = OfficeConnection.getConnection().getXComponentLoader(); PropertyValue[] loadProps = new PropertyValue[2]; loadProps[0] = OfficeTools.makeProperty(ReadOnly, Boolean.TRUE); loadProps[1] = OfficeTools.makeProperty(Hidden, Boolean.TRUE); XComponent xDoc = xCompLoader.loadComponentFromURL(OfficeTools.makeOpenOfficeUrl(inFile.getAbsolutePath()), _blank, 0, loadProps); XRenderable xRender = (XRenderable)UnoRuntime.queryInterface(XRenderable.class, xDoc); if (xRender != null) { System.out.println(Is Renderable); XDevice xDevice = OfficeConnection.getConnection().getXToolkit().createScreenCompatibleDevice(1024, 1024); PropertyValue[] renderProps = new PropertyValue[2]; renderProps[0] = OfficeTools.makeProperty(RenderDevive, xDevice); renderProps[1] = OfficeTools.makeProperty(PageRange, 1); xRender.render(0, xDoc, renderProps); XBitmap xBitmap = xDevice.createBitmap(0, 0, 1024, 1024); if (xBitmap != null) return ImageIO.read(new ByteArrayInputStream(xBitmap.getDIB())); else System.out.println(No bitmap created!); } else { System.out.println(Not Renderable); } return null; } Thanks in advance, Erik Wigforss