Preamble: Text is binary with conventions.
"To me it seems that it's safe to use \n only."
"Imagine a company where the originating machine of a content/document can be any platform, and the consuming too. And the way of transferring the documents can be any (mail, shared drive, download,...)"
There are 2 points that we have to address here. If you're serving the file and if you're consuming the file.
Serving the text file:
Stick to a specific format. Define your encoding, your newline policy and keep it consistent along all the files you generate. Understand the specifics of each encoding you decided too use (for example, UTF-8 usually requires you to put a 3-byte BOM at the beginning of each file - some systems are not ready to work with this).
Read about the Turkey Test and why it's important.
Also, as you're a software developer, and not a common user, remember: Text is a bunch of bytes with some specific sprinkled conventions over the top, so treat it as BINARY data and transfer it accordingly on FTP, SFTP, HTTP responses, file writing, etc...
Consuming a text file:
Unless you have the proper specification of the file format, you're going to have a bad time.
But there's nothing stopping you from doing some kind of heuristics about newlines, based on the fact that the most common formats are \r\n, \n and \r, based on Newline Representations on Wikipedia.
What I usually do when I have to consume a text file is searching for \r\n, since it's the most common representation (greater number of platforms). Then skip to using just \n because it's the second most important. Lastly skip to using just \r.
Remember, text is binary data with conventions. Discovering the conventions is what makes it hard.
Text is hard. Handling text the correct way is harder.
There is no such thing as a text file. Also Plain Text is a lie. A final user has the luxury of complaining about TXT files, but we as developers do not.
The sheer number of questions about how to proper detecting encoding on a text file on StackOverflow is a hint.
Just handling common Character Encodings it's difficult due to the sheer amount of different encodings available. Just on that Wikipedia page there are over 60 different to think about.
Handling newlines is just another side of how to proper handle text. Which is special if you have to interface with older devices (such as an Atari-8 that uses 0x9B as newline marker).
Text is binary data with conventions on top.