如何从浏览器打开存储在硬盘驱动器上的 PDF

How to open PDF that is stored on a hard drive from a Browser

我正在将一个旧的 Silverlight 应用程序转换为 .NET Core 6 上的 Blazor Server。该应用程序是一个客户服务应用程序。

一个功能是查看存储在硬盘上的文件。例如,有一个 PDF 格式的客户合同存储在共享驱动器上。该文件的路径存储在数据库中。因此,在 Silverlight 应用程序中,最终用户只需单击“查看合同”按钮并使用文件路径,Silverlight 就会在 Adob​​e Reader 或与文件类型关联的任何应用程序中打开文件和。此功能运行良好。

现在我需要在 Blazor 中复制该功能,这当然只是一个浏览器。如果 PDF 在 SQL 服务器中以字节的形式存储在数据库中,服务器将很容易获取文档,然后将其作为文档提供给最终用户。但它存储在共享驱动器上。

在这种情况下如何提供 PDF?

好吧,事实证明这比我想象的要使用 PDF 查看器组件要容易。

<SfPdfViewerServer DocumentPath="@DocumentPath" Height="100%" Width="1060px" ></SfPdfViewerServer>

 @code{
 private string DocumentPath { get; set; } = @"S:\Path\To\Test.pdf";
 }

显然,服务器必须具有访问 PDF 位置的权限才能正常工作。但效果很好。此示例是 Syncfusion PDF 组件。

使用 SyncFusion 意味着您必须在页面内呈现组件。我已经使用了两个 SyncFusion 组件来渲染 PDF,但性能并不理想。我宁愿建议您添加 <a target="_blank" href="URI"> 来调用在查询字符串中传递 N 个参数的端点。然后,你 return 文档。这样流媒体就在服务器和浏览器之间,应用程序是 non-blocking.