incubator-ooo-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Fernand Vanrie <...@pmgroup.be>
Subject Re: [Rendering] Trying to render text page to a bitmap
Date Thu, 31 May 2012 07:50:30 GMT
  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


Mime
View raw message