我正在使用 XNA 框架并希望将多页 PDF 文件合并到我的 XNA 应用程序中。
我知道我可以通过创建自定义导入器和处理器来实现这一点,但我只能找到一个引用自定义导入器/处理器的示例。不幸的是,由于此示例适用于着色器,但它并不是特别有用 - http://msdn.microsoft.com/en-us/library/bb447754.aspx
总结一下,有什么想法可以在我的 XNA 应用程序中实现多页 PDF 吗?
高度赞赏所有答复。
我正在使用 XNA 框架并希望将多页 PDF 文件合并到我的 XNA 应用程序中。
我知道我可以通过创建自定义导入器和处理器来实现这一点,但我只能找到一个引用自定义导入器/处理器的示例。不幸的是,由于此示例适用于着色器,但它并不是特别有用 - http://msdn.microsoft.com/en-us/library/bb447754.aspx
总结一下,有什么想法可以在我的 XNA 应用程序中实现多页 PDF 吗?
高度赞赏所有答复。
内容管道不能很好地处理您的情况。它不支持导入单个文件并生成多个输出(在您的情况下,PDF 到每个页面的纹理)。(参考)
此外,我想您会想要使用第三方的外部命令行工具将您的 PDF 页面转换为纹理(在我看来,ImageMagick 可能是一个不错的起点)。以下方法还可以为您省去将其集成到内容管道中的麻烦。
所以这就是我要做的:首先,在构建内容管道之前运行您的 PDF 转换工具。简单(但缓慢)的地方将是您的内容项目的预构建事件。我建议将 PDF 转换为多个 PNG 文件。
然后使用通配符将所有这些 PNG 文件包含到您的内容项目中。这是一个解释它的问题。
当你去加载你的纹理时,只需使用类似的东西Directory.EnumerateFiles
在适当的内容路径中查找生成的 XNB 文件的名称。
(如果您想在 Visual Studio 中添加拖放功能,您可以使用 MSBuild来删除 PDF 项目并将其替换为通配符 PNG 项目或其他内容。这还具有允许您仅在以下情况下重建 PNG 的优点PDF 更改,使您的构建速度更快。我将把它留作练习。)
当然,如果您只是做一些固定的 PDF 文件 - 只需使用您的工具直接将它们转换为图像,然后将它们添加到您的内容项目中。