2016-06-24 10 views
2

Я создаю фоновый текст в документ XSL FO таким образом:Настройка XSL FO фоновое изображение из внедренного 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> 

Есть ли способ отображения этого SVG в фоновом режиме страницы? Проблема заключается в том, что импортирование внешнего изображения водяного знак работает отлично, но я не найти способ, чтобы установить этот встроенного SVG в качестве фонового изображения ...

ответ

7

Вот один из способов. Чтобы сделать фоновое изображение на странице, вы можете установить размер области - после высоты страницы, а затем использовать статическое содержимое этого региона для размещения изображения. Я не делал ничего особенного с вашим изображением, но, делая это таким образом, вы могли бы сделать SVG размером страницы, а затем сделать красивое рабочее центрирование и тому подобное.

(я изменил цвет, чтобы сделать его легче увидеть):

<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> 

Результат использования Apache FOP:

enter image description here

Конечно, вы можете настроить позиционирование, размер, вращение и т. д. Я использую немного другой водяной знак SVG, здесь для вас, если хотите:

 <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> 

Однако, я проверил только этот второй водяной знак с RenderX XEP. Он не работает с FOP, поскольку что-то не поддерживается.

Пример:

enter image description here

+1

Это upvote должно сделать вас номер 1 XSL-FO Ответчик всех времен; поздравления! –