我有一个 .NET 网站和一个页面,当导航到(使用 EssentialObjects PDF 库)时将返回生成的 PDF。
我希望有另一个页面能够在循环中多次调用 Server.Execute 并执行 PDF 页面的 URL,并使用返回的响应在内存中创建 PDF 并使用 DotNetZip 压缩它们并返回此包含多个 PDF 的最终 zip 文件给用户。
我该怎么做呢?
对于任何想要这样做的人,我最终都使用了这段代码。然后可以轻松地将其放入一个循环中以获取一大堆页面,将它们转换为 PDF,然后将它们全部压缩到一个 zip 文件中。
Dictionary<string, byte[]> pdfByteList = new Dictionary<string, byte[]>();
string pageName = "TestPage";
string htmlToConvert = GetHTML(pageName); //Perform the Server.Execute() code here and return the HTML
PdfConverter converter = new PdfConverter();
byte[] pdfBytes = converter.GetPdfBytesFromHtmlString(htmlToConvert);
pdfByteList.Add(pageName, pdfBytes);
using (ZipFile zip = new ZipFile())
{
int i = 0;
foreach(KeyValuePair<string,byte[]> kvp in pdfByteList)
{
zip.AddEntry(kvp.Key, kvp.Value);
i++;
}
Response.Clear();
Response.BufferOutput = true; // false = stream immediately
Response.ContentType = "application/zip";
Response.AddHeader("content-disposition", "attachment; filename=TheZipFile.zip");
zip.Save(Response.OutputStream);
}