Mam plik PDF, który konwertowany jest do postaci Base64. Korzystam z wielu dekoderów on-line + napsiałem własny w c# i nigdy po zakodowaniu, zdekodowaniu i zapisaniu pliku, nie otrzymuję oryginału pliku pdf, ilość znaków w pliku się zgadza, ale część jest podmieniana. Platforma ePUAP (elektroniczna Platforma Usług Administracji Publicznej) przesyła wiadomości w postaci pliku XML, który trzyma w sobie załączniki w tagach <daneZalacznika>zalacznik_base64</daneZalacznika> w formacie base64, jednak jakbym tego nie konwertował, nigdy nie wychodzi oryginał, na przykładzie poniżej:
wysyłam pdf, którego plik (nie dokument po otworzeniu) zaczyna się od:
%PDF-1.5
%µµµµ
po odebraniu go z ePUAPu początek tagu zawierającego tego pdfa wygląda tak:
JVBERi0xLjUNCiW1tbW1DQo
gdy odkoduję za pomocą base64, otrzymuję:
%PDF-1.5
%����
Widać że znak µ stał się ďż˝
kodowanie xml to: <?xml version="1.0" encoding="UTF-8"?>
moja funkcja do dekodowania base64 to:
static public string DecodeFrom64(string encodedData)
{
byte[] encodedDataAsBytes
= System.Convert.FromBase64String(encodedData);
string returnValue =
System.Text.UTF8Encoding.UTF8.GetString(encodedDataAsBytes);
return returnValue;
}
Bawiąc się różnymi dekoderami on-line część dobrze wykrywa znak µ, ale wysypuje się na innych znakach i PDF nadal jest nie do odczytania.
Jak to ugryźć? Czy może się tak zdarzyć, że ePUAP psuje załączniki, bo nie obsługuje całej puli tablicy znaków?