使用C#或asp.net使用Append bytes []将许多Pdf合并为单个pdf

时间:2012-09-28 13:29:01

标签: c# asp.net

问题:

  1. 我的数据表中有字节数组。
  2. 每个byte[]是一个订单的单个pdf文件。
  3. 我只想在一个byte[]中将所有这些pdf byte[]用于单个文件。
  4. 我只想将其保存到浏览器中。

    我可以附加byte[],但会以pdf格式创建一个byte[]数据。

    以下我在控制台应用程序中所做的示例实际上我想要在我的Web应用程序中。

    这是我的代码:

    public void NewPdf(string[] Pdf)
    {
    
        byte[] newPdf;
        MemoryStream ms = new MemoryStream();
        foreach (var onepdf in Pdf)
        {
            newPdf = System.IO.File.ReadAllBytes(onepdf);
          //newPdf=System.Convert.FromBase64String(onepdf);
          // int resultPdf = newPdf.Length;
          // ms.Write(newPdf, 0, newPdf.Length);
          // var ms = new MemoryStream(new byte[resultPdf], 0, resultPdf, true, true);
           ms.Write(newPdf, 0, newPdf.Length);
           //ms.Write(baadF00d, 0, baadF00d.Length);
    
           //System.Buffer.BlockCopy(newPdf, 0, resultPdf, 0, newPdf.Length);
        }
        byte[] merged = ms.GetBuffer();
       // File.WriteAllBytes("testpdf.pdf", merged);
        PdfReader reader = new PdfReader(merged);
        int n = reader.NumberOfPages;
        Document document = new Document(reader.GetPageSizeWithRotation(1));
        PdfWriter writer = PdfWriter.GetInstance(document, new FileStream("thugs.pdf", FileMode.Create));
        document.Open();
        PdfContentByte cb = writer.DirectContent;
        PdfImportedPage page;
        int rotation;
        int i = 0;
        while (i < n)
        {
            i++;
            document.SetPageSize(reader.GetPageSizeWithRotation(i));
            document.NewPage();
            page = writer.GetImportedPage(reader, i);
            rotation = reader.GetPageRotation(i);
            if (rotation == 90 || rotation == 270)
            {
                cb.AddTemplate(page, 0, -1f, 1f, 0, 0, reader.GetPageSizeWithRotation(i).Height);
            }
            else
            {
                cb.AddTemplate(page, 1f, 0, 0, 1f, 0, 0);
    
            }
        }
        reader = new PdfReader(merged);
        // we retrieve the total number of pages
        n = reader.NumberOfPages;
        document.Close();
    
    }
    

    其实我正在尝试用asp.net mvc2 ....

    我可以在mvc2中返回byte[]

    return File(bytes, mimeType);
    

0 个答案:

没有答案