MudGuard: /FOP XML->PDF: Text vertikal schreiben

Hi,

kann mal jemand bitte den Wald zur Seite räumen, damit ich den Baum wieder sehe?

Ich transformiere XML-Files zu PDF-Files, dabei kommt fop 0.20.5 zum Einsatz.

Gibt es eine einfache Möglichkeit, einen Wert aus dem XML-File um 90° gedreht auszugeben? Wäre es ein fixer Wert, könnt ich ja einfach ein Bildchen nehmen, aber der Wert ist in jedem XML-File anders.

Wenn ja, bitte auch verraten, wie (Such-Stichworte genügen, komplette Beispiele werden aber auch nicht zurückgewiesen ...)

Danke im Voraus!

cu,
Andreas

--
Warum nennt sich Andreas hier MudGuard?
Schreinerei Waechter
O o ostern ...
Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
  1. Tach MudGuard,

    Gibt es eine einfache Möglichkeit, einen Wert aus dem XML-File um 90° gedreht auszugeben? Wäre es ein fixer Wert, könnt ich ja einfach ein Bildchen nehmen, aber der Wert ist in jedem XML-File anders.

      
    <fo:block-container reference-orientation="90">  
    ...  
    </<fo:block-container>
    

    reference-orientation erwartet 90°-Schritte.

    Man liest sich,
    svg4you

    1. Hi,

      Gibt es eine einfache Möglichkeit, einen Wert aus dem XML-File um 90° gedreht auszugeben? Wäre es ein fixer Wert, könnt ich ja einfach ein Bildchen nehmen, aber der Wert ist in jedem XML-File anders.

      <fo:block-container reference-orientation="90">
      ...
      </fo:block-container

      
      > reference-orientation erwartet 90°-Schritte.  
        
      Danke schonmal - leider hilft's nicht wirklich.  
        
      Das ergibt:  
      [INFO] Using org.apache.xerces.parsers.SAXParser as SAX2 Parser  
      [INFO] FOP 0.20.5  
      [INFO] Using org.apache.xerces.parsers.SAXParser as SAX2 Parser  
      [INFO] building formatting object tree  
      [INFO] setting up fonts  
      [ERROR] property - "reference-orientation" is not implemented yet.  
      [INFO] [1]  
      [INFO] [1]  
      [ERROR] java.lang.ClassCastException: org.apache.fop.layout.BlockArea  
        
      Es entsteht kein pdf-File.  
        
      Benutze ich nur fo:block statt fo:block-container, ergibt sich:  
      [INFO] Using org.apache.xerces.parsers.SAXParser as SAX2 Parser  
      [INFO] FOP 0.20.5  
      [INFO] Using org.apache.xerces.parsers.SAXParser as SAX2 Parser  
      [INFO] building formatting object tree  
      [INFO] setting up fonts  
      [ERROR] property - "reference-orientation" is not implemented yet.  
      [INFO] [1]  
      [INFO] Parsing of document complete, stopping renderer  
        
      Hier entsteht ein PDF-File, allerdings ist der Text nicht rotiert ...  
        
      Ein Umstieg auf die 0.92-Beta ist derzeit nicht möglich (da funktionieren einige Dinge nicht, für deren Anpassung momentan keine Zeit ist).  
        
      cu,  
      Andreas
      
      -- 
      [Warum nennt sich Andreas hier MudGuard?](http://MudGuard.de/)  
      [Schreinerei Waechter](http://www.schreinerei-waechter.de/)  
      [O o ostern ...](http://ostereier.andreas-waechter.de/)  
      Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.  
      
      
      1. Hallo Andreas!

        Auch wenn ich von XSL etc. keine Ahnung, aber das

        [ERROR] property - "reference-orientation" is not implemented yet.

        ist doch ziemlich eindeutig: Der von dir verwendete Parser kann mit "reference-orientation" (noch) nichts anfangen.

        Servus

        --
        flowh .
  2. Hallo,

    kann mal jemand bitte den Wald zur Seite räumen, damit ich den Baum wieder sehe?

    Ich transformiere XML-Files zu PDF-Files, dabei kommt fop 0.20.5 zum Einsatz.

    Gibt es eine einfache Möglichkeit, einen Wert aus dem XML-File um 90° gedreht auszugeben?

    Was mit einfällt ist, dass du den Text als SVG einfügst, darin kannst du den Text drehen.
    z.B:
    <xsl:template match="blablabla">
     fo:instream-foreign-object
        <svg:svg xmlns:svg="http://www.w3.org/2000/svg" width="10pt" height="39pt">
     ... weitere SGV/XSLT/FO Angaben.

    Grüße
    Thomas

    1. Hi,

      Was mit einfällt ist, dass du den Text als SVG einfügst, darin kannst du den Text drehen.

      Klappt leider nicht.

      fo:instream-foreign-object
          <svg:svg xmlns:svg="http://www.w3.org/2000/svg" width="10pt" height="39pt">

      Es wird zwar der entsprechende Platz reserviert, aber egal was ich in diesem Platz zeichne (rectangle, ellipse, text, ...), es erscheint nicht ...

      cu,
      Andreas

      --
      Warum nennt sich Andreas hier MudGuard?
      Schreinerei Waechter
      O o ostern ...
      Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
    2. Hi,

      Was mit einfällt ist, dass du den Text als SVG einfügst, darin kannst du den Text drehen.
      z.B:
      <xsl:template match="blablabla">
      fo:instream-foreign-object
          <svg:svg xmlns:svg="http://www.w3.org/2000/svg" width="10pt" height="39pt">

      Ich ziehe meine Aussage von gestern abend zurück. Es funktioniert mit dem Text (Rechtecke usw. erscheinen nicht).
      Text erscheint, wenn ich ihm eine fill-Farbe mitgebe ;-)
      Und beim Rotieren um 90° hat es den Text dann auch noch aus dem sichtbaren Bereich rausgeschoben ...

      Aber jetzt ist der Text da, wo er sein soll.

      Danke nochmal!

      cu,
      Andreas

      --
      Warum nennt sich Andreas hier MudGuard?
      Schreinerei Waechter
      O o ostern ...
      Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
      1. Tach MudGuard,

        Und beim Rotieren um 90° hat es den Text dann auch noch aus dem sichtbaren Bereich rausgeschoben ...

        Vermutlich wurde transform="rotate(90)" verwendet, womit (0,0) als Drehpunkt angenommen wird. Nach dem Winkel lassen sich aber auch andere Koordinaten angeben (w,x,y).

        Aber jetzt ist der Text da, wo er sein soll.

        Auf jeden Fall eine interessante Idee von Thomas. Ich habe zwar auch schon mehre 100 KB große SVGs ins FO-Rendering eingebunden, aber dieses Vorgehen für erweiterte Textpositionierung ist eine merkenswerte nützliche Option.

        Man liest sich,
        svg4you

        1. Hi,

          Vermutlich wurde transform="rotate(90)" verwendet,

          falsch, rotate(270)  ;-)

          womit (0,0) als Drehpunkt angenommen wird. Nach dem Winkel lassen sich aber auch andere Koordinaten angeben (w,x,y).

          Ah, danke, war mir entfallen (hab schon ewig nichts mehr mit svg gemacht).

          Auf jeden Fall eine interessante Idee von Thomas.

          Deine war ja auch nicht schlecht - nur leider halt noch nicht implementiert in 0.20.5 ...

          cu,
          Andreas

          --
          Warum nennt sich Andreas hier MudGuard?
          Schreinerei Waechter
          O o ostern ...
          Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.