小编Tae*_*aeV的帖子

使用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");
}
Run Code Online (Sandbox Code Playgroud)

在生成报告功能时看起来像这样:

public ActionResult TestPDF(int id)
{
    // Set report path.
    LocalReport rep = viewer.LocalReport;
    rep.ReportPath = Server.MapPath("~/Reports/rptExternalTransferIndividual.rdlc");
    rep.DataSources.Clear(); …
Run Code Online (Sandbox Code Playgroud)

c# pdf rdlc pdfsharp

6
推荐指数
2
解决办法
4250
查看次数

用于修复长度字符串的正则表达式,仅允许末尾的空格.C#

我需要正则表达式

  1. az,AZ,允许0-9.

  2. 固定20个字符.

  3. 不允许在开头或中间的空格.

  4. 最后的空间允许.

例:

12345678901234567890 [Match]

1234567890           [Match]

abcde12345           [Match]

 abcdefg             [Not match]

ab cdefg             [Not match]
Run Code Online (Sandbox Code Playgroud)

我使用这个正则表达式,它工作正常,但它很长很难维护.

[a-zA-Z0-9]{20}|[a-zA-Z0-9]{19}\s{1}|[a-zA-Z0-9]{18}\s{2}
|[a-zA-Z0-9]{17}\s{3}|[a-zA-Z0-9]{16}\s{4}|[a-zA-Z0-9]{15}\s{5}
|[a-zA-Z0-9]{14}\s{6}|[a-zA-Z0-9]{13}\s{7}|[a-zA-Z0-9]{12}\s{8}
|[a-zA-Z0-9]{11}\s{9}|[a-zA-Z0-9]{10}\s{10}|[a-zA-Z0-9]{9}\s{11}
|[a-zA-Z0-9]{8}\s{12}|[a-zA-Z0-9]{7}\s{13}|[a-zA-Z0-9]{6}\s{14}
|[a-zA-Z0-9]{5}\s{15}|[a-zA-Z0-9]{4}\s{16}|[a-zA-Z0-9]{3}\s{17}
|[a-zA-Z0-9]{2}\s{18}|[a-zA-Z0-9]{1}\s{19}|\s{20}
Run Code Online (Sandbox Code Playgroud)

请帮忙,谢谢.


更新.

实际上我需要检查很长的字符串.

起初,在我提出这个问题之前,我的正则表达式看起来像这样(第一个正则表达式)

^[\s\d]{25}\d{6}[0-1]{1}\d{24}[\!\@\#\$\%\^\&\*\(\)\-\\_\=\+\/\,\?\<\>\;\:\"\'\w\s\.]{30}(\s{3}|\d{3})(\s{4}|\d{4})[\s|00|10|20|40]{2}[a-zA-Z0-9\s]{20}[\s\w\d]{0,32}$
Run Code Online (Sandbox Code Playgroud)

在我问这个问题后,我的正则表达式看起来像这样(第二个正则表达式)

^[\s\d]{25}\d{6}[0-1]{1}\d{24}[\!\@\#\$\%\^\&\*\(\)\-\\_\=\+\/\,\?\<\>\;\:\"\'\w\s\.]{30}(\s{3}|\d{3})(\s{4}|\d{4})[\s|00|10|20|40]{2}(?=.{20})[a-zA-Z0-9]*\s*[\s]{0,32}$
Run Code Online (Sandbox Code Playgroud)

假设我把这个正则表达式分成3部分.

Part1:[\s\d]{25}\d{6}[0-1]{1}\d{24}[\!\@\#\$\%\^\&\*\(\)\-\\_\=\+\/\,\?\<\>\;\:\"\'\w\s\.]{30}(\s{3}|\d{3})(\s{4}|\d{4})[\s|00|10|20|40]{2}

Part2:[a-zA-Z0-9\s]{20} changed to (?=.{20})[a-zA-Z0-9]*\s*

Part3:[\s\w\d]{0,32}
Run Code Online (Sandbox Code Playgroud)

第1部分工作正常.

第2部分要求已更改,因此我将其更改为"(?=.{20} $)[a-zA-Z0-9]*\s*"

Part3是我改变part2时的问题.

00202510027680           1901160000000000000000000007000Test Test 009                 069      aaaaaaaaaaaaaaaaaaaa                                
Run Code Online (Sandbox Code Playgroud)

字符串以32个空格结尾.如果我再添加1个空格,则第一个正则表达式不匹配.但第二次正则表达比赛.正确不匹配.

如何修改part2(或part3)以满足要求.谢谢.

第一个正则表达式的演示

第二个正则表达式的演示

c# regex

1
推荐指数
1
解决办法
1783
查看次数

标签 统计

c# ×2

pdf ×1

pdfsharp ×1

rdlc ×1

regex ×1