使用 PDFSharp 连接 PDF 文件返回空白页
我尝试连接 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"));
}
I try to concatenate 2 PDF data from rdlc report.
The problem is the result is blank pages.
I don't know why, could someone help me please.
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 generate report function look like this:
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"));
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我知道这很旧,但添加 HumanReadablePDF:
然后将字节数组返回到 PdfSharp。
I know this is old, but add HumanReadablePDF:
Then return the byte array to PdfSharp.
也许从报表查看器生成的 PDF 文件有一些不寻常的地方。
我们需要样本文件来检查它。
另请参阅:
http://forum.pdfsharp.net/ viewtopic.php?f=3&t=1818&p=5174
http://forum.pdfsharp.net/viewtopic.php?f=3&t =1730
Maybe there's something unusual about the PDF files generated from Report Viewer.
We need sample files to check it.
See also:
http://forum.pdfsharp.net/viewtopic.php?f=3&t=1818&p=5174
http://forum.pdfsharp.net/viewtopic.php?f=3&t=1730
我使用 iTextSharp 来做同样的事情。
传递相同的参数-->查看器.LocalReport.Render(“PDF”)。效果很好。
这是我的代码:
I use iTextSharp to do the same thing.
Passing same parameter --> viewer.LocalReport.Render("PDF"). It work well.
Here is my code: