在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
今天遇到一个开发任务,需要调取第三方接口,接口返回Stream文件流(pdf文件),然后供用户打印。 以下是源码: public void PrintOrderTestForpdf() { //1、创建实体 PrintOrderInfo model = new PrintOrderInfo() { ApiToken = "XXX", LabelFormat = "A4_2", OutPutFormat = "pdf", PrintCustoms = false, PrintProduct = false, PrintProductFormat = "{sku}", OrderList = new List<PrintOrderDetail>() { new PrintOrderDetail() { OrderId="123456",TrackingNo=""} } }; //2、请求接口,并接收返回的文件流 MemoryStream bts = (MemoryStream)RuiYouPaiDal.Instance.PrintOrderForPdf(model); //3、将文件流写去临时的pdf文件,并打开 Process.Start(GererateFileName(bts)); } /// <summary> /// 将接收到的文件流写入临时文件 /// </summary> /// <param name="result"></param> /// <returns></returns> public static string GererateFileName(MemoryStream result) { var filename = GetGeneratedFileName();//1、生成.pdf格式的临时文件 var fs = new FileStream(filename, FileMode.OpenOrCreate); var w = new BinaryWriter(fs); w.Write(result.ToArray());//2、将接收到的文件流写入临时文件 fs.Close(); result.Close(); return filename; } /// <summary> /// 生成临时文件 /// </summary> /// <returns></returns> public static string GetGeneratedFileName() { var guid = Guid.NewGuid().ToString().Replace("-", ""); var filepath = Path.Combine(Path.GetTempPath(), guid + ".pdf"); return filepath; } 文件流操作总是易忘,只能经常复习,经常总结了。。。。 |
请发表评论