我有一个简单的 C# .net Web 应用程序。我正在使用 XPS 文件。我使用了以下代码
private void button1_Click(object sender, EventArgs e)
{
try
{
string xpsFile = "D:\\Completed-Form.xps";
xpsToBmp(xpsFile);
MessageBox.Show("Done");
}
catch (Exception ex)
{
MessageBox.Show (ex.Message);
}
}
static public void xpsToBmp(string xpsFile)
{
XpsDocument xps = new XpsDocument(xpsFile, System.IO.FileAccess.Read);
FixedDocumentSequence sequence = xps.GetFixedDocumentSequence();
for (int pageCount = 0; pageCount < sequence.DocumentPaginator.PageCount; ++pageCount)
{
DocumentPage page = sequence.DocumentPaginator.GetPage(pageCount);
RenderTargetBitmap toBitmap = new RenderTargetBitmap((int)page.Size.Width,(int)page.Size.Height,96,96,System.Windows.Media.PixelFormats.Default);
toBitmap.Render(page.Visual);
BitmapEncoder bmpEncoder = new BmpBitmapEncoder();
bmpEncoder.Frames.Add(BitmapFrame.Create(toBitmap));
FileStream fStream = new FileStream("D:\\xpstobmp" + pageCount + ".bmp", FileMode.Create, FileAccess.Write);
bmpEncoder.Save(fStream);
fStream.Close();
}
}
当我调试代码时,错误显示为XamlParserException
发生
“对与指定绑定约束匹配的类型‘System.Windows.Documents.DocumentReference’的构造函数的调用引发了异常。”行号“2”和行位置“20”。
在下面的代码行中:
FixedDocumentSequence sequence = xps.GetFixedDocumentSequence();
我已从以下位置下载了示例 XPS 文件http://msdn.microsoft.com/en-us/library/windows/hardware/gg463422.aspx http://msdn.microsoft.com/en-us/library/windows/hardware/gg463422.aspx(我从那里得到了160MB的zip文件。当我解压缩它时,有许多具有.xps扩展名的文件夹和文件。我不知道如何使用这些文件)并在上面的代码中使用。我对这个文件概念很陌生。我不知道如何解决此错误以及如何使用 .xps 文件。我对位图文件也知之甚少。
即使我在作为 Windows 应用程序运行时也遇到了同样的问题。
解决方案是:
调用线程必须处于 STA 模式。 Visual Studio 创建的大多数项目默认设置为 MTA。
您可以做的是在 STA 线程内运行代码。
我尝试过:视觉工作室 2010,
Windows XP Srv Pack 3 64 位,
和.Net Framework 4.0
祝你好运...
如果它解决了您的问题,请接受它作为答案
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)