C # Добавление Pdf страниц через MemoryStream - PullRequest
4 голосов
/ 15 июля 2011

В настоящее время я работаю над некоторыми отчетами, и мне нужно добавить несколько отчетов в один PDF. Для этого я использую ReportViewer для получения отчетов в другом байте []. Когда у меня есть все отчеты в списке, я присоединяюсь к ним, используя следующий метод

byte[] appendBuffers(List<byte[]> arrays)
        {
            List<byte> byteList = new List<byte>();

            for (int i = 0; i < arrays.Count; i++)
            {
              for (int j = 0; j < arrays[i].Length; j++)
              {
                byteList.Add(arrays[i][j]);
              }
            }

        return byteList.ToArray();
       }

Теперь ... как только я закончу, в полученном байте [] будут все данные, однако, когда я отображаю отчеты на своем веб-сайте, я вижу только последний отчет, который появляется на экране. Есть идеи?

Ответы [ 3 ]

4 голосов
/ 15 июля 2011

Вы не можете объединять PDF-файлы, просто объединяя байты файла.PDF-файлы имеют внутренний формат.Используйте библиотеку PDF, такую ​​как Foxit или PDFSAM, чтобы объединить страницы PDF в один файл.

2 голосов
/ 15 июля 2011

Вы можете использовать Aspose.Pdf для .NET до Конкатенация, вставка или добавление документов PDF из MemoryStream или из файлов.

Раскрытие информации: я работаю евангелистом-разработчиком в Aspose.

1 голос
/ 29 апреля 2012

Как сказал @AresAvatar, вам нужно использовать библиотеку PDF для вашей задачи.

Вот пример того, как это сделать с помощью библиотеки Docotic.Pdf .

byte[] appendBuffers(List<byte[]> arrays)
{
    using (PdfDocument document = new PdfDocument())
    {
        for (int i = 0; i < arrays.Count; i++)
            document.Append(arrays[i]);

        using (MemoryStream ms = new MemoryStream())
        {
            document.Save(ms);
            return ms.ToArray();
        }
    }
}

Отказ от ответственности: я работаю в Bit Miracle (поставщик библиотеки).

...