1

I want to check if the following base64 string is valid PDF in C#. In the given example, the base64 string is a valid PDF, in case there are any anomalies in the base64 string, how can I identify that? Are there any libraries or methods that I can use for this? From what I understand, the length of the base64 string is always a multiple of 4. What if the length of the base64 is a multiple of 4 and there are still some anomalies, i.e it is an invalid string, is there any way to identify that? Thanks in advance for all responses.

    <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==";

Here, in the above mentioned base64String2, the base64 string will be validated successfully, but I can't open the pdf because it is corrupted. enter image description here

How can we validate if the base64 string contains a non corrupted pdf ?

  • Does this answer your question? [Reading PDF documents in .Net](https://stackoverflow.com/questions/83152/reading-pdf-documents-in-net) – gunr2171 Jun 22 '21 at 12:13
  • if the base64 string is invalid, the base64 decoder will tell you. But even if the base64 is technically valid, the decoder can't tell you if the PDF is valid – jps Jun 22 '21 at 12:20
  • A image should have an ASCII header that you can check to see the type. – jdweng Jun 22 '21 at 12:20
  • @gunr2171 I think its not because its reading the pdf file. in my case I just want to check the base 64 is a valid PDF or not – Mathew P Abraham Jun 22 '21 at 12:29
  • @jps if the base 64 is technically valid and the pdf is an invalid one, then how could we check if the pdf in base64 is valid or not? That is there any way to know whether the pdf is corrupted ? – Mathew P Abraham Jun 22 '21 at 12:34
  • check this one: [How-To: Validate a FileStream is a valid PDF document with .NET](https://stackoverflow.com/q/8820974) – jps Jun 22 '21 at 12:41
  • All the provided information are not giving any solution to me. The mentioned comments are directly related to the base 64 conversion of the string. If the string satisfies the condition it will be validated correctly. but it will not give an option to check the file is damaged or not. some time it can be opened in chrome but it not in adobe. it will say the file is damaged even though the base 64 conversion gives a success. In my case I want to validate if the saved pdf or any other type will open properly. – Mathew P Abraham Jun 23 '21 at 10:11
  • what about the link I gave you above? – jps Jun 23 '21 at 10:20
  • @jps No I checked the link and it's not working, I have updated the question. – Mathew P Abraham Jun 23 '21 at 11:57

1 Answers1

0

Can you try the following method will fix your issue or not?

 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);

    }