[Libreoffice] EPS Export with text for LaTex and PSFrag
Fernand Vanrie
sos at pmgroup.be
Tue Mar 22 09:19:35 PDT 2011
Jesse,
Found some where on a forum, some Basic code to set this filter options
by the API
hope it helps
Fernand
' gets all shapes in the current draw page
' @param page: A XDrawPage. If page is not a XDrawPage, an empty shapes
collection is returned.
' @return: a com.sun.star.drawing.ShapeCollection containing all shapes,
may be empty.
function getAllShapesInDrawPage(thePage as Object)
' create empty collection of shapes
theShapes= createUnoService("com.sun.star.drawing.ShapeCollection")
if not hasUnoInterfaces(thePage, "com.sun.star.drawing.XDrawPage") then
getAllShapesInDrawPage = theShapes
exit function
end if
' add all shapes in the page to the collection
for i=0 to thePage.getCount() - 1
theShapes.add(thePage.getByIndex(i))
next i
getAllShapesInDrawPage = theShapes
end function
' From a Draw page, export the current selection to eps. If the current
selection is empty, select all
' shapes on the page and export them. If there are no shapes on the
page, export the empty page.
' Parts of this code are taken from the code in ooo bug 7918.
sub exportSelectionOrPageToEps
Dim currentPageName as String
theDoc = StarDesktop.getCurrentComponent()
if not theDoc.SupportsService(
"com.sun.star.drawing.DrawingDocument" ) Then
Msgbox("The current document must be a Draw document", 0)
exit sub
end if
theController = theDoc.currentController
thePage = theController.currentPage
theSelection = theController.selection
' if nothing is selected, select all shapes in the current page
if isEmpty(theSelection) then
MsgBox("selection is empty, will select everything in current
page", 0)
theController.select(getAllShapesInDrawPage(thePage))
theSelection = theDoc.currentController.selection
end if
'create url for storing
Dim origUrl as String
Dim exportUrl as new com.sun.star.util.URL
origUrl = theDoc.url
if isnull(thePage.name) then
exportUrl.complete = Left( origUrl, Len(origUrl) - 4 ) +
"_Export" + ".eps"
else
exportUrl.complete = Left( origUrl, Len(origUrl) - 4 ) + "_" +
thePage.name + ".eps"
endif
' Create the export filter.
' A GraphicExportFilter uses a page, shape or collection of shapes
as source.
theExporter = createUnoService(
"com.sun.star.drawing.GraphicExportFilter" )
' Export selection if something is selected, otherwise whole page.
if not isEmpty(theSelection) then
theExporter.SetSourceDocument(theSelection)
else
msgbox("no selection, exporting whole page", 0)
theExporter.SetSourceDocument(thePage)
endif
' Set the filter data
Dim aFilterData(5) as new com.sun.star.beans.PropertyValue
aFilterData(0).Name = "Level" '1=PS level 1, 2=PS level 2
aFilterData(0).Value = 2
aFilterData(1).Name = "ColorFormat" '1=color, 2=grayscale
aFilterData(1).Value = 1
aFilterData(2).Name = "TextMode" '0=glyph outlines, 1=no glyph
outlines, see ooo bug 7918
aFilterData(2).Value = 1
aFilterData(3).Name = "Preview" '0=none,1=TIFF,2=EPSI,3=TIFF+EPSI
aFilterData(3).Value = 0
aFilterData(4).Name = "CompressionMode" ' 1=LZW, 2=none
aFilterData(4).Value = 2
Dim aArgs (2) as new com.sun.star.beans.PropertyValue
aArgs(0).Name = "MediaType"
aArgs(0).Value = "image/x-eps"
aArgs(1).Name = "URL"
aArgs(1).Value = exportUrl
aArgs(2).Name = "FilterData"
aArgs(2).Value = aFilterData()
theExporter.filter(aArgs())
MsgBox("exported " + origUrl + " to " + exportUrl.complete, 0)
End Sub
> I may have solved my own problem and found the new setting. Try the following
>
> * Open the file "C:\Program Files (x86)\LibreOffice
> 3\Basis\share\registry\main.xcd" in a text editor
> * Use the Find and Replace feature in your editor.
> Find:
>
> EPS"><prop oor:name="Preview"
> oor:type="xs:int"><value>0</value></prop><prop oor:name="Version"
> oor:type="xs:int"><value>2</value></prop><prop oor:name="ColorFormat"
> oor:type="xs:int"><value>2</value></prop><prop
> oor:name="CompressionMode"
> oor:type="xs:int"><value>2</value></prop><prop oor:name="TextMode"
> oor:type="xs:int"><value>0
>
> Replace with:
>
> EPS"><prop oor:name="Preview"
> oor:type="xs:int"><value>0</value></prop><prop oor:name="Version"
> oor:type="xs:int"><value>2</value></prop><prop oor:name="ColorFormat"
> oor:type="xs:int"><value>2</value></prop><prop
> oor:name="CompressionMode"
> oor:type="xs:int"><value>2</value></prop><prop oor:name="TextMode"
> oor:type="xs:int"><value>2
>
>
> * Restart LibreOffice
> _______________________________________________
> LibreOffice mailing list
> LibreOffice at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/libreoffice
More information about the LibreOffice
mailing list