Member 11868713 Ответов: 1

Создание нескольких PDF-файлов из одного отчета RDLC в соответствии со страницами


Я хочу создать несколько PDF-файлов из одного отчета RDLC по страницам. Например: если у меня есть 3 страницы в отчете RDLC, то я хочу визуализировать 3 PDF-файла. Как я могу это сделать? Пожалуйста помочь.

заранее спасибо

Что я уже пробовал:

bytes = oReportViewer.LocalReport.Render(
                    "PDF", null, out mimeType, out encoding,
                     out extension,
                    out streamids, out warnings);

Garth J Lancaster

Я не уверен, что это возможно. Какой контроль Вы имеете над операцией SQL, выбирающей данные из источника данных ? (Я думаю, что если вы используете SQL Server, вы можете использовать OFFSET & FETCH для разбиения данных на страницы)

1 Ответов

Рейтинг:
1

Sandeep Mewara

Если вы хотите играть с PDF (объединить несколько в один или разделить один на несколько), я бы предложил взять это как отдельную задачу здесь, а не прогонять ее через отчет RDLC.

Используйте любую бесплатную библиотеку thrid party, которая может разделить pdf-файл на страницы в соответствии с вашими потребностями. Например, я бы взял отчет RDLC, а затем использовал его в качестве входных данных для PDFSharp, чтобы разбить его на несколько pdf-файлов на страницу.
Пример:

// Get a fresh copy of the sample PDF file
const string filename = "Portable Document Format.pdf";
File.Copy(Path.Combine("../../../../../PDFs/", filename),
Path.Combine(Directory.GetCurrentDirectory(), filename), true);
// Open the file
PdfDocument inputDocument = PdfReader.Open(filename, PdfDocumentOpenMode.Import);
string name = Path.GetFileNameWithoutExtension(filename);

for (int idx = 0; idx < inputDocument.PageCount; idx++)
{
// Create new document
PdfDocument outputDocument = new PdfDocument();
outputDocument.Version = inputDocument.Version;
outputDocument.Info.Title =
String.Format("Page {0} of {1}", idx + 1, inputDocument.Info.Title);
outputDocument.Info.Creator = inputDocument.Info.Creator;
// Add the page and save it
outputDocument.AddPage(inputDocument.Pages[idx]);
outputDocument.Save(String.Format("{0} - Page {1}_tempfile.pdf", name, idx + 1));
}

Ссылка: Пример PDFsharp: разделенный документ - PDFsharp и MigraDoc Wiki[^]