Ersetzung von Schriftarten auf Linux-System

Hallo zusammen,

wir arbeiten mit einem OpenSource-DMS, das LibreOffice nutzt, um die Vorschau für Office-Dateien zu generieren. (Im übrigen arbeitet unser Büro natürlich auch und ausschließlich mit LibreOffice als Office-Suite). Der DMS-Server liegt auf einem Linux-System ohne grafische Oberfläche.

Wir haben tausende LibreOffice-Dateien bei denen eine Schriftart ersetzt ist (PMN-Caecilia → Caecilia Com 55 Roman). In der Folge zeigt die Dokumentenvorschau im DMS immer eine falsche Schriftart an - was nervt. Mit grafischer Oberfläche ist das ja easy in den Optionen einzustellen. Ohne Oberfläche ist es für mich eher kompliziert.

Ich habe herausgefunden, dass die Ersatzung in main.xcd gemacht wird. Meine Idee war jetzt einfach die entsprechende Zeile aus der main.xcd von unserem Terminalserver in die main.xcd des DMS-Servers hinten anzuhängen

<item oor:path="/org.openoffice.Office.Common/Font/Substitution/FontPairs"><node oor:name="_0" oor:op="replace"><prop oor:name="Always" oor:op="fuse"><value>true</value></prop><prop oor:name="ReplaceFont" oor:op="fuse"><value>PMN Caecilia</value></prop><prop oor:name="OnScreenOnly" oor:op="fuse"><value>true</value></prop><prop oor:name="SubstituteFont" oor:op="fuse"><value>Caecilia Com 55 Roman</value></prop></node></item>

Das hat aber leider noch nicht funktioniert. Was muss ich machen, damit auf dem DMS-Server die Schrift systemweit ersetzt wird. Die Schrift ist natürlich in /usr/share/fonts/truetype/openoffice installiert und fc-cache -f -v ausgeführt.

Ich bin für jeden Tip dankbar.

Markus

Dein Zitat: “Mit grafischer Oberfläche ist das ja easy in den Optionen einzustellen. Ohne Oberfläche ist es für mich eher kompliziert.”

was spricht dagegen für diese Fälle eine grafische Oberfläche doch zu haben?

Im übrigen ist in Deinem Codeschnipsl von Openoffice die rede

Du meinst das am Anfang? Das hat nichts zu sagen. Schau einmal unter Extras > Optionen > LibreOffice > Erweitert > Experteneinstellungen. Da gibt es lauter Pfade, die genau so beginnen: org.openoffice.Office … unter anderem natürlich auch der für die FontPairs.

Ich antworte einmal mit einem Zitat aus “Useful Macro Information For OpenOffice” von Andrew Pitonyak (Januar 2006)

5.5. Set the default font using the ConfigurationProvider
To change the default font, run the macro and then restart OOo.
Listing 5.6: Set the default font using the ConfigurationProvider.
Author: Christian Junker
Sub DefaultFont_Change()
Dim nodeArgs(0) As New com.sun.star.beans.PropertyValue`
Dim s$
REM Properties
nodeArgs(0).Name = "nodePath"
nodeArgs(0).Value = "org.openoffice.Office.Writer/DefaultFont"
nodeArgs(0).State = com.sun.star.beans.PropertyState.DEFAULT_VALUE
nodeArgs(0).Handle = -1 'no handle!
REM the required Config Services
s = "com.sun.star.comp.configuration.ConfigurationProvider"
Provider = createUnoService(s)
s = "com.sun.star.configuration.ConfigurationUpdateAccess"
UpdateAccess = Provider.createInstanceWithArguments(s, nodeArgs())
REM set your DefaultFont now..
UpdateAccess.Standard = "Arial"
UpdateAccess.Heading = "Arial"
UpdateAccess.List = "Arial"
UpdateAccess.Caption = "Arial"
UpdateAccess.Index = "Arial"
UpdateAccess.commitChanges()
End Sub

Wenn das mit dem Default-Font geht, dann müsste das auch so ähnlich mit dem Ersetzen von Fonts möglich sein.

Gruß

Robert

Hallo Robert,
vielen Dank für deine Antwort. Aber hilft mir das wirklich für tausende, bereits bestehende Dokumente?
VG, Markus

Das wäre wohl nur eine Lösung für den Einzeluser, nicht aber Systemweit. Und: Du müsstest irgendwie Makros ablaufen lassen können - ohne grafische Benutzeroberfläche.

Meiner Meinung nach steht in dem, was Du da rauskopiert hast, viel zu viel drin. Och würde auf schliche Ersetzungen schauen:

<node oor:name="calibri" oor:op="replace">
<prop oor:name="SubstFonts">
<value>carlito;hiraginomarugothicpronw3;hiraginomarugothicprow3</value>
</prop>
<prop oor:name="FontType"><value>Normal,SansSerif</value></prop>
</node>
<node oor:name="carlito" oor:op="replace">
<prop oor:name="SubstFonts">
<value>calibri;hiraginomarugothicpronw3;hiraginomarugothicprow3</value></prop>
<prop oor:name="SubstFontsMS"><value>Calibri</value></prop>
<prop oor:name="FontType"><value>Normal,SansSerif</value></prop>
</node>

Das ersetzt auf meinem System Calibri durch Carlito.

Du musst schon die entsprechenden Stellen ersetzen, nicht einfach anhängen.