首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >IText7 - IText7没有正确绘制SVG文档。

IText7 - IText7没有正确绘制SVG文档。
EN

Stack Overflow用户
提问于 2021-05-31 13:32:45
回答 1查看 240关注 0票数 0

项目信息: .NETCore v3.1 - IText7 v7.1.11

我们有一个由IText7 nuget包创建的PDF文档生成器库,在这里我们可以动态地为我们的客户构建大量的PDF文件。

通常,我们使用的是.jpg格式,但是我们的在线端添加了一个新功能,即我们已经开始处理与UI集成的热点的交互式SVG文件。

因此,当我们的应用程序构建一个PDF文档时,它还需要导入那些SVG文件,我们可以通过以下方式使用它:

代码语言:javascript
复制
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,为什么我们需要把它转换成一个栅格?为什么我们需要一个converter?
  • Is,有一种降低厚度的方法,或者一种不丢失图像质量的方法?

谢谢您抽时间见我!

EN

回答 1

Stack Overflow用户

发布于 2021-06-06 21:03:04

当您调用SvgConverter.ConvertToImageSvgConverter.ConvertToXObject时,您的SVG不会转换成光栅图像--它仍然是矢量图像。因此,您可以使用集成的SVG转换器工作流,实际上您正在与SvgConverter一起使用它。该转换器需要将SVG文件格式处理为更特定于PDF的结构,因此它执行一些转换,因为PDF不直接支持SVG。但这不是矢量->光栅转换。

关于线的厚度问题,首先认为你应该尝试使用最新的版本--据我所见,你正在尝试7.1.11,而它的日期可以追溯到一年左右,7.1.15已经发布。如果问题仍然存在,那么它是iText中SVG支持中的一个bug,您可以尝试最小化SVG文件,看看是否有解决办法来实现适当的转换,直到针对您的情况修复了错误和/或将问题报告给iText (StackOverflow不是报告bug的合适位置)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67774767

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档