【问题标题】:Creating a custom PDF importer for XNA为 XNA 创建自定义 PDF 导入器
【发布时间】:2010-11-03 10:43:10
【问题描述】:

我正在使用 XNA 框架并希望将多页 PDF 文件合并到我的 XNA 应用程序中。

我知道我可以通过创建自定义导入器和处理器来实现这一点,但我只能找到一个引用自定义导入器/处理器的示例。不幸的是,由于此示例适用于着色器,但它并不是特别有用 - http://msdn.microsoft.com/en-us/library/bb447754.aspx

总结一下,有什么想法可以在我的 XNA 应用程序中实现多页 PDF 吗?

非常感谢所有回复。

【问题讨论】:

    标签: pdf xna processor


    【解决方案1】:

    内容管道不能很好地处理您的情况。它不支持导入单个文件并生成多个输出(在您的情况下,PDF 到每个页面的纹理)。 (reference)

    此外,我想您会想要使用第三方的外部命令行工具将您的 PDF 页面转换为纹理(在我看来,ImageMagick 可能是一个不错的起点)。以下方法还可以为您省去将其集成到内容管道中的麻烦。

    这就是我要做的:首先,在构建内容管道之前运行您的 PDF 转换工具。简单(但缓慢)的地方将是您的内容项目的预构建事件。我建议将 PDF 转换为多个 PNG 文件。

    然后使用通配符将所有这些 PNG 文件包含到您的内容项目中。 Here's a question that explains it.

    当您加载纹理时,只需使用 Directory.EnumerateFiles 之类的内容即可在相应的内容路径中查找生成的 XNB 文件的名称。

    (如果您想在 Visual Studio 中添加拖放功能,您可以 mess about with MSBuild 删除 PDF 项目并将其替换为通配符 PNG 项目或其他内容。这还有一个优点是允许您只重建您的PDF 更改时的 PNG,使您的构建速度更快。我将把它留作练习。)

    当然,如果您只是制作一些固定的 PDF 文件 - 只需使用您的工具直接将它们转换为图像,然后将它们添加到您的内容项目中。

    【讨论】:

    • 谢谢您,自从发布此内容后,我确实决定将 PDF 转换为 PNG,然后再使用它们。感谢您的详细回答!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-15
    相关资源
    最近更新 更多