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"
         oMediaPropertiesOut(0).Value = sURL
         oMediaPropertiesOut(1).Name  = "MimeType"
         oMediaPropertiesOut(1).Value = "image/png"

         oGraphicProvider.storeGraphic(oGraphic, oMediaPropertiesOut)
     End If
End Sub

Reply via email to