如何解决iText7 C# SvgConverter unicode 字符未显示
我正在尝试使用 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,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));
}
我错过了什么? 尝试了不同的字体,但没有运气。
解决方法
找到解决方案。
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));
SvgConverterProperties svgConverterProperties = new SvgConverterProperties() ;
FontProgram fontProgram = FontProgramFactory.CreateFont() ;
FontProvider fontProvider = new FontProvider();
fontProvider.AddFont(fontProgram,"windows-1257");
svgConverterProperties.SetFontProvider(fontProvider);
var xx = SvgConverter.ConvertToXObject(svg_logo,stamper.GetDocument(),svgConverterProperties);
new PdfCanvas(appearance.GetLayer0(),stamper.GetDocument()).AddXObjectFittedIntoRectangle(xx,new Rectangle(200,100));
}
我在 SvgConverterProperties 中设置了编码。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。