我正在使用XNA框架,并希望将多页PDF文件合并到我的XNA应用程序中。
我知道我可以通过创建自定义导入程序和处理器来实现此目的,但我只能找到一个引用自定义导入程序/处理器的示例。不幸的是,由于此示例适用于着色器,因此它不是特别有用 - http://msdn.microsoft.com/en-us/library/bb447754.aspx
总结一下,任何想法如何在我的XNA应用程序中实现多页面PDF?
所有回复都受到高度赞赏。
答案 0 :(得分: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文件 - 只需使用您的工具直接将它们转换为图像,然后将其添加到您的内容项目中。