Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将多个流复制到1中供客户端下载?_C#_Asp.net Core_Itext - Fatal编程技术网

C# 如何将多个流复制到1中供客户端下载?

C# 如何将多个流复制到1中供客户端下载?,c#,asp.net-core,itext,C#,Asp.net Core,Itext,我现在正在使用c#和asp core 3 string templatePath = Path.Combine(_webHostEnvironment.WebRootPath, @"templates\pdf\test.pdf"); Stream finalStream = new MemoryStream(); foreach (Info p in list) { Stream pdfInputStream = new FileStream(path: templatePath, m

我现在正在使用c#和asp core 3

string templatePath = Path.Combine(_webHostEnvironment.WebRootPath, @"templates\pdf\test.pdf");
Stream finalStream = new MemoryStream();

foreach (Info p in list)
{
    Stream pdfInputStream = new FileStream(path: templatePath, mode: FileMode.Open);
    Stream outStream = PdfService.FillForm(pdfInputStream, p);
    outStream.Position = 0;
    outStream.CopyTo(finalStream);
    outStream.Dispose();
    pdfInputStream.Dispose();
}

finalStream.Position = 0;
return File(finalStream, "application/pdf", "test.pdf"));
现在我刚刚得到了第一个PDF,应该有3个。如何将循环中创建的所有流(PDF)合并为1个PDF?我正在使用iTextSharp,并以此为指导生成FillForm代码


您不能通过将PDF添加到单个流中来组合它们:-)

您可以将每个PDF流添加到一个数组中,并请求ITextSharp将其合并,然后返回新创建的流

List<Stream> pdfStreams = new List<Stream>();

foreach(var item in list)
{
   // Open PDF + fill form
   pdfStreams.Add(outstream);
}

var newStream = Merge(pdfStreams);

return File(newStream)
List pdfStreams=new List();
foreach(列表中的变量项)
{
//打开PDF+填写表格
pdfStreams.Add(扩展);
}
var newStream=合并(pdfStreams);
返回文件(新闻流)
我不知道ITextSharp,但似乎您可以合并PDF:

编辑
顺便说一下,您可以使用“使用”语句作为流(您不必调用Debug自己),而且我不知道您的PDF有多重,但是您应该考虑使用“.CopytoAsTyc”。p> 您不能通过将PDF添加到单个流中来组合它们:-)

您可以将每个PDF流添加到一个数组中,并请求ITextSharp将其合并,然后返回新创建的流

List<Stream> pdfStreams = new List<Stream>();

foreach(var item in list)
{
   // Open PDF + fill form
   pdfStreams.Add(outstream);
}

var newStream = Merge(pdfStreams);

return File(newStream)
List pdfStreams=new List();
foreach(列表中的变量项)
{
//打开PDF+填写表格
pdfStreams.Add(扩展);
}
var newStream=合并(pdfStreams);
返回文件(新闻流)
我不知道ITextSharp,但似乎您可以合并PDF:

编辑
顺便说一下,您可以使用“使用”语句作为流(您不必调用Debug自己),而且我不知道您的PDF有多重,但是您应该考虑使用“.CopytoAsTyc”。p> 请求只能返回一个流。我建议将3个PDF打包成一个zip并返回zip。请求只能返回一个流。我建议将3个PDF打包到一个zip中并返回zip。我最初是这样做的,但当我将流返回到客户端时,收到一个错误,即流已关闭。这就是有效的方法。我将在之后再次访问,并在一切正常后再次尝试使用语句。谢谢你的帮助!另外,在您提供的合并链接中,是否可以不保存需要临时文件夹来存储的PDF而将其合并到内存中,这样就不会保存到服务器上?也许此链接可以帮助您:。我最初是这样做的,但在将流返回到客户端时,收到一个错误,即流已关闭。这就是有效的方法。我将在之后再次访问,并在一切正常后再次尝试使用语句。谢谢你的帮助!另外,在您提供的合并链接中,是否可以不保存需要临时文件夹来存储的PDF文件,并将它们合并到内存中,这样就不会保存到服务器?也许此链接可以帮助您:。