我试图在PDF文档中插入一个SVG,但是我一直得到这样的异常:
Nullable object must have a value.
堆栈跟踪显示:
at System.ThrowHelper.ThrowInvalidOperationException_InvalidOperation_NoValue()
at iText.Svg.Renderers.Path.Impl.AbstractPathShape.CreatePoint(String coordX, String coordY)
at iText.Svg.Renderers.Impl.PathSvgNodeRenderer.AddMoveToShapes(IPathShape pathShape, String[] pathProperties)
at iText.Svg.Renderers.Impl.PathSvgNodeRenderer.ProcessPathOperator(String[] pathProperties, IPathShape previousShape)
at iText.Svg.Renderers.Impl.PathSvgNodeRenderer.GetShapes()
at iText.Svg.Renderers.Impl.PathSvgNodeRenderer.DoDraw(SvgDrawContext context)
at iText.Svg.Renderers.Impl.AbstractSvgNodeRenderer.Draw(SvgDrawContext context)
at iText.Svg.Renderers.Impl.GroupSvgNodeRenderer.DoDraw(SvgDrawContext context)
at iText.Svg.Renderers.Impl.ClipPathSvgNodeRenderer.DoDraw(SvgDrawContext context)
at iText.Svg.Renderers.Impl.AbstractSvgNodeRenderer.Draw(SvgDrawContext context)
at iText.Svg.Renderers.Impl.AbstractSvgNodeRenderer.DrawInClipPath(SvgDrawContext context)
at iText.Svg.Renderers.Impl.AbstractSvgNodeRenderer.Draw(SvgDrawContext context)
at iText.Svg.Renderers.Impl.AbstractBranchSvgNodeRenderer.DoDraw(SvgDrawContext context)
at iText.Svg.Renderers.Impl.SvgTagSvgNodeRenderer.DoDraw(SvgDrawContext context)
at iText.Svg.Renderers.Impl.AbstractSvgNodeRenderer.Draw(SvgDrawContext context)
at iText.Svg.Renderers.Impl.PdfRootSvgNodeRenderer.Draw(SvgDrawContext context)
at iText.Svg.Converter.SvgConverter.ConvertToXObject(ISvgNodeRenderer topSvgRenderer, PdfDocument document, SvgDrawContext context)
at iText.Svg.Converter.SvgConverter.ConvertToXObject(ISvgProcessorResult processorResult, PdfDocument document, ISvgConverterProperties props)
at iText.Svg.Converter.SvgConverter.ConvertToXObject(Stream stream, PdfDocument document, ISvgConverterProperties props)
at iText.Svg.Converter.SvgConverter.ConvertToXObject(Stream stream, PdfDocument document)
at iText.Svg.Converter.SvgConverter.ConvertToImage(Stream stream, PdfDocument document)
at HPT.Files.Infrastructure.Pdf.PdfProcessingService.GeneratePdfFile(List`1 customPlanStreams, PdfContent pdfContent, ICompressor compressor) in C:\--omited--\PdfProcessingService.cs:line 438
以下是我的SVG的内容:
https://drive.google.com/file/d/1xT941Ps_ulIkv4VUQ1v8iDlE2r6VOUT0/view?usp=sharing
下面是我试图生成这幅图片的方式:
var img = SvgConverter.ConvertToImage(planStream, pdf);
奇怪的是,对于一些SVG,它可以工作,但是大多数SVG都会抛出这个异常。
-what我该试试吗?-what,我做错了吗?
我还尝试将SVG解析为一个XObject,但我得到了相同的异常。如果我接受SVG的内容,它将在浏览器中正确显示。
发布于 2022-04-08 21:05:43
看起来,iText可能有一个bug。SVG的最后一条路,
<path d="M-4.5474735E-13 527.02695L698.51578 527.02695L698.51578 1.364242E-12L-4.5474735E-13 1.364242E-12L-4.5474735E-13 527.02695" stroke="#FF0000" stroke-width="0.068529764" stroke-linecap="round" fill="none" />
具有非常小的震级点,用科学符号表示:-4.5474735E-13
。
通过调试器,它被解析为x:-4.5474735E,y:-13
至于为什么对某些人有效,我猜他们在任何地方都没有那么小的价值。
https://stackoverflow.com/questions/71740377
复制相似问题