是否可以在PDFTron中绘制SVG?

问题描述 投票:0回答:1

[以前,我尝试使用Annotation.StampAnnotation在将SVG用作基本图像时创建自定义注释,但是我发现用户无法更改或设置StampAnnotation的颜色。因此,我现在正在使用Annotation.MarkupAnnotation。

截至目前,我在使用drawImage()在CanvasRenderingContext2D上绘制嵌入式SVG(字符串)时遇到麻烦。我在TutorialsPoint上看到了一些代码,并在Javascript沙箱中对其进行了测试,并且似乎可以正常工作。但是,当我用PDFTron实现它时,它仅在PDF上绘制了一个空框。

这是我的代码:

createCustomAnnotation: function (Annotations, annotManager, subject, inlineSVGString) {

        const CustomAnnotation = function () {
            Annotations.MarkupAnnotation.call(this);
            this.Subject = subject;
        }

        CustomAnnotation.prototype = new Annotations.MarkupAnnotation();

        CustomAnnotation.prototype.draw = function (ctx, pageMatrix) {
            this.setStyles(ctx, pageMatrix);

            var DOMURL = window.URL || window.webkitURL || window;
            var img = new Image();
            var svg = new Blob([inlineSVGString], {type: 'image/svg+xml'});
            var url = DOMURL.createObjectURL(svg);
            var x = this.X;
            var y = this.Y;
            img.onload = function() {
                ctx.drawImage(img, x, y, 30, 30);
                DOMURL.revokeObjectURL(url);
            }
            img.src = url;

        }

        return CustomAnnotation;
    }

任何帮助将不胜感激!

谢谢!

javascript svg html5-canvas pdftron
1个回答
0
投票
那里

看起来像Tutorials Point中的示例有语法错误,并且它仅绘制一个空框,如果尝试使用此示例,它将正确绘制文本。

<!DOCTYPE html> <html> <head> <title>SVG file on HTML Canvas </title> </head> <body> <canvas id="myCanvas" style="border:2px solid green;" width="300" height="300"></canvas> <script> var canvas = document.getElementById('myCanvas'); var ctx = canvas.getContext('2d'); var data = '<svg xmlns="http://www.w3.org/2000/svg" width="300" height="200">' + '<foreignObject width="100%" height="100%">' + '<div xmlns="http://www.w3.org/1999/xhtml" style="font-size:50px">' + 'Simply Easy ' + '<span style="color:blue;">' + 'Learning</span>' + '</div>' + '</foreignObject>' + '</svg>'; var DOMURL = window.URL || window.webkitURL || window; var img1 = new Image(); var svg = new Blob([data], {type: 'image/svg+xml'}); var url = DOMURL.createObjectURL(svg); img1.onload = function() { ctx.drawImage(img1, 25, 70); DOMURL.revokeObjectURL(url); } img1.src = url; </script> </body> </html>
© www.soinside.com 2019 - 2024. All rights reserved.