JavaScript blob encoding as UTF-8 instead of ANSI
11,825
You can represent the data as binary, just run through the string and fill a binary array
FDF_Text = ''
+ '%FDF-1.2' + "\n"
+ '1 0 obj<</FDF<</F(T:/Échange/MY_PDF.pdf)/Fields 2 0 R>>>>' + "\n"
+ 'endobj' + "\n"
+ '2 0 obj[' + "\n"
+ '<</T(FIELD_NAME)/V(SOME_TEXT)>>' + "\n"
+ ']' + "\n"
+ 'endobj' + "\n"
+ 'trailer' + "\n"
+ '<</Root 1 0 R>>' + "\n"
+ '%%EO'
var uint8 = new Uint8Array(FDF_Text.length);
for (var i = 0; i < uint8.length; i++){
uint8[i] = FDF_Text.charCodeAt(i);
}
var blobObject = new Blob([uint8], {type: 'text/fdf'});
window.navigator.msSaveOrOpenBlob(blobObject, 'MY_FDF.fdf');
Author by
ThanosLovesYuna
Updated on June 19, 2022Comments
-
ThanosLovesYuna almost 2 years
I use a JavaScript blob to create an FDF file which opens & fills in a locally stored PDF.
However, the file path to the locally stored PDF contains an accented character (and I am unable to edit the folder name).
This code works when the folder path doesn’t contain an accent and if I open the fdf in Notepad, the default encoding is ANSI. But when the folder path contains an accent, the FDF opens to a message stating the PDF cannot be found. Furthermore, the default encoding in Notepad has changed to UTF-8.
FDF_Text = '' + '%FDF-1.2' + "\n" + '1 0 obj<</FDF<</F(T:/Échange/MY_PDF.pdf)/Fields 2 0 R>>>>' + "\n" + 'endobj' + "\n" + '2 0 obj[' + "\n" + '<</T(FIELD_NAME)/V(SOME_TEXT)>>' + "\n" + ']' + "\n" + 'endobj' + "\n" + 'trailer' + "\n" + '<</Root 1 0 R>>' + "\n" + '%%EO' var blobObject = new Blob([FDF_Text], {type: 'text/css;charset=ANSI'}); window.navigator.msSaveOrOpenBlob(blobObject, 'MY_FDF.fdf');
I have tried
- replacing É with E
- using String.fromCharCode(201) (the chr value for É)
- changing & removing the "type" of the blob itself to several different examples I've found (sorry I didn't keep track of all the different combinations).
Can anyone suggest a different solution?