tutorials.de Buch-Aktion 05/2012
Like Tree1Danke
  • 1 Beitrag von deepthroat
ERLEDIGT
JA
ANTWORTEN
11
ZUGRIFFE
4637
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    RavenKN RavenKN ist offline Mitglied
    Registriert seit
    Nov 2008
    Beiträge
    22
    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 :
    1
    2
    3
    4
    5
    
    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 :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    ...
            <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 :
    1
    2
    3
    4
    5
    6
    7
    8
    
    ...
            <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
     
    ------------------------------------------
    I hacked 127.0.0.1

  2. #2
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.169
    Hi.

    Versuch's mal mit
    Code :
    1
    
    src="file:bild.png"
    Gruß
     
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

  3. #3
    RavenKN RavenKN ist offline Mitglied
    Registriert seit
    Nov 2008
    Beiträge
    22
    Hi,

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

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

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

  4. #4
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.169
    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ß
     
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

  5. #5
    RavenKN RavenKN ist offline Mitglied
    Registriert seit
    Nov 2008
    Beiträge
    22
    Hi,

    da ich selber neu in dem Thema war/bin habe ich die Prozedur aus folgendem Beispiel übernommen:
    http://www.codeproject.com/KB/dotnet...select=1332991.
    Ich kann dir leider nicht beantworten, ob das ein NFOP oder ein FOP Prozessor ist. Ich schätze aber FOP, da in der Methode GeneratePDF JavaCode verwendet wird.
    Die Resourcedatei in VisualStudio heißt: "ApacheFop.Net"

    --
    Gruß
     
    ------------------------------------------
    I hacked 127.0.0.1

  6. #6
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.169
    Hi.

    Du nutzt also NFOP (steht doch groß auf der Seite von dem Link den du zitiert hast).

    NFOP hat ein Problem mit relativen Pfadangaben (http://sourceforge.net/tracker/index...58&atid=511410), was aber anscheinend an der Microsoft J# Implementierung der Java Bibliotheken liegt.

    Absolute Pfade sollten demnach funktionieren. Oder bekommst du da auch einen Fehler?

    Gruß
     
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

  7. #7
    RavenKN RavenKN ist offline Mitglied
    Registriert seit
    Nov 2008
    Beiträge
    22
    Hi,

    wie muss denn die absolute Pfadangabe aussehen? Ich hab jetzt schon einiges probiert, komm aber nicht dahinter.
    Probiert habe ich:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    <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?
     
    ------------------------------------------
    I hacked 127.0.0.1

  8. #8
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.169
    Hi.

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

    PS: Ja, du kannst natürlich auch Parameter übergeben.
     
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

  9. #9
    RavenKN RavenKN ist offline Mitglied
    Registriert seit
    Nov 2008
    Beiträge
    22
    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 :
    1
    2
    3
    4
    
    <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 :
    1
    2
    3
    4
    5
    6
    7
    
    <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>
    ...
     
    ------------------------------------------
    I hacked 127.0.0.1

  10. #10
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.169
    Hi.

    Bist du dir sicher, das der Platz ausreicht? Bei mir zeigt er die Grafik nur an wenn auch genug Platz ist.

    Gruß
    RavenKN bedankt sich. 
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

  11. #11
    RavenKN RavenKN ist offline Mitglied
    Registriert seit
    Nov 2008
    Beiträge
    22
    Danke deepthroat !
    Genau daran lag es.

    Und nochmal: VIELEN DANK FÜR DEINE HILFE!
     
    ------------------------------------------
    I hacked 127.0.0.1

  12. #12
    Sixty Sixty ist offline Mitglied Silber
    Registriert seit
    Mar 2009
    Ort
    Braunschweig
    Beiträge
    51
    Hi,

    bei mir zeigt er keine Bilder an, wenn ich den FOP in einer .jar starte.
    Starte ich den FOP unter eclipse, werden die Bilder angezeigt.

    Was da los
     

Ähnliche Themen

  1. Pfad an <fo:external-graphic> übergeben
    Von Sixty im Forum XML Technologien
    Antworten: 1
    Letzter Beitrag: 23.03.10, 15:04
  2. Graphic Problem
    Von MechanU im Forum Java
    Antworten: 1
    Letzter Beitrag: 06.05.09, 12:35
  3. Graphic tablet
    Von wodi im Forum Hardware
    Antworten: 3
    Letzter Beitrag: 16.08.07, 12:20
  4. Graphic-Tablet
    Von thekiller im Forum Hardware
    Antworten: 1
    Letzter Beitrag: 07.06.07, 21:12

Stichworte