UNPKG

lichen-annotate-pdf

Version:

Annotation layer for pdf.js in vue fork of Aaron Leong pdf-annotate-vue

57 lines (51 loc) 2.01 kB
import setAttributes from '../utils/setAttributes'; import normalizeColor from '../utils/normalizeColor'; /** * Create SVGTextElement from an annotation definition. * This is used for anntations of type `textbox`. * * @param {Object} a The annotation definition * @return {SVGTextElement} A text to be rendered */ export default function renderText (a) { // Text should be rendered at 0 degrees relative to // document rotation let text = document.createElementNS('http://www.w3.org/2000/svg', 'text'); setAttributes(text, { x: a.x, y: a.y, fill: normalizeColor(a.color || '#000'), fontSize: a.size, transform: `rotate(${a.rotation})`, style: 'white-space: pre', filter: 'url(#solid)' }); text.innerHTML = a.content; // CODE POUR BACKGROUND TEXTE var defs = document.createElementNS("http://www.w3.org/2000/svg", "defs"); var filter = document.createElementNS("http://www.w3.org/2000/svg", "filter"); filter.setAttribute("id", "f2"); filter.setAttribute("x", "0"); filter.setAttribute("y", "0"); var flood = document.createElementNS("http://www.w3.org/2000/svg", "feFlood"); flood.setAttribute("flood-color", "#f562ed"); flood.setAttribute("flood-opacity", "0.2"); flood.setAttribute("result", "bg"); var merge = document.createElementNS("http://www.w3.org/2000/svg", "feMerge"); var mergeNode1 = document.createElementNS("http://www.w3.org/2000/svg", "feMergeNode"); mergeNode1.setAttribute('in', 'bg') var mergeNode2 = document.createElementNS("http://www.w3.org/2000/svg", "feMergeNode"); mergeNode2.setAttribute('in', 'SourceGraphic') // FIN CODE POUR BACKGROUND TEXTE let g = document.createElementNS('http://www.w3.org/2000/svg', 'g'); g.appendChild(text); merge.appendChild(mergeNode1); merge.appendChild(mergeNode2); filter.appendChild(flood); filter.appendChild(merge); defs.appendChild(filter); g.appendChild(defs); text.setAttribute("filter", "url(#f2)"); // g.appendChild(rect); return g; }