由于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>
由于此图像将自动生成,因此我无法控制其结构或内容。
将图像添加到画布,如下所示:
它看起来应该是这样的(这是从Web前端开始的,矢量图像是作为叠加层添加到div的,包含背景图像)
我想念什么吗?创建pdf并将矢量图像添加到画布时,谁能引导我,使其看起来像第二张图像? 还有,为什么颜色突然变成黑色?
谢谢。