我正在使用C#和Visual Studio 2017。我的Windows表单应用程序中有一个Web浏览器视图。我尝试在Web浏览器视图中查看PDF文件,但无法从我的资源文件夹加载。我不想将文件存储在本地,因为我希望能够在另一台PC上使用它。
在Resources.resx中,我单击了“添加资源”-“添加现有文件”-选择了我的PDF“test.pdf”,然后在属性中,我将文件设置为“嵌入式资源”和“始终复制”
我正在尝试像这样加载文件:
public void loadPDF()
{
string file = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"projectPDF\projectPDF\Resources\test.pdf");
this.webView.Navigate(file);
}
然后在一个按钮点击事件中调用它,如下所示:加载PDF();
现在,当我单击按钮时,文件没有显示在Web浏览器视图中。我哪里出错了?
2条答案
按热度按时间dohp0rv51#
嵌入式资源并不存储在一个神奇的“文件夹”中,它实际上是嵌入到EXE本身中的,因此在程序构建后无法更改。
复制到解决方案中的文件只是您选择要嵌入的文件的副本,在生成程序集时,它使用此副本来嵌入,因为原始文件可能不再位于您先前指定的路径中,尤其是在不同计算机上的团队中工作时。
“始终复制”标志对嵌入的资源没有任何意义,这只是向Visual Studio指示在生成程序时应将文件复制到“bin/Debug”文件夹(使用“Debug”配置)。
您可以沿着以下操作将PDF存储在临时文件中,然后显示它:
不要忘记清理你的临时文件时,你做的pdf!
xtfmy6hx2#
没有临时文件的解决方案:
它会打开一个新的wpf窗口来显示. pdf文件。
用法:
编辑:根据文档:
htmlContent参数不能大于2 MB(2 * 1024 * 1024字节)