Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用C#打印SVG文件,以便在打印输出时获得矢量图像而不是位图?_C#_Svg_Printing - Fatal编程技术网

如何使用C#打印SVG文件,以便在打印输出时获得矢量图像而不是位图?

如何使用C#打印SVG文件,以便在打印输出时获得矢量图像而不是位图?,c#,svg,printing,C#,Svg,Printing,我成功地在我的应用程序中添加了显示和打印svg的功能,以实现我所使用的功能。库从提供的SVG文件渲染位图,就编辑而言,这是可以的。当涉及到打印时,问题就开始了。文件通过PrintDocument组件打印到虚拟PDF打印机,当发送到打印的文本平滑时,svg元素是位图,我想从svg提供的“高质量”外观中获益。有没有办法直接将SVG发送到打印页面而不将其转换为位图?一种可能性:开始打印时,将SVG重新渲染为仅用于打印作业的新位图,其中位图大小考虑了作业的实际打印分辨率。也就是说,如果您以300 dpi

我成功地在我的应用程序中添加了显示和打印svg的功能,以实现我所使用的功能。库从提供的SVG文件渲染位图,就编辑而言,这是可以的。当涉及到打印时,问题就开始了。文件通过PrintDocument组件打印到虚拟PDF打印机,当发送到打印的文本平滑时,svg元素是位图,我想从svg提供的“高质量”外观中获益。有没有办法直接将SVG发送到打印页面而不将其转换为位图?

一种可能性:开始打印时,将SVG重新渲染为仅用于打印作业的新位图,其中位图大小考虑了作业的实际打印分辨率。也就是说,如果您以300 dpi打印,并且希望SVG打印在2x2平方英寸的区域(例如),则位图将是600x600位图,而不是用于屏幕显示的任何位图

请注意,这意味着您的PDF将包含高分辨率位图,使其更大。这解决了质量问题,但以牺牲文件大小为代价

如果没有一个平台API可以将SVG绘制到打印作业的图形实例中(我不知道这一点),那么将SVG数据保持为矢量格式将变得更加困难


也就是说,我没有仔细查看您正在使用的库,但如果它使用Windows API渲染为位图,这意味着可能会绘制HDC(本机Win32)或图形(.NET)实例。您可以将图元文件用于HDC或图形对象,而不是位图,这将保留渲染的矢量性质,而当您将其渲染到PDF打印机驱动程序时,矢量性质可能会保留下来(此时,这将完全取决于PDF打印机驱动程序,这是您无法控制的)。

是的,我没有想到,它不是完美的解决方案,但现在应该做的,我也认为ITExtExk库是某种解决方案,但它需要我做更多的工作。