PdfCanvas上SVG图像的定位和缩放错误

时间:2019-04-26 11:06:57

标签: c# itext7

由于SVG的支持,我最近不得不从iTextSharp迁移到iText 7。 我发现,与矢量图像内部的定义相比,在PdfCanvas上缩放和定位矢量图像显得很不合理。

这是我的功能,用于将矢量图像添加到画布:

private static void AddImageToCanvas(Document document, DocumentFileModel documentfile, ImageData image, string stampdata)
{
    var pageSize = new Rectangle(PageSize.A4.GetWidth(), PageSize.A4.GetHeight());
    var docpage = document.GetPdfDocument().AddNewPage(new PageSize(pageSize));
    var canvas = new PdfCanvas(docpage);
    canvas.AddImage(image, pageSize, false);
    SvgConverter.DrawOnCanvas(stampdata, canvas);
    if (image.GetWidth() > image.GetHeight())
        docpage.SetRotation(90);
}

stampdata 包含作为字符串的矢量图像数据:

<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="ansvgroot" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:ansvg="http://dev.elform.net/public/ansvg" viewBox="0 0 1015 276" xmlns="http://www.w3.org/2000/svg">
  <defs>
    <style type="text/css">
      text {
        text-antialiasing: true;
        text-rendering: geometricPrecision;
      }
      image {
        image-rendering: optimizeQuality;
      }
    </style>
  </defs>
  <g transform="scale(0.05)">
    <g ansvg:layer="0" ansvg:type="TextStamp" ansvg:id="e7c69dd4-aecc-4220-9dae-d84f6b076f51">
      <text x="1423" y="924" style="font-family:'Microsoft Sans Serif',Geneva,sans-serif; font-size:220px; fill:#0000ff; white-space: nowrap" xml:space="preserve">Info: JPG</text>
    </g>
  </g>
</svg>

由于此图像将自动生成,因此我无法控制其结构或内容。

将图像添加到画布,如下所示:

this is wrong

它看起来应该是这样的(这是从Web前端开始的,矢量图像是作为叠加层添加到div的,包含背景图像)

this is correct

我想念什么吗?创建pdf并将矢量图像添加到画布时,谁能引导我,使其看起来像第二张图像? 还有,为什么颜色突然变成黑色?

谢谢。

0 个答案:

没有答案