简体   繁体   中英

JavaScript blob encoding as UTF-8 instead of ANSI

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?

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM