Проблемы раскодирования base64 (появляются пустые строки) Lua (LuaLaTeX)

Я хочу использовать Lua для хранения pdf в теле документа LuaLaTeX и его извлечения при компиляции документа.

Для кодирования документа использую https://base64.guru/ или утилитой Windows certutil -encodehex -f test.txt enc.txt 0x40000001

Таким образом файл выгружается из документа LuaLaTeX:

\directlua{%
io.output("base64.tex");
io.write((mime.unb64("U3RyaW5nLTENClN0cmluZy0y")));}

Исходный файл состоит из 2-х строчек:

String-1
String-2

После раскодирования получаю 3 строки (появляется пустая строка)

String-1

String-2

Аналогично и с файлом pdf. Его размер увеличивается после кодирования/декодирования.

Я нашел документацию: https://w3.impa.br/~diego/software/luasocket/mime.html#unb64 но не могу разобраться. Мне кажется проблема в что при это из-за \r\n последовательности при декодировании, это окончание строки в стиле Windows.

Текст работает только этим кодером https://appdevtools.com/base64-encoder-decoder

U3RyaW5nLTEKU3RyaW5nLTI= - это рабочий вариант

U3RyaW5nLTENClN0cmluZy0y - это не рабочий (такой у всех кодеров на выходе!)

certutil -encodehex -f test.txt enc.txt 0x80000001 (Use \n line terminators instead of \r\n) - Это вариант тоже не работает

Помогите сделать, чтобы работало.

Заранее спасибо.


Ответы (2 шт):

Автор решения: ESkri

Кодер base64 ни при чём - что ты подал на вход, то и будет на выходе
Будет ли выбрано CR или CRLF - зависит от текстового редактора (или от того компонента, который генерирует или показывает текст)
После раскодирования просто сам руками замени CRLF на LF

io.write((mime.unb64("U3RyaW5nLTENClN0cmluZy0y"):gsub("\r\n", "\n")));
→ Ссылка
Автор решения: Youra_P

Так все работает:

\directlua{%
 local file = io.open("base64.txt", "wb");
 file:write((mime.unb64("U3RyaW5nLTENClN0cmluZy0y")));
 file:close();
}
→ Ссылка