Merge PDF files with PDFSharp returns blank pages

I am trying to merge 2 pdf data from an rdlc report.

The problem is that these are blank pages.

I don’t know why, can someone help me.

here is my code:

private ActionResult ConcatPdf(byte[] pdfData1, byte[] pdfData2) { MemoryStream ms1 = new MemoryStream(pdfData1); MemoryStream ms2 = new MemoryStream(pdfData2); PdfDocument inputDoc1 = PdfReader.Open(ms1, PdfDocumentOpenMode.Import); PdfDocument inputDoc2 = PdfReader.Open(ms2, PdfDocumentOpenMode.Import); PdfDocument outputDoc = new PdfDocument(); foreach (PdfPage page in inputDoc1.Pages) { outputDoc.AddPage(page); } foreach (PdfPage page in inputDoc2.Pages) { outputDoc.AddPage(page); } MemoryStream outputMs = new MemoryStream(); outputDoc.Save(outputMs); return File(outputMs.ToArray(), "application/pdf"); } 

In generation, the report functions are as follows:

 public ActionResult TestPDF(int id) { // Set report path. LocalReport rep = viewer.LocalReport; rep.ReportPath = Server.MapPath("~/Reports/rptExternalTransferIndividual.rdlc"); rep.DataSources.Clear(); // // Set data and parameter to report. // ... ... return ConcatPdf(viewer.LocalReport.Render("PDF"), viewer.LocalReport.Render("PDF")); } 
+6
source share
3 answers

I know this is old, but add HumanReadablePDF:

  string deviceInfo = "<DeviceInfo>" + " <OutputFormat>PDF</OutputFormat>" + " <PageWidth>29.7cm</PageWidth>" + " <PageHeight>21cm</PageHeight>" + " <MarginTop>0cm</MarginTop>" + " <MarginLeft>0cm</MarginLeft>" + " <MarginRight>0cm</MarginRight>" + " <MarginBottom>0cm</MarginBottom>" + " <HumanReadablePDF>True</HumanReadablePDF>" + "</DeviceInfo>"; byte[] reportBytes = LocalReport.Render( "PDF", deviceInfo, out mimeType, out encoding, out extension, out streamids, out warnings); 

Then return the byte array to PdfSharp.

+5
source

Maybe something unusual in the PDF files created in Report Viewer. We need sample files for verification.

See also:

http://forum.pdfsharp.net/viewtopic.php?f=3&t=1818&p=5174

http://forum.pdfsharp.net/viewtopic.php?f=3&t=1730

+1
source

I use iTextSharp to accomplish the same thing.

Passing the same parameter β†’ viewer.LocalReport.Render ("PDF"). It works well.

Here is my code:

 private ActionResult ConcatPdf(List<byte[]> pdfDataList) { MemoryStream outputMS = new MemoryStream(); Document document = new Document(); PdfCopy writer = new PdfCopy(document, outputMS); PdfImportedPage page = null; document.Open(); foreach (byte[] pdfData in pdfDataList) { PdfReader reader = new PdfReader(pdfData); int n = reader.NumberOfPages; for (int i = 1; i <= n; i++) { page = writer.GetImportedPage(reader, i); writer.AddPage(page); } PRAcroForm form = reader.AcroForm; if (form != null) writer.CopyAcroForm(reader); } document.Close(); return File(outputMS.ToArray(), "application/pdf"); } 
0
source

Source: https://habr.com/ru/post/899374/


All Articles