C# IText7-IText7未正确绘制SVG文档
项目信息:.NETCore v3.1-IText7 v7.1.11 我们有一个由IText7 nuget软件包创建的PDF文档生成器库,在这里我们可以为客户动态构建大型PDF文件 通常我们使用的是C# IText7-IText7未正确绘制SVG文档,c#,svg,.net-core,itext,itext7,C#,Svg,.net Core,Itext,Itext7,项目信息:.NETCore v3.1-IText7 v7.1.11 我们有一个由IText7 nuget软件包创建的PDF文档生成器库,在这里我们可以为客户动态构建大型PDF文件 通常我们使用的是.jpg格式,但我们的在线端增加了一个新功能,即我们已经开始使用交互式SVG文件,其中热点集成到我们的UI中 因此,当我们的应用程序构建PDF文档时,它还需要导入这些SVG文件,我们可以通过以下方式使用它: var image = SvgConverter.ConvertToImage(
.jpg
格式,但我们的在线端增加了一个新功能,即我们已经开始使用交互式SVG
文件,其中热点集成到我们的UI中
因此,当我们的应用程序构建PDF文档时,它还需要导入这些SVG文件,我们可以通过以下方式使用它:
var image = SvgConverter.ConvertToImage(
new FileStream(imagePath, FileMode.Open, FileAccess.Read), pdfDocument);
原始文件(我无法上传SVG,因此我以jpg的形式上传,但这并不重要,因为我只想显示线条的粗细):
输出如下图所示,正如您在左侧看到的,线条变得非常粗,零件未按预期显示
步骤:
- SvgConverter.DrawOnCanvas(svgStream,pdfCanvas)李>
- SvgConverter.DrawOnDocument(svgStream、pdfDocument)李>
- SvgConverter.DrawOnPage(svgStream,pdfPage)李>
- SvgConverter.ConvertToXObject(svgStream、pdfDocument)李>
- SvgConverter.ConvertToImage(svgStream、pdfDocument)李>
- PDF和SVG文件是矢量,所以我们不能通过IText将它们集成使用,为什么我们需要将其转换为光栅?我们为什么需要转换器
- 有没有一种方法可以减少厚度,或者不损失图像质量
谢谢你抽出时间 调用
SvgConverter.ConvertToImage
或SvgConverter.ConvertToXObject
时,SVG不会转换为光栅图像-它仍然是矢量图像。因此,您可以使用集成的SVG转换器工作流,实际上您正在将其与SvgConverter
一起使用。转换程序需要将SVG文件格式处理为更多特定于PDF的结构,因此它会执行一些转换,因为PDF不直接支持SVG。这不是矢量->光栅转换
关于线条粗细的问题,首先你应该尝试使用最新版本——据我所知,你正在尝试使用7.1.11,而它可以追溯到大约一年前,7.1.15已经过时了。如果问题仍然存在,则这是iText中SVG支持中的一个错误,您可以尝试最小化SVG文件,以查看是否有解决方法来实现正确的转换,直到针对您的情况修复错误和/或将问题报告给iText(StackOverflow不是报告错误的正确位置)。您好,亲爱的Alexey,感谢您抽出时间,我将首先尝试将版本升级到7.1.15,然后重试此方法。Is 7.1.15与.Net Core 3.1完全兼容吗?@Burak是的,它是