2010-06-14 39 views
8

Tôi có 2 tệp SVG tôi cần phải phủ bằng Batik. Một tệp phân phối dưới dạng hình nền và là 308px x 308px trong khi tệp thứ hai (260px x 260px) là hình ảnh nền trước phải được căn giữa (đó là ở giữa hình nền). Tôi muốn kết quả của các hoạt động được lưu trong một tập tin SVG thứ ba. Nếu bạn đã quen thuộc với Batik, tôi sẽ đánh giá cao đề xuất của bạn.Làm cách nào để chồng hình ảnh SVG lên một hình ảnh khác bằng Apache Batik?

Xin cảm ơn,

Olivier.

Trả lời

8

Nếu bạn không cần phải bao gồm các nội dung của nền và các văn bản foreground trong một trận chung kết, bạn có thể sử dụng chỉ đơn giản là tham khảo chúng:

<svg xmlns='http://www.w3.org/2000/svg' 
    xmlns:xlink='http://www.w3.org/1999/xlink' 
    width='308' height='308' viewBox='0 0 308 308'> 
    <image xlink:href='background.svg' width='308' height='308'/> 
    <image xlink:href='foreground.svg' x='24' y='24' width='260' height='260'/> 
</svg> 

Nó phải là đơn giản để xây dựng tài liệu này bằng cách sử dụng DOM . Xem here để biết ví dụ về cách sử dụng API DOM để tạo tài liệu.

Nếu bạn cần phải hợp nhất hai tài liệu thành một, sau đó bạn có thể:

  • hãy một = các Document do parsing background.svg
  • hãy b = các Document do phân tích cú pháp foreground.svg
  • let e = a.importNode(b.getDocumentElement(), true)
  • thiết lập xy thuộc tính của e

    đến "24"
  • gọi a.getDocumentElement().appendChild(e)

Bây giờ một là một văn bản với các nội dung foreground sáp nhập trong.

Các vấn đề liên quan