ian_mcr123 wrote:
Hi,
I am working on an export filter for writing accessible html.
First I have to mention that there is already a very exelent export
filter available: Henrik Just's Writer2latex
http://fc.hj-gym.dk/~hj
Henrik is currently also working on extracting images etc..
I currently
use OOo to export the loaded doc as an html file in order to handle embedded
objects and graphics. I then parse the OOo generated html to obtain the
image info. This is not a great approach for handling certain types of
embedded objects. For example, excel objects embedded in a word document are
currently saved as an image. I would like to extract the embedded excel
object and process it in Calc. This would allow me to write out the embedded
spreadsheet as an html data table.
Similarly, I would like to extract embedded images and any associated values
with the basic code below you have a general idee how we handle this problem
we extrated the images to a external directory while chaging the URL's
to the new location
then we using writer2latex to generate the HTML code who produces the
correct links to the exported images
SUB SaveGraphicsToPmgServer()
Dim oAllGraphics As Object
Dim oGraphic As Object
oAllGraphics = oDocument.getGraphicObjects
Dim n As Integer
sName = FileNameOutOfPath(sfile)
sName = removeExtension(sName)
FOR n = 0 to oAllGraphics.Count - 1
oGraphic = oAllGraphics(n)
if Lcase(left(oGraphic.GraphicURL,18)) = "http://foto.pmg.be"
then
else
'sFName = sName + "F" + Format(Cstr(n+1), "00") + ".jpg"
sFName = sName + "F" + Format(Cstr(mid(oGraphic.name,9,3)),
"00") + ".jpg"
ExportGraphicTo(oGraphic,convertToURL("\\pmg-web-cpq\foto.pmg.be\" +
LEFT(sFName,3) + "\" + sFName), 96)
ChangeLink(oGraphic, n+1)
endif
NEXT
END SUB
'------------------------------------------------------------------
SUB ExportGraphicTo(Graphic As SwXTextGraphicObject, sURLImageResized As
String, iPixels As Integer)
Dim mFileProperties(0) As New com.sun.star.beans.PropertyValue
mFileProperties(0).Name= "Hidden"
mFileProperties(0).Value= True
Dim oDrawDoc, oDrawPage, oDrawGraphic As Object
oDrawDoc =
oDesktop.LoadComponentFromURL("private:factory/sdraw","_blank",0,mFileProperties())
oDrawPage = oDrawDoc.DrawPages(0)
oDrawGraphic =
oDrawDoc.createInstance("com.sun.star.drawing.GraphicObjectShape")
Dim SelSize As New com.sun.star.awt.Size
SelSize = oGraphic.Size
oDrawGraphic.GraphicURL = oGraphic.GraphicURL
oDrawGraphic.Size = SelSize
oDrawPage.add(oDrawGraphic)
oDrawGraphic.GraphicCrop = oGraphic.GraphicCrop
oDrawPage.Width = oGraphic.Size.Width
oDrawPage.Height = oGraphic.Size.Height
Dim aFilterData (1) As new com.sun.star.beans.PropertyValue
aFilterData(0).Name = "PixelWidth" '
aFilterData(0).Value = oDrawPage.Width/100 * iPixels / 25.40
aFilterData(1).Name = "PixelHeight"
aFilterData(1).Value = oDrawPage.Height/100 * iPixels / 25.40
Export( oDrawPage, sURLImageResized , aFilterData() )
On error resume Next
oDrawDoc.Close(True)
On error goto 0
END SUB
'-------------------------------------------------------------------
SUB Export( xObject, sFileUrl As String, aFilterData )
Dim xExporter As Object
xExporter = createUnoService(
"com.sun.star.drawing.GraphicExportFilter" )
xExporter.SetSourceDocument( xObject )
Dim aArgs (2) As new com.sun.star.beans.PropertyValue
'sFileURL = ConvertToURL(sFileURL)
aArgs(0).Name = "FilterName"
aArgs(0).Value = "jpg"
aArgs(1).Name = "URL"
aArgs(1).Value = sFileURL
'print sFileURL
aArgs(2).Name = "FilterData"
aArgs(2).Value = aFilterData
xExporter.filter( aArgs() )
END SUB
'-------------------------------------------------------------------
SUB changeLink(oGraphic As Object, index As Integer)
oGraphic.setPropertyValue("GraphicURL", "http://foto.pmg.be/" +
LEFT(sFName,3) + "/" + sFName)
Dim aCrop As New com.sun.star.text.GraphicCrop
oGraphic.GraphicCrop = aCrop
END SUB
'-------------------------------------------------------------------
Hope it helps
Fernand
such as brightness etc. I understand this information (ie. calc objects,
original images etc. are available within the odt file). However, we need to
do this programmatically without saving the odt or html etc.
Is this possible via the SDK or would it require an extension of the core?.
Any thoughts or alternative suggestions are much appreciated.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]