You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET WinForms项目调用同解决方案API获取PDF的实现问题

解决方案

方案1:直接调用默认浏览器打开API地址(最简便)

你的PDF接口为公开GET请求、无额外鉴权的前提下,无需自行编写HTTP请求逻辑,直接启动系统默认浏览器访问接口地址即可,浏览器会自动处理PDF的加载展示:

using System.Diagnostics;

// 直接调用即可实现需求
Process.Start(new ProcessStartInfo("http://localhost:44344/api/pdfcreator") { UseShellExecute = true });

注意:.NET Core 3.0+以上版本需要显式设置UseShellExecute = true,否则可能无法正常启动浏览器。

方案2:先下载PDF到本地再打开

如果你需要先将PDF文件保存到本地再做后续处理,可以按以下说明修改代码:

核心错误说明

原有代码使用StreamReader读取响应是错误的,StreamReader是用来读取文本内容的工具类,PDF为二进制格式文件,按文本编码转换会直接破坏文件结构,导致文件无法正常打开。

修正后的代码示例

using System.Diagnostics;
using System.IO;
using System.Net;

public void DownloadAndOpenPdf(string apiUrl)
{
    // 生成临时PDF文件存储路径
    string tempPdfPath = Path.Combine(Path.GetTempPath(), $"{Guid.NewGuid()}.pdf");
    
    var request = (HttpWebRequest)WebRequest.Create(apiUrl);
    request.Method = "GET";
    
    using (var response = request.GetResponse())
    using (var responseStream = response.GetResponseStream())
    using (var fileStream = new FileStream(tempPdfPath, FileMode.Create, FileAccess.Write))
    {
        // 直接将二进制响应流写入本地文件,不做文本转换
        responseStream.CopyTo(fileStream);
    }
    
    // 调用系统默认PDF阅读器打开本地文件
    Process.Start(new ProcessStartInfo(tempPdfPath) { UseShellExecute = true });
}

// 调用方式
DownloadAndOpenPdf("http://localhost:44344/api/pdfcreator");

可选优化:使用HttpClient(推荐)

如果是.NET Framework 4.5+或者.NET Core/.NET 5+项目,更推荐使用官方推荐的HttpClient替代已过时的HttpWebRequest:

// 建议将HttpClient声明为静态单例,不要每次请求都新建实例
private static readonly HttpClient _httpClient = new HttpClient();

public async Task DownloadAndOpenPdfAsync(string apiUrl)
{
    string tempPdfPath = Path.Combine(Path.GetTempPath(), $"{Guid.NewGuid()}.pdf");
    
    // 异步获取二进制响应
    byte[] pdfBytes = await _httpClient.GetByteArrayAsync(apiUrl);
    await File.WriteAllBytesAsync(tempPdfPath, pdfBytes);
    
    Process.Start(new ProcessStartInfo(tempPdfPath) { UseShellExecute = true });
}

内容的提问来源于stack exchange,提问作者user3408531

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 13:48:03