.net 哪种方法最适合在C#中创建PostScript?

.net 哪种方法最适合在C#中创建PostScript?,.net,graphics2d,postscript,ikvm,.net,Graphics2d,Postscript,Ikvm,我需要从系统中创建PostScript输出。我们的系统生成多种格式的高格式文档,我需要添加.ps作为附加格式 有一点奇怪,我们的代码都是用Java编写的,我们的库的.net版本使用IKVM。我们有大约5%的代码是用C语言编写的,其余的是用IKVM进行Java转换的 我使用一个库在Java端创建.ps文件,该库允许我写入它提供的Graphics2D对象 所以,为了解决这个问题,我想: 进入IKVM代码,看看我是否可以加快速度。没有关系 感觉它是如此缓慢。 优势,如果有效的话,可能是 最快的分辨率

我需要从系统中创建PostScript输出。我们的系统生成多种格式的高格式文档,我需要添加.ps作为附加格式

有一点奇怪,我们的代码都是用Java编写的,我们的库的.net版本使用IKVM。我们有大约5%的代码是用C语言编写的,其余的是用IKVM进行Java转换的

我使用一个库在Java端创建.ps文件,该库允许我写入它提供的Graphics2D对象

所以,为了解决这个问题,我想:

  • 进入IKVM代码,看看我是否可以加快速度。没有关系 感觉它是如此缓慢。
    • 优势,如果有效的话,可能是 最快的分辨率。现在可以使用未来的Graphics2D库
    • 缺点是,如果我不能,我就浪费了时间。还有,展望未来 我们将拥有自己的IKVM分支机构
  • 调查——如果 工作,将其与PostScriptBuilder一起使用
    • 优点是,这应该非常快速,并且完全正确地处理.ps
    • 缺点是,这只解决了.ps的问题。同样,对于一种我们可能不会有太多销量的格式,每年5公里
    • 在本例中,我将为位图和.wmf输出创建一个GraphicsBuilder,这将是快速而简单的
  • 为.ps创建基于.net图形对象的库。然后就像 Graphics2DOutputBuilder在Java中,在.net中创建Graphics2DOutputBuilder
    • 优点,这是最干净正确的方法。我们可以通过这种方式很容易地添加位图和.emf输出(它们有一种图形对象的写入方式)
    • 缺点是,这是大量的工作,在了解PostScript的所有细节时,我们可能会遇到一些小问题
  • 重写ApacheXML图形库以使用.net调用,而不是Java调用其中的代码。
    • 优点是,这可能比图形方法的工作量少一点
    • 缺点是,当我们这样做了,但任何未来的格式,如SVG,我们也必须重写完整

  • 非常感谢您对解决此问题的任何反馈。

    我们将创建一个IKVM分支(暂定名称Windward MVKI),并将其发布到NuGet上

    我们发现的问题在converter.cs–C2J.ConvertShape()中。它访问path.PathPoints[i]。问题在于每次调用都会创建点数组。将调用移动到for循环之外的PathPoints,然后访问为访问而构建的阵列副本,可以大大加快速度

    换言之:

    for (int i = 0; i < points.Length; i++) {
    PointF point = path.PathPoints[i];
    
    for(int i=0;i
    更改为:

    PointF[] points = path.PathPoints;
    for (int i = 0; i < points.Length; i++) {
    PointF point = points[i];
    
    PointF[]points=path.PathPoints;
    对于(int i=0;i
    选项五,使用IPC将数据从.NET传递到Java,并用Java进行.ps渲染?@glenebob-如果我们说他们的服务器上必须有Java,我敢肯定我们会受到一些人的抵制。如果我们这样做,也许JNI会更好?