我尝试连接rdlc报告中的2个PDF数据。
问题是结果是空白页。
我不知道为什么,请有人帮助我。
这是我的代码:
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");
}
在生成报告功能中,如下所示:
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"));
}
答案 0 :(得分:5)
我知道这是旧的,但添加了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);
然后将字节数组返回到PdfSharp。
答案 1 :(得分:1)
答案 2 :(得分:0)
我使用iTextSharp做同样的事情。
传递相同的参数 - &gt; viewer.LocalReport.Render( “PDF”)。它运作良好。
这是我的代码:
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");
}