2011-07-01 48 views
7

有谁知道如何用C#创建PDF并在此PDF内添加SVG文档?将SVG以编程方式嵌入到.NET中C#

itextsharp无法做到这一点。

由于这个库(http://svg.codeplex.com/),我将SVG转换为图像,但我需要保留矢量图形,因为图像是像素化的。

任何人都知道图书馆做到这一点?

感谢,

+0

itextsharp有可能。 'MyImageStream = new MemoryStream(); myChart.SaveImage(MyImageStream);' 我的图表将是svg图表对象 – Armance

+1

我改变了这种方式。我在emf中转换svg并生成一个docx。但是,如果在缩放图像时使用此解决方案,它不是像素化的?如果它不是像素化,则将其作为解决方案。但我不能再测试了,因为我改变了所有的代码。 – Dragouf

回答

3

PrinceXML做处理SVG一个很好的工作,但是,它不是完全免费的,这意味着免费版本把一个小标识在输出PDF。您可以在这里找到更多:http://www.princexml.com/doc/7.0/svg/

PDFJet将允许您创建线条,圆形,多边形和其他原始绘图工具。你可以创建一个类来解析你的SVG,然后绘制适当的圆,弧,线等,并使用PDFJet来制作PDF。 PDFJet可以在这里下载:http://pdfjet.com/os/edition.html

除此之外,我不认为有很多其他的选择你想要做什么。

+0

第二种解决方案非常复杂。第一个很好,但我不能接受一个标志。 – Dragouf

+0

@Dragouf - 实际上,这里有一个SVG库:[C#中的SVG框架和SVG-GDI +桥](http://www.codeproject.com/KB/cs/svgnet.aspx)你可以使用这个库解析SVG,然后使用PDFJet甚至iTextSharp绘制多边形,直线和圆弧图元。 – Icemanind

+0

这似乎是一个长的编码,我没有足够的时间。但是,如果我很好理解,似乎pdf可以嵌入svg xobject。对于我来说,我使用inkscape命令行转换svg,然后将pdf与itextsharp合并。但是我无法在页面上正确定位生成的对象...:s – Dragouf

1

webSupergoo ABCpdf也是一个很好的商业选择,有点不贵(ABCpdf标准版需要329美元,而ABCpdf Pro需要479美元,如果你想渲染或x64支持)。第7版在处理SVG文件方面做得很糟糕(它只能载入一小部分,经常遇到问题),但我明白(没有亲自测试过)版本8(现在是9)大大改进了SVG支持切换到Gecko engine

+0

不幸的是,它对Azure有很糟糕的支持......他们在自己的网站上声明必须设置虚拟机。我正尝试使用'ABCpdf'将解决方案迁移到Azure Web App,并且此库目前是唯一的障碍... – Azimuth

相关问题