如何使用C#打印SVG文件,以便在打印输出时获得矢量图像而不是位图?
我成功地在我的应用程序中添加了显示和打印svg的功能,以实现我所使用的功能。库从提供的SVG文件渲染位图,就编辑而言,这是可以的。当涉及到打印时,问题就开始了。文件通过PrintDocument组件打印到虚拟PDF打印机,当发送到打印的文本平滑时,svg元素是位图,我想从svg提供的“高质量”外观中获益。有没有办法直接将SVG发送到打印页面而不将其转换为位图?一种可能性:开始打印时,将SVG重新渲染为仅用于打印作业的新位图,其中位图大小考虑了作业的实际打印分辨率。也就是说,如果您以300 dpi打印,并且希望SVG打印在2x2平方英寸的区域(例如),则位图将是600x600位图,而不是用于屏幕显示的任何位图 请注意,这意味着您的PDF将包含高分辨率位图,使其更大。这解决了质量问题,但以牺牲文件大小为代价 如果没有一个平台API可以将SVG绘制到打印作业的图形实例中(我不知道这一点),那么将SVG数据保持为矢量格式将变得更加困难如何使用C#打印SVG文件,以便在打印输出时获得矢量图像而不是位图?,c#,svg,printing,C#,Svg,Printing,我成功地在我的应用程序中添加了显示和打印svg的功能,以实现我所使用的功能。库从提供的SVG文件渲染位图,就编辑而言,这是可以的。当涉及到打印时,问题就开始了。文件通过PrintDocument组件打印到虚拟PDF打印机,当发送到打印的文本平滑时,svg元素是位图,我想从svg提供的“高质量”外观中获益。有没有办法直接将SVG发送到打印页面而不将其转换为位图?一种可能性:开始打印时,将SVG重新渲染为仅用于打印作业的新位图,其中位图大小考虑了作业的实际打印分辨率。也就是说,如果您以300 dpi
也就是说,我没有仔细查看您正在使用的库,但如果它使用Windows API渲染为位图,这意味着可能会绘制HDC(本机Win32)或图形(.NET)实例。您可以将图元文件用于HDC或图形对象,而不是位图,这将保留渲染的矢量性质,而当您将其渲染到PDF打印机驱动程序时,矢量性质可能会保留下来(此时,这将完全取决于PDF打印机驱动程序,这是您无法控制的)。是的,我没有想到,它不是完美的解决方案,但现在应该做的,我也认为ITExtExk库是某种解决方案,但它需要我做更多的工作。