【问题标题】:How to check if base64 string of a PDF is valid or not?如何检查PDF的base64字符串是否有效?
【发布时间】:2021-06-22 12:10:57
【问题描述】:

我想检查以下 base64 字符串是否是 C# 中的有效 PDF。在给定的示例中,base64 字符串是有效的 PDF,如果 base64 字符串中有任何异常,我该如何识别?我可以为此使用任何库或方法吗?据我了解,base64字符串的长度始终是4的倍数。如果base64的长度是4的倍数,仍然有一些异常,即是无效字符串,有什么方法可以识别那?提前感谢所有回复。

    <image_type>pdf</image_type>
<image xmlns:dt="urn:schemas-microsoft-com:datatypes" dt:dt="bin.base64">
JVBERi0xLjMNCiXi48/TDQoNCjEgMCBvYmoNCjw8DQovVHlwZSAvQ2F0YWxvZw0KL091dGxpbmVzIDIgMCBSDQovUGFnZXMgMyAwIFINCj4+DQplbmRvYmoNCg0KMiAwIG9iag0KPDwNCi9UeXBlIC9PdXRsaW5lcw0KL0NvdW50IDANCj4+DQplbmRvYmoNCg0KMyAwIG9iag0KPDwNCi9UeXBlIC9QYWdlcw0KL0NvdW50IDINCi9LaWRzIFsgNCAwIFIgNiAwIFIgXSANCj4+DQplbmRvYmoNCg0KNCAwIG9iag0KPDwNCi9UeXBlIC9QYWdlDQovUGFyZW50IDMgMCBSDQovUmVzb3VyY2VzIDw8DQovRm9udCA8PA0KL0YxIDkgMCBSIA0KPj4NCi9Qcm9jU2V0IDggMCBSDQo+Pg0KL01lZGlhQm94IFswIDAgNjEyLjAwMDAgNzkyLjAwMDBdDQovQ29udGVudHMgNSAwIFINCj4+DQplbmRvYmoNCg0KNSAwIG9iag0KPDwgL0xlbmd0aCAxMDc0ID4+DQpzdHJlYW0NCjIgSg0KQlQNCjAgMCAwIHJnDQovRjEgMDAyNyBUZg0KNTcuMzc1MCA3MjIuMjgwMCBUZA0KKCBBIFNpbXBsZSBQREYgRmlsZSApIFRqDQpFVA0KQlQNCi9GMSAwMDEwIFRmDQo2OS4yNTAwIDY4OC42MDgwIFRkDQooIFRoaXMgaXMgYSBzbWFsbCBkZW1vbnN0cmF0aW9uIC5wZGYgZmlsZSAtICkgVGoNCkVUDQpCVA0KL0YxIDAwMTAgVGYNCjY5LjI1MDAgNjY0LjcwNDAgVGQNCigganVzdCBmb3IgdXNlIGluIHRoZSBWaXJ0dWFsIE1lY2hhbmljcyB0dXRvcmlhbHMuIE1vcmUgdGV4dC4gQW5kIG1vcmUgKSBUag0KRVQNCkJUDQovRjEgMDAxMCBUZg0KNjkuMjUwMCA2NTIuNzUyMCBUZA0KKCB0ZXh0LiBBbmQgbW9yZSB0ZXh0LiBBbmQgbW9yZSB0ZXh0LiBBbmQgbW9yZSB0ZXh0LiApIFRqDQpFVA0KQlQNCi9GMSAwMDEwIFRmDQo2OS4yNTAwIDYyOC44NDgwIFRkDQooIEFuZCBtb3JlIHRleHQuIEFuZCBtb3JlIHRleHQuIEFuZCBtb3JlIHRleHQuIEFuZCBtb3JlIHRleHQuIEFuZCBtb3JlICkgVGoNCkVUDQpCVA0KL0YxIDAwMTAgVGYNCjY5LjI1MDAgNjE2Ljg5NjAgVGQNCiggdGV4dC4gQW5kIG1vcmUgdGV4dC4gQm9yaW5nLCB6enp6ei4gQW5kIG1vcmUgdGV4dC4gQW5kIG1vcmUgdGV4dC4gQW5kICkgVGoNCkVUDQpCVA0KL0YxIDAwMTAgVGYNCjY5LjI1MDAgNjA0Ljk0NDAgVGQNCiggbW9yZSB0ZXh0LiBBbmQgbW9yZSB0ZXh0LiBBbmQgbW9yZSB0ZXh0LiBBbmQgbW9yZSB0ZXh0LiBBbmQgbW9yZSB0ZXh0LiApIFRqDQpFVA0KQlQNCi9GMSAwMDEwIFRmDQo2OS4yNTAwIDU5Mi45OTIwIFRkDQooIEFuZCBtb3JlIHRleHQuIEFuZCBtb3JlIHRleHQuICkgVGoNCkVUDQpCVA0KL0YxIDAwMTAgVGYNCjY5LjI1MDAgNTY5LjA4ODAgVGQNCiggQW5kIG1vcmUgdGV4dC4gQW5kIG1vcmUgdGV4dC4gQW5kIG1vcmUgdGV4dC4gQW5kIG1vcmUgdGV4dC4gQW5kIG1vcmUgKSBUag0KRVQNCkJUDQovRjEgMDAxMCBUZg0KNjkuMjUwMCA1NTcuMTM2MCBUZA0KKCB0ZXh0LiBBbmQgbW9yZSB0ZXh0LiBBbmQgbW9yZSB0ZXh0LiBFdmVuIG1vcmUuIENvbnRpbnVlZCBvbiBwYWdlIDIgLi4uKSBUag0KRVQNCmVuZHN0cmVhbQ0KZW5kb2JqDQoNCjYgMCBvYmoNCjw8DQovVHlwZSAvUGFnZQ0KL1BhcmVudCAzIDAgUg0KL1Jlc291cmNlcyA8PA0KL0ZvbnQgPDwNCi9GMSA5IDAgUiANCj4+DQovUHJvY1NldCA4IDAgUg0KPj4NCi9NZWRpYUJveCBbMCAwIDYxMi4wMDAwIDc5Mi4wMDAwXQ0KL0NvbnRlbnRzIDcgMCBSDQo+Pg0KZW5kb2JqDQoNCjcgMCBvYmoNCjw8IC9MZW5ndGggNjc2ID4+DQpzdHJlYW0NCjIgSg0KQlQNCjAgMCAwIHJnDQovRjEgMDAyNyBUZg0KNTcuMzc1MCA3MjIuMjgwMCBUZA0KKCBTaW1wbGUgUERGIEZpbGUgMiApIFRqDQpFVA0KQlQNCi9GMSAwMDEwIFRmDQo2OS4yNTAwIDY4OC42MDgwIFRkDQooIC4uLmNvbnRpbnVlZCBmcm9tIHBhZ2UgMS4gWWV0IG1vcmUgdGV4dC4gQW5kIG1vcmUgdGV4dC4gQW5kIG1vcmUgdGV4dC4gKSBUag0KRVQNCkJUDQovRjEgMDAxMCBUZg0KNjkuMjUwMCA2NzYuNjU2MCBUZA0KKCBBbmQgbW9yZSB0ZXh0LiBBbmQgbW9yZSB0ZXh0LiBBbmQgbW9yZSB0ZXh0LiBBbmQgbW9yZSB0ZXh0LiBBbmQgbW9yZSApIFRqDQpFVA0KQlQNCi9GMSAwMDEwIFRmDQo2OS4yNTAwIDY2NC43MDQwIFRkDQooIHRleHQuIE9oLCBob3cgYm9yaW5nIHR5cGluZyB0aGlzIHN0dWZmLiBCdXQgbm90IGFzIGJvcmluZyBhcyB3YXRjaGluZyApIFRqDQpFVA0KQlQNCi9GMSAwMDEwIFRmDQo2OS4yNTAwIDY1Mi43NTIwIFRkDQooIHBhaW50IGRyeS4gQW5kIG1vcmUgdGV4dC4gQW5kIG1vcmUgdGV4dC4gQW5kIG1vcmUgdGV4dC4gQW5kIG1vcmUgdGV4dC4gKSBUag0KRVQNCkJUDQovRjEgMDAxMCBUZg0KNjkuMjUwMCA2NDAuODAwMCBUZA0KKCBCb3JpbmcuICBNb3JlLCBhIGxpdHRsZSBtb3JlIHRleHQuIFRoZSBlbmQsIGFuZCBqdXN0IGFzIHdlbGwuICkgVGoNCkVUDQplbmRzdHJlYW0NCmVuZG9iag0KDQo4IDAgb2JqDQpbL1BERiAvVGV4dF0NCmVuZG9iag0KDQo5IDAgb2JqDQo8PA0KL1R5cGUgL0ZvbnQNCi9TdWJ0eXBlIC9UeXBlMQ0KL05hbWUgL0YxDQovQmFzZUZvbnQgL0hlbHZldGljYQ0KL0VuY29kaW5nIC9XaW5BbnNpRW5jb2RpbmcNCj4+DQplbmRvYmoNCg0KMTAgMCBvYmoNCjw8DQovQ3JlYXRvciAoUmF2ZSBcKGh0dHA6Ly93d3cubmV2cm9uYS5jb20vcmF2ZVwpKQ0KL1Byb2R1Y2VyIChOZXZyb25hIERlc2lnbnMpDQovQ3JlYXRpb25EYXRlIChEOjIwMDYwMzAxMDcyODI2KQ0KPj4NCmVuZG9iag0KDQp4cmVmDQowIDExDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMTkgMDAwMDAgbg0KMDAwMDAwMDA5MyAwMDAwMCBuDQowMDAwMDAwMTQ3IDAwMDAwIG4NCjAwMDAwMDAyMjIgMDAwMDAgbg0KMDAwMDAwMDM5MCAwMDAwMCBuDQowMDAwMDAxNTIyIDAwMDAwIG4NCjAwMDAwMDE2OTAgMDAwMDAgbg0KMDAwMDAwMjQyMyAwMDAwMCBuDQowMDAwMDAyNDU2IDAwMDAwIG4NCjAwMDAwMDI1NzQgMDAwMDAgbg0KDQp0cmFpbGVyDQo8PA0KL1NpemUgMTENCi9Sb290IDEgMCBSDQovSW5mbyAxMCAwIFINCj4+DQoNCnN0YXJ0eHJlZg0KMjcxNA0KJSVFT0YNCg==
</image>


var base64String2 = @"JVBERi0xLQWERjINCg0KMyAwIG9iag0KPDwNCi9FIDMwMjcNCi9IIFsgMTA2OSAxNDAgXQ0KL0wgMzI1OQ0KL0xpbmVhcml6ZWQgMQ0KL04gMQ0KL08gNg0KL1QgMzE0OQ0KPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQplbmRvYmoNCg0KeHJlZg0KMyA2DQowMDAwMDAwMDEyIDAwMDAwIG4NCjAwMDAwMDA5NDYgMDAwMDAgbg0KMDAwMDAwMTA2OSAwMDAwMCBuDQowMDAwMDAxMjEwIDAwMDAwIG4NCjAwMDAwMDE0MTYgMDAwMDAgbg0KMDAwMDAwMTUyMyAwMDAwMCBuDQp0cmFpbGVyDQo8PA0KL0FCQ3BkZiA3MDA4DQovSUQgWyA8NzA3Qjk0QkI2QkNDQjM4REREMzUyQzM3QzMwNkY4MjI+DQo8MkNBMkQ4NDA3MjIzRjNEMEEyQjlFRTZBRTNEQkNDODQ+IF0NCi9MZW5ndGggMA0KL1ByZXYgMzEzOQ0KL1Jvb3QgNCAwIFINCi9TaXplIDkNCi9UeXBlIC9YUmVmDQo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAWERCAgICAgICAgICAgICAgICASDFAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCnN0YXJ0eHJlZg0KMA0KJSVFT0YNCjQgMCBvYmoNCjw8DQovT3BlbkFjdGlvbiBbIDYgMCBSDQovRml0IF0NCi9PdXRsaW5lcyAxIDAgUg0KL1BhZ2VNb2RlIC9Vc2VOb25lDQovUGFnZXMgMiAwIFINCi9UeXBlIC9DYXRhbG9nDQo+Pg0KZW5kb2JqDQoNCjUgMCBvYmoNCjw8DQovRmlsdGVyIC9GbGF0ZURlY29kZQ0KL0xlbmd0aCA0OQ0KL1MgNTINCj4+DQpzdHJlYW0NCnicY2BgYGZgYNFjUGBgYJcEkXCgAIUpDFgBiy4DWC8YMzBkg/UmQ+RYS0EkAH2mAxkNCmVuZHN0cmVhbQ0KDQplbmRvYmoNCg0KIDYgMCBvYmoNCjw8DQovQ29udGVudHMgWyA3IDAgUiBdDQovTWVkaWFCb3ggWyAwIDAgNjEyIDc5MiBdDQovUGFyZW50IDIgMCBSDQovUmVzb3VyY2VzIDw8DQovUHJvY1NldCBbIC9QREYNCi9UZXh0DQovSW1hZ2VCDQovSW1hZ2VDDQovSW1hZ2VJIF0NCi9YT2JqZWN0IDw8DQovSWFiYzUgOCAwIFINCj4+DQo+Pg0KL1R5cGUgL1BhZ2UNCj4+DQplbmRvYmoNCg0KNyAwIG9iag0KPDwNCi9MZW5ndGggNDUNCj4+DQpzdHJlYW0NCkJYDQpxDQo2MTIgMCAwIDc5MiAwIDAgY20NCi9JYWJjNSBEbw0KUQ0KRVgNCg0KZW5kc3RyZWFtDQoNCmVuZG9iag0KDQo4IDAgb2JqDQo8PA0KL0JpdHNQZXJDb21wb25lbnQgMQ0KL0NvbG9yU3BhY2UgL0RldmljZUdyYXkNCi9EZWNvZGVQYXJtcyA8PA0KL0NvbHVtbnMgMjU1MA0KL0sgLTENCi9Sb3dzIDMzMDANCj4+DQovRmlsdGVyIC9DQ0lUVEZheERlY29kZQ0KL0hlaWdodCAzMzAwDQovTGVuZ3RoIDEyNTQNCi9TdWJ0eXBlIC9JbWFnZQ0KL1R5cGUgL1hPYmplY3QNCi9XaWR0aCAyNTUwDQo+Pg0Kc3RyZWFtDQr//////////////////////////+WoaDLdVH/luLfwv1+F/8cf//5aZcQmAhAxCFCkoFIGEI2M7NRSBhMlYhAhJadYLgiC6ghisjrDODJxgiDqCC6clYZChgiDqCC+hAjyNOQXCEMNYECDCDCD0H6DCD09BhB+EGEHTTCeE/TT0tNP0wnTTT0/TT100/TTpp3oeqceqfpp0QvNELzREm+QnYkuaIXnIe1ElzRC8/RC80QvugQdBBug+gg8IOgg3CDwg6CDZIHoEHQIN6DcIOk/TwnhB6GE8IP9Bug9LSbq9J6bSb6bSb9LSb03T79P9PX0/03XV1vgtenW+nW/V0m9QVPj0/0/9P9QX8fv+v6r/8af9w//7/7/+kk7IcnSf0n/Sf0lv/IYCf////j/sgQM//////2Q0Vf/////7D//////4Yf//////Df//////KcCP////5G1zX8lwX//////5Vh//////+TATbX////tkQ20g//tpftpe2RDb8jvk7f////+R36+C/a////rkvbq1v3/tf7X7q0RWsKPvT/a+9fvXvt1tbW121+1/tftdbaTaXXa+2l+2l7aTDS2sMKw12GF+GF/hhftbWyF9MMJQwlsfsMJfsMJXshfTDBKxTFMf+xX7FSCfYpirTTWyGgf7X7T7TVpprDC/a/a9pq0wmFtfsL9hN7QahhBhBhZEC/hhfhhPhhBhS0y4hMCEaCCOIkuIIiS4gcSDEIEEiI4iIj5aurSyNP/tbpYa4YSO1UFSxXa7Xa4YXLVVhRj////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////lrkoZhktnkGmSxJUeGq4artV2q5GIr8NqvbVe6r3C/tV7hEIPX4S1+RAcgQpFRK1+agzggzgwRDBWFyKP+EGg8IOtL+mE8Jwtf6aenC0v6oacLS+kiEo5CdRC+x6/wg6CDoEG9L6pBunoPr9KtJ0m9L6q9PXpfBKtdJvrxR1fT/r8f6fS8L/9L0FSdb68IiwJ8el5DLE/+vkal/0vgv+l9f+JB2qF4RBu///IEd+R7P+iCEf/6ISr//hba/9L9v/X/koH9bXJe/+/aIoJ/rat1/1bXX/a2rDS/thWGFtf8MKxsMEv7F7Ff5BQ9kNA9r+04YW1/a2sNfwwmynFwwviVIQRyDCCMcfLZqaWRp/9rdLDXDCVirVq1DClskwsf//////////4AIAIAANCmVuZHN0cmVhbQ0KDQplbmRvYmoNCg0KMSAwIG9iag0KPDwNCi9UeXBlIC9PdXRsaW5lcw0KPj4NCmVuZG9iag0KDQoyIDAgb2JqDQo8PA0KL0NvdW50IDENCi9LaWRzIFsgNiAwIFIgXQ0KL1R5cGUgL1BhZ2VzDQo+Pg0KZW5kb2JqDQoNCnhyZWYNCjAgMw0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAzMDI3IDAwMDAwIG4NCjAwMDAwMDMwNzEgMDAwMDAgbg0KdHJhaWxlcg0KPDwNCi9TaXplIDMNCj4+DQpzdGFydHhyZWYNCjE4Mw0KJSVFT0YNCg==";

这里,在上面提到的base64String2中,base64字符串将被成功验证,但我无法打开pdf,因为它已损坏。

我们如何验证base64字符串是否包含未损坏的pdf?

【问题讨论】:

  • 这能回答你的问题吗? Reading PDF documents in .Net
  • 如果base64字符串无效,base64解码器会告诉你。但即使 base64 在技术上是有效的,解码器也无法告诉你 PDF 是否有效
  • 图像应该有一个 ASCII 标头,您可以检查它以查看类型。
  • @gunr2171 我认为这不是因为它读取 pdf 文件。在我的情况下,我只想检查 base 64 是否是有效的 PDF
  • @jps 如果 base 64 在技术上是有效的并且 pdf 是无效的,那么我们如何检查 base64 中的 pdf 是否有效?那有什么办法可以知道pdf是否损坏?

标签: c# validation pdf base64


【解决方案1】:

您可以尝试以下方法是否可以解决您的问题?

 static void Main(string[] args)
    {
        try
        {
            var base64String =
                @"JVBERi0xLQWERjINCg0KMyAwIG9iag0KPDwNCi9FIDMwMjcNCi9IIFsgMTA2OSAxNDAgXQ0KL0wgMzI1OQ0KL0xpbmVhcml6ZWQgMQ0KL04gMQ0KL08gNg0KL1QgMzE0OQ0KPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQplbmRvYmoNCg0KeHJlZg0KMyA2DQowMDAwMDAwMDEyIDAwMDAwIG4NCjAwMDAwMDA5NDYgMDAwMDAgbg0KMDAwMDAwMTA2OSAwMDAwMCBuDQowMDAwMDAxMjEwIDAwMDAwIG4NCjAwMDAwMDE0MTYgMDAwMDAgbg0KMDAwMDAwMTUyMyAwMDAwMCBuDQp0cmFpbGVyDQo8PA0KL0FCQ3BkZiA3MDA4DQovSUQgWyA8NzA3Qjk0QkI2QkNDQjM4REREMzUyQzM3QzMwNkY4MjI+DQo8MkNBMkQ4NDA3MjIzRjNEMEEyQjlFRTZBRTNEQkNDODQ+IF0NCi9MZW5ndGggMA0KL1ByZXYgMzEzOQ0KL1Jvb3QgNCAwIFINCi9TaXplIDkNCi9UeXBlIC9YUmVmDQo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAWERCAgICAgICAgICAgICAgICASDFAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCnN0YXJ0eHJlZg0KMA0KJSVFT0YNCjQgMCBvYmoNCjw8DQovT3BlbkFjdGlvbiBbIDYgMCBSDQovRml0IF0NCi9PdXRsaW5lcyAxIDAgUg0KL1BhZ2VNb2RlIC9Vc2VOb25lDQovUGFnZXMgMiAwIFINCi9UeXBlIC9DYXRhbG9nDQo+Pg0KZW5kb2JqDQoNCjUgMCBvYmoNCjw8DQovRmlsdGVyIC9GbGF0ZURlY29kZQ0KL0xlbmd0aCA0OQ0KL1MgNTINCj4+DQpzdHJlYW0NCnicY2BgYGZgYNFjUGBgYJcEkXCgAIUpDFgBiy4DWC8YMzBkg/UmQ+RYS0EkAH2mAxkNCmVuZHN0cmVhbQ0KDQplbmRvYmoNCg0KIDYgMCBvYmoNCjw8DQovQ29udGVudHMgWyA3IDAgUiBdDQovTWVkaWFCb3ggWyAwIDAgNjEyIDc5MiBdDQovUGFyZW50IDIgMCBSDQovUmVzb3VyY2VzIDw8DQovUHJvY1NldCBbIC9QREYNCi9UZXh0DQovSW1hZ2VCDQovSW1hZ2VDDQovSW1hZ2VJIF0NCi9YT2JqZWN0IDw8DQovSWFiYzUgOCAwIFINCj4+DQo+Pg0KL1R5cGUgL1BhZ2UNCj4+DQplbmRvYmoNCg0KNyAwIG9iag0KPDwNCi9MZW5ndGggNDUNCj4+DQpzdHJlYW0NCkJYDQpxDQo2MTIgMCAwIDc5MiAwIDAgY20NCi9JYWJjNSBEbw0KUQ0KRVgNCg0KZW5kc3RyZWFtDQoNCmVuZG9iag0KDQo4IDAgb2JqDQo8PA0KL0JpdHNQZXJDb21wb25lbnQgMQ0KL0NvbG9yU3BhY2UgL0RldmljZUdyYXkNCi9EZWNvZGVQYXJtcyA8PA0KL0NvbHVtbnMgMjU1MA0KL0sgLTENCi9Sb3dzIDMzMDANCj4+DQovRmlsdGVyIC9DQ0lUVEZheERlY29kZQ0KL0hlaWdodCAzMzAwDQovTGVuZ3RoIDEyNTQNCi9TdWJ0eXBlIC9JbWFnZQ0KL1R5cGUgL1hPYmplY3QNCi9XaWR0aCAyNTUwDQo+Pg0Kc3RyZWFtDQr//////////////////////////+WoaDLdVH/luLfwv1+F/8cf//5aZcQmAhAxCFCkoFIGEI2M7NRSBhMlYhAhJadYLgiC6ghisjrDODJxgiDqCC6clYZChgiDqCC+hAjyNOQXCEMNYECDCDCD0H6DCD09BhB+EGEHTTCeE/TT0tNP0wnTTT0/TT100/TTpp3oeqceqfpp0QvNELzREm+QnYkuaIXnIe1ElzRC8/RC80QvugQdBBug+gg8IOgg3CDwg6CDZIHoEHQIN6DcIOk/TwnhB6GE8IP9Bug9LSbq9J6bSb6bSb9LSb03T79P9PX0/03XV1vgtenW+nW/V0m9QVPj0/0/9P9QX8fv+v6r/8af9w//7/7/+kk7IcnSf0n/Sf0lv/IYCf////j/sgQM//////2Q0Vf/////7D//////4Yf//////Df//////KcCP////5G1zX8lwX//////5Vh//////+TATbX////tkQ20g//tpftpe2RDb8jvk7f////+R36+C/a////rkvbq1v3/tf7X7q0RWsKPvT/a+9fvXvt1tbW121+1/tftdbaTaXXa+2l+2l7aTDS2sMKw12GF+GF/hhftbWyF9MMJQwlsfsMJfsMJXshfTDBKxTFMf+xX7FSCfYpirTTWyGgf7X7T7TVpprDC/a/a9pq0wmFtfsL9hN7QahhBhBhZEC/hhfhhPhhBhS0y4hMCEaCCOIkuIIiS4gcSDEIEEiI4iIj5aurSyNP/tbpYa4YSO1UFSxXa7Xa4YXLVVhRj////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////lrkoZhktnkGmSxJUeGq4artV2q5GIr8NqvbVe6r3C/tV7hEIPX4S1+RAcgQpFRK1+agzggzgwRDBWFyKP+EGg8IOtL+mE8Jwtf6aenC0v6oacLS+kiEo5CdRC+x6/wg6CDoEG9L6pBunoPr9KtJ0m9L6q9PXpfBKtdJvrxR1fT/r8f6fS8L/9L0FSdb68IiwJ8el5DLE/+vkal/0vgv+l9f+JB2qF4RBu///IEd+R7P+iCEf/6ISr//hba/9L9v/X/koH9bXJe/+/aIoJ/rat1/1bXX/a2rDS/thWGFtf8MKxsMEv7F7Ff5BQ9kNA9r+04YW1/a2sNfwwmynFwwviVIQRyDCCMcfLZqaWRp/9rdLDXDCVirVq1DClskwsf//////////4AIAIAANCmVuZHN0cmVhbQ0KDQplbmRvYmoNCg0KMSAwIG9iag0KPDwNCi9UeXBlIC9PdXRsaW5lcw0KPj4NCmVuZG9iag0KDQoyIDAgb2JqDQo8PA0KL0NvdW50IDENCi9LaWRzIFsgNiAwIFIgXQ0KL1R5cGUgL1BhZ2VzDQo+Pg0KZW5kb2JqDQoNCnhyZWYNCjAgMw0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAzMDI3IDAwMDAwIG4NCjAwMDAwMDMwNzEgMDAwMDAgbg0KdHJhaWxlcg0KPDwNCi9TaXplIDMNCj4+DQpzdGFydHhyZWYNCjE4Mw0KJSVFT0YNCg==";
            //encode and decode 1
            var encodedStr = Convert.ToBase64String(Encoding.UTF8.GetBytes("base64String"));
            var inputStr = Encoding.UTF8.GetString(Convert.FromBase64String(encodedStr));
            //regex validate
            var testResult = IsBase64String(base64String);
            //copy the base64 into folder location(pdf)
            using (System.IO.FileStream stream = System.IO.File.Create("c:\\temp\\file.pdf"))
            {
                System.Byte[] byteArray = System.Convert.FromBase64String(base64String);
                stream.Write(byteArray, 0, byteArray.Length);
            }

            //validation
            if (string.IsNullOrEmpty(base64String) || base64String.Length % 4 != 0 || base64String.Contains(" ") ||
                base64String.Contains("\t") || base64String.Contains("\r") || base64String.Contains("\n"))
            {
                Console.WriteLine("false");
                return;
            }
            //validation2
            var testResult2 = Convert.FromBase64String(base64String);
            //using iTextSharp
            var pdfReader = new iTextSharp.text.pdf.PdfReader("c:\\temp\\file.pdf");
            Console.WriteLine("True");
            Console.ReadKey();
        }
        //FormatException
        catch (FormatException f)
        {
            Console.WriteLine(f);
            Console.ReadKey();
        }
        //InvalidPdfException
        catch (iTextSharp.text.exceptions.InvalidPdfException i)
        {
            Console.WriteLine("error" + i);
            Console.ReadKey();
        }
        catch (Exception e)
        {
            Console.WriteLine(e);
            Console.ReadKey();
        }
    }
public static bool IsBase64String(string base64)

    {

        base64 = base64.Trim();

        return (base64.Length % 4 == 0) && Regex.IsMatch(base64, @"^[a-zA-Z0-9\+/]*={0,3}$", RegexOptions.None);

    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-05-15
    • 1970-01-01
    • 2023-03-23
    • 2012-01-24
    • 2011-06-17
    • 1970-01-01
    相关资源
    最近更新 更多