2016-06-24 19 views
2

Ich verursache einen Hintergrundtext innerhalb ein XSL-FO-Dokument auf diese Weise:Einstellung XSL FO Hintergrundbild von eingebettetem SVG

<svg:svg width="285" height="70"> 
     <svg:g transform="rotate(-5)"> 
      <svg:text x="10" y="60" style="font-family:Courier;font-size:40;font-weight:normal;stroke-width:0.5;fill:none;stroke:lightgray;stroke-opacity:0.75;"> 
        Background Watermark Text 
      </svg:text> 
     </svg:g> 
</svg:svg> 

Gibt es eine Möglichkeit, diese SVG im Hintergrund der Seite angezeigt werden? Das Problem ist, dass ein externe Bild importieren als Wasserzeichen funktioniert gut, aber ich finde keine Möglichkeit, diese als Hintergrundbild eingebettet SVG zu setzen ...

Antwort

7

Hier ist eine Art und Weise. Um ein Hintergrundbild auf einer Seite zu erstellen, können Sie die Ausdehnung der Region nach der Höhe der Seite festlegen und dann den statischen Inhalt dieser Region verwenden, um das Bild zu platzieren. Ich habe mit deinem Bild nichts besonderes gemacht, aber wenn du es so machst, könntest du das SVG so groß wie die Seite machen und dann eine schöne Job-Zentrierung und so machen.

(änderte ich die Farbe, die es einfacher zu machen, um zu sehen):

<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format" 
     xmlns:rx="http://www.renderx.com/XSL/Extensions"> 
     <fo:layout-master-set> 
      <fo:simple-page-master page-width="8in" page-height="11in" master-name="first"> 
       <fo:region-body margin-top="1in" margin-left="1in" margin-bottom="1in" 
        margin-right="1in"/> 
       <fo:region-before extent="0pt"/> 
       <fo:region-after extent="11in"/> 
      </fo:simple-page-master> 
     </fo:layout-master-set> 
     <fo:page-sequence master-reference="first"> 
      <fo:static-content flow-name="xsl-region-before"> 
       <fo:block line-height="0"> 
        <fo:instream-foreign-object> 
         <svg:svg width="285" height="70" xmlns:svg="http://www.w3.org/2000/svg"> 
          <svg:g transform="rotate(-5)"> 
           <svg:text x="10" y="60" style="font-family:Courier;font-size:40;font-weight:normal;stroke-width:0.5;fill:cyan;stroke:lightgray;stroke-opacity:0.75;"> 
            Background Watermark Text 
           </svg:text> 
          </svg:g> 
         </svg:svg> 
        </fo:instream-foreign-object> 
       </fo:block> 
      </fo:static-content> 
      <fo:flow flow-name="xsl-region-body"> 
       <fo:block> 
        I am a happy little block in the page. I am a happy little block in the page. I am a happy little block in the page. I am a happy little block in the page. 
       </fo:block> 
       <fo:block> 
        I am a happy little block in the page. I am a happy little block in the page. I am a happy little block in the page. I am a happy little block in the page. 
       </fo:block> 
       <fo:block> 
        I am a happy little block in the page. I am a happy little block in the page. I am a happy little block in the page. I am a happy little block in the page. 
       </fo:block> 
      </fo:flow> 
     </fo:page-sequence> 
    </fo:root> 

Ergebnis mit Apache FOP:

enter image description here

Natürlich können Sie Ihre Positionierung, Größe, Rotation einstellen , etc. Ich benutze ein bisschen anderes Wasserzeichen SVG, hier für Sie, wenn Sie wünschen:

 <svg width="612pt" height="792pt" xmlns="http://www.w3.org/2000/svg" version="1.1"> 
      <text transform="translate(306pt, 396pt) rotate(47)" text-anchor="middle" fill="rgb(255,0,0)" font-family="Helvetica" font-size="92pt" stroke="rgb(255,0,0)" fill-opacity="0.07">WATERMARK</text> 
     </svg> 

Allerdings habe ich dieses zweite Watermark nur mit RenderX XEP getestet. Es funktioniert nicht mit FOP, da etwas nicht unterstützt wird.

Probe:

enter image description here

+1

Diese upvote sollten Sie die Nummer 1 xsl-fo Antworter aller Zeiten machen; Herzliche Glückwünsche! –