【问题标题】:Creating document in Postscript format with C#使用 C# 创建 Postscript 格式的文档
【发布时间】:2010-12-08 05:06:48
【问题描述】:

是否有可用于使用 C# 直接写入 postscript 格式的 API?我目前正在使用 pdfnet 将文档写入 pdf,然后使用 adobe 将其导出到 postscript。但是,在转换过程中会丢失质量,我需要直接转到 postscript 并跳过创建 pdf。

文档包含一个图像,上面覆盖了一些文本。

【问题讨论】:

    标签: c# pdf pdf-generation postscript


    【解决方案1】:

    您知道如何在 C# 中使用文件,对吧?一种非常简单的方法是让您的程序创建一个新的ofstream 或任何 C# 调用它,将其命名为whatever.ps,然后将字符串附加到文件中。它真的很容易学习,但如果你打算这样做的话,我建议你实际获取 Postscript 语言参考手册的打印副本。即使您可以免费获得电子版本,但它确实不如打印副本有用,除非您拥有多个显示器。

    例如,在 C++ 中,要在一张纵向的信纸大小的纸中间画一个 1 英寸的正方形,我会这样做:

    myFile << "%!PS-Adobe-2.0 \n" //header block
           << "%%Creator: INSERT YOUR NAME HERE \n"
           << "%%Title: FILENAME.ps \n"
           << "%%Pages: 1 \n"
           << "%%PageOrder: Ascend \n"
           << "%%BoundingBox: 0 0 612 792 \n"
           << "%%DocumentPaperSizes: Letter \n"
           << "%%EndComments \n"
    
    myFile << "<< /PageSize [612 792] >> setpagedevice \n" //page setup
           << "396 306 translate \n" //set (0,0) to center of page
    
    myFile << "-36 -36 72 72 rectfill \n" //the rectangle at last!
    

    不过,您需要将其翻译成您使用的任何语言。此外,为了更具可读性,您可以将标头块放入其自己的函数中。实际上,您甚至不需要在每个字符串的末尾添加换行符,除了在标题块中。

    【讨论】:

    • 糟糕的答案,首先是极其居高临下,其次是答案与问题无关,还试图使用与问题指定的语言不同的语言来回答。
    • 具有讽刺意味的是,这是我在该主题上看到的最明智的答案之一。 Postscript 是一种非常特殊的语言,编写某种 API 只是为了让它转身并吐出 Postscript 的想法“几乎”毫无意义。如果您想要 postscript 输出并且不想从您已经拥有的某些图形格式转换,那么您可能需要直接生成 postscript。 paulbourke.net/dataformats/postscript 但是,API 的好处是您可以调用语言函数而无需查找 PS 等效项,但我在任何地方都没有见过这样的 API。
    【解决方案2】:

    您可能想尝试不同的解决方案来转换 PDF。例如,Ghostscript 将允许您指定分辨率等。此外,如果最终目的地是打印,那么打印机现在可能支持直接 PDF 打印,这可能有助于解决问题。

    【讨论】:

    • 我曾想过沿着这条路线走下去,这可能就是我最终要做的事情。最终产品实际上是 PDF,但客户要求我通过 Distiller 发送 postscript 文件来创建 PDF。我不确定这是什么技术原因,但客户说这是印刷厂需要的。
    • 您可以尝试将文件发送到印刷厂,看看他们是否可以处理它。它可能会解决您的所有问题。
    【解决方案3】:

    Cairo Graphics - http://www.cairographics.org/ 似乎是一个可能的选择。它绑定到 C#/.NET 和 MONO。

    【讨论】:

    • 我看过这个,但看起来它对字体有一些限制。我使用了一些自定义字体,并且在 Cairo 中看起来我需要实现一些额外的库来处理非标准字体。
    • 如果你不介意 c 那么pslib.sourceforge.net 可能会有用。不幸的是,没有针对 c# 的绑定。还有unifont.org/lasi - 更多字体支持,但仅限 c++。
    猜你喜欢
    • 2011-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多