XSL-FO: external graphic Probleme

RavenKN

Mitglied
Hallo tutorials.de-Community,

ich programmiere gerade eine Exportfunktion in C#, bei der aus der Datenbank die Daten in ein PDF mittels XSL-FO umgewandelt werden. In meinem PDF will ich Bilder unterbringen. Ich mache dies miitels <fo:external-graphic>. Mein Problem ist folgendes:
Mein Programm verlangt als src-Attributwert in der external-graphic eine Netzwerkadresse (\\server\share\) oder einen Link (http://...). Ich will allerdings die Bilder lokal (am besten mit relativen Pfadangaben) abrufen. Um dies zu erreichen habe ich schon ein bisschen experimentiert. Folgende Möglichkeiten funktionieren nicht:
Code:
src="bild.png"
src="url('bild.png')"
src="url('file:///bild.png')"
src="url('file:///<absoluter Pfad>/bild.png')"
src="{bild.png}"


meine momentane Lösung (über Netzwerk oder Link) sieht so aus:
Code:
...
        <fo:static-content flow-name="xsl-region-before">

          <!--ToDo: 1 mal logoklein.gif-->
          <fo:block-container top="4.4cm" left="1.5cm" position="absolute" width="0.7cm" height="0.6cm">
            <fo:block>
              <fo:external-graphic src="url('http://www.anonym.de/directory/logoklein.gif')"/>
            </fo:block>
          </fo:block-container>
...

oder
Code:
...
        <fo:static-content flow-name="xsl-region-before">
          <fo:block-container top="1.8cm" left="11.5cm" position="absolute" width="6cm" height="1.1cm">
            <fo:block>
              <fo:external-graphic src="url('\\PCname\freigabe\schriftzug.gif')" content-height="1.2cm" content-width="6cm"/>
            </fo:block>
          </fo:block-container>
...

PS: Andere Bildformate (png, jpeg, ...) gehen auch nicht.

--
Bitte helft mir weiter.
Danke schonmal im Voraus und viele Grüße
 
Hi,

leider funktioniert sowohl
Code:
src="file:bild.png"
als auch
Code:
src="url('file:bild.png')"
nicht.

Um weiterzuhelfen hänge ich mal die genaue Fehlermeldung mit an (gleiche Meldung bei beiden Varianten!):

Code:
Error while creating area: Error with image URL: Der UNC-Pfad muss folgendes Format haben: \\server\share. And no base URL is specified.
 
Hi.

Was verwendest du denn für einen Prozessor? NFop?

Gibt's denn keine richtige Exception mit mehr Information? Das sieht ja so aus wie eine .NET Meldung mit dem UNC Pfad...

Gruß
 
Hi,

wie muss denn die absolute Pfadangabe aussehen? Ich hab jetzt schon einiges probiert, komm aber nicht dahinter. :confused:
Probiert habe ich:
Code:
<fo:external-graphic src="C:\schriftzug.jpg"/>
<fo:external-graphic src="C:\\schriftzug.jpg"/>
<fo:external-graphic src="C:/schriftzug.jpg"/>
<fo:external-graphic src="C://schriftzug.jpg"/>
<fo:external-graphic src="url('C:\schriftzug.jpg')"/>
<fo:external-graphic src="url('C:\\schriftzug.jpg')"/>
<fo:external-graphic src="url('file:C:\schriftzug.jpg')"/>
<fo:external-graphic src="url('file:C:\\schriftzug.jpg')"/>
<fo:external-graphic src="url('file:///C:\schriftzug.jpg')"/>
...

Eine Fehlermeldung kommt nicht mehr im Ausgabefenster, aber die Grafik wird im PDF nicht dargestellt...

PS: Ist es möglich eine Pfadangabe als Parameter in die XSL zu übergeben?
 
Hi.

Es sollte eigentlich so gehen:
Code:
file://c:/folder/pic.jpg
Gruß

PS: Ja, du kannst natürlich auch Parameter übergeben.
 
Hi,

erst mal danke für deine schnelle Hilfe. Es geht aber immer noch nicht. :(
Ich habe folgende Varianten probiert (auch mit doppelten (Back-)Slashes):
(keine Fehler nur leerer fo:block)
Code:
<fo:external-graphic src="file://c:/s.jpg" content-height="1.2cm" content-width="6cm"/>
<fo:external-graphic src="file://c:\s.jpg" content-height="1.2cm" content-width="6cm"/>
<fo:external-graphic src="url('file://c:/s.jpg')" content-height="1.2cm" content-width="6cm"/>
<fo:external-graphic src="url('file://c:\s.jpg')" content-height="1.2cm" content-width="6cm"/>

Hier mal der ganze Code, vielleicht hilft es weiter ...
Code:
<fo:static-content flow-name="xsl-region-before">
          <fo:block-container background-color="#003fff" top="1.5cm" left="11.5cm" position="absolute" width="6cm" height="1.2cm">
            <fo:block>
              <fo:external-graphic src="file://c:/s.jpg" content-height="1.2cm" content-width="6cm"/>
            </fo:block>
          </fo:block-container>
...
 
Zurück