【发布时间】:2021-03-26 11:03:45
【问题描述】:
我正在尝试使用 iText7 将 svg 图像插入 pdf。我的图像包含语言特定字符,如 unicode Ą 中的 Ą 但它不显示在 pdf 文件中。如果我用浏览器或任何编辑器打开 svg 文件,一切正常。
我的 svg 是:
<svg width="450" height="100" xmlns="http://www.w3.org/2000/svg">
<metadata id="metadata5">image/svg+xml</metadata>
<g>
<title>Layer 1</title>
<g stroke="null" id="layer1">
<text stroke="null" transform="matrix(2.650662232016657,0,0,2.670811106880592,-0.5802407909153997,-0.5590199871829791) " xml:space="preserve" x="3.50000" y="31.68476" id="text3" stroke-width="0.26458" fill="#000000" font-family="Times New Roman" font-size="8px" font-weight="normal" font-style="normal">
<tspan stroke="null" id="tspan3" x="3.09517" y="31.68476" stroke-width="0.26458" font-size="8px">Ą</tspan>
</text>
</g>
</g>
</svg>
我的代码是:
string svg = File.ReadAllText(@"c:\tmp\svg.svg");
string pdf = @"c:\tmp\test.pdf";
PdfReader reader = new PdfReader(pdf);
using(MemoryStream ms = new MemoryStream())
{
PdfSigner stamper = new PdfSigner(reader, ms, new StampingProperties());
PdfSignatureAppearance appearance = stamper.GetSignatureAppearance();
appearance.SetPageRect(new Rectangle(10, 600, 200, 100));
var xx = SvgConverter.ConvertToXObject(svg_logo, stamper.GetDocument());
new PdfCanvas(appearance.GetLayer0(), stamper.GetDocument()).AddXObjectFittedIntoRectangle(xx,new Rectangle(200,100));
}
我错过了什么? 尝试了不同的字体,但没有成功。
【问题讨论】:
-
如果您只是尝试显示普通文本会发生什么?我在互联网上找到了一个示例,其中“x”后面有一个空格。不确定这是否会有所不同。
-
普通文本一切正常。已尝试将文本转换为曲线,但 iText 无法正确显示。 x 后的空格会破坏 svg。
-
那么可能是字体问题。您使用的字体不支持这些字符。请参阅:en.wikipedia.org/wiki/Unicode_font 和 adobe.com/products/type/opentype.html