Мне недавно пришлось перейти с iTextSharp на iText 7 из-за поддержки SVG.
Что я обнаружил, так это то, что масштабирование и расположение векторного изображения поверх 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>
Поскольку это изображение будет создано автоматически, я не могу контролировать его структуру или содержимое.
Добавление изображения на холст выглядит так:
это неправильно
тогда как он должен выглядеть следующим образом (это из веб-интерфейса, где векторное изображение добавляется как оверлей к элементу div, содержащему фоновое изображение)
это правильно
Я что-то упустил? Кто-нибудь может направить меня, чтобы оно выглядело как второе изображение, при создании PDF и добавлении векторного изображения на холст?
Кроме того, есть идеи, почему цвет вдруг стал черным?
Заранее спасибо.