Skip to main content
Inspiring
January 21, 2019
Answered

Comment intégrer un doc pdf dans un fichier ?

  • January 21, 2019
  • 4 replies
  • 8330 views

Bonjour,

D'après un document PDF, comment le découper en plusieurs enregistrements :

1 - titre du chapitre

2 - texte du chapitre

et cela à partir d'un numéro de page.

Merci pour votre aide

This topic has been closed for replies.
Correct answer WolfShade

inc_parser.cfm : j'essaye de remplacer les accentués et autres signes de la langue française par leur code assci !

De plus, je ne vois pas de CF <! --- qui ne soit pas fermer !

Merci encore !

inc_parser.cfm: I try to replace the accented and other signs of the French language with their Assci code!

Moreover, I do not see CF <! --- who does not shut up!

Thanks again !


bien l'intention de profiter de la situation pour 


18 <---- N° de page

mettre complètement à nu deux ou trois candidats qu'il présenterait à son commanditaire, ce n'était justement pas lui qui aurait le

4 replies

WolfShade
Legend
December 6, 2019

Je pense que je suis en train de mélanger les discussions. Mais s'il s'agit d'une page qui s'affiche après qu'un utilisateur a téléchargé un fichier, vous n'êtes pas obligé de l'enregistrer sur le disque du serveur. Vous pouvez travailler avec l'objet fichier en mémoire, ce qui est beaucoup plus efficace. Vous pouvez ensuite l'envoyer par courrier électronique pour en obtenir une copie ou la proposer à l'utilisateur. Mais vous avez mentionné vouloir donner à l'utilisateur une chance de faire une modification, ce qui me déconcerte. Pourquoi un utilisateur téléchargerait-il un fichier pour effectuer une modification alors que l'utilisateur peut simplement effectuer la modification sur son système? Ou est-ce que je me mêle encore plus que je ne le pensais? Ou est-ce que c'est un utilisateur à télécharger pour quelqu'un d'autre à faire une édition? Je suis perdu. Il n'y a pas assez de caféine.

 

I think I'm getting threads mixed. But if this is a page that renders after a user has uploaded a file, you are not required to save it to the server disk. You can work with the file object in memory, which is much more efficient. Then you can email it for a copy, or offer to the user. But you mentioned wanting to give the user a chance to make an edit, which is what is baffling me. Why would a user upload a file to make a change when the user can just make the change on his or her system? Or am I getting even more mixed up than I thought? Or is this for a user to upload for someone else to make an edit? I'm lost. There is not enough caffeine.

 

^ _ ^

ZNBAuthor
Inspiring
December 7, 2019

Bonjour,

Je sais ce n'est pas simple !

L'interessé entre un doc word.

Il est découpé en chapitres (différencié par le nombre et espace mis devant chaque chapitre).

(c'est là où j'en suis )

C'est enregistré afin de montrer à l'interessé ce que cela donne en epub et qu'il valide définitivement.

Cela a l'air facile mais (pour moi en tout cas;-) ) ce ne l'est pas.

Merci par avance pour votre aide. 

 

Hello,
I know it's not easy!
Interested between a word doc.
It is divided into chapters (differentiated by the number and space placed before each chapter).
(this is where I am)
It is recorded in order to show to the interested person what it gives in epub and that it validates definitively.
It sounds easy but (for me anyway ;-)) it is not.
Thank you in advance for your help.

WolfShade
Legend
December 9, 2019

Malheureusement, je n'ai effectué aucun travail dans ColdFusion impliquant Microsoft Word.

 

Unfortunately, I have not done any work in ColdFusion that involves Microsoft Word.

 

V/r,

 

^ _ ^

 

MISE À JOUR: Cependant, si vous obtenez uniquement le contenu textuel du document Word et êtes au moins arrivé au point de créer le tableau de chapitres, alors je suppose que des modifications pourraient être apportées et enregistrées dans le tableau qui peut ensuite être réitéré pour -créer le document Word. Je ne sais pas trop comment.

 

UPDATE:  However, if you are getting only the text content of the Word document and have at least gotten to the point of making the array of chapters, then I suppose edits could be made and saved to the array which can then be iterated to re-create the Word document.  I'm not not sure how.

WolfShade
Legend
December 6, 2019

Désolé. C'était très frustrant de voir le code que vous avez fourni dans votre dernier message.

Non seulement à cause du code que vous avez placé après les balises CFCONTENT et CFHEADER, mais aussi parce que vous prenez des mesures inutiles pour enregistrer un fichier sur le disque du serveur Web, puis le lisez. Et à partir de votre code, je ne peux même pas dire s'il est correctement écrit. Il vaudrait tellement mieux l'ajouter à un email et l'envoyer avant de le proposer à l'utilisateur pour le télécharger ou l'ouvrir. Ce serait moins stressant pour le processeur.

Un peu plus tôt dans ce fil, j'avais posté un code qui devrait créer l'objet fichier sans enregistrer sur un disque, vous en envoyer une copie par e-mail et le proposer à l'utilisateur de le télécharger ou de l'ouvrir. Je ne me souviens pas de quel article, mais si je peux le trouver, je posterai l'URL ici.

 

Sorry. It was very frustrating to see the code that you provided in your last post.

 

Not just because of the code that you placed after the CFCONTENT and CFHEADER tags, but also because you are taking unnecessary steps to save a file to the web server disk, then read it. And from your code, I can't even tell if it is properly written. It would be so much better to just add it to an email and send it prior to offering it to the user to download or open. It would be less stress on the CPU.

 

Somewhere earlier in this thread I had posted code that should create the file object without saving to a disk, email a copy to you, and offer it to the user to download or open. I do not remember which post, but if I can find it, I will post the URL to it, here.

 

^ _ ^

ZNBAuthor
Inspiring
December 6, 2019

Rebonjour,

Je ne l'avais pas dit mais je suis obligé d'enregistrer les chapitres afin que l'auteur puisse le modifier une dernière fois et pour le rassurer.

Là je veux simplement passer la variable afin de pouvoir le faire.

Encore merci !

Hello again,
I did not say it but I have to save the chapters so that the author can modify it one last time and to reassure him.
There I just want to pass the variable in order to be able to do it.
Thanks again !

 

WolfShade
Legend
December 5, 2019

Je suis désolé .. mais vous continuez à ignorer ce que je vous dis et à faire ce que vous pensez est la bonne manière. Encore une fois, TOUT APRÈS CFHEADER ET CFCONTENT SERA IGNORÉ PAR COLDFUSION.

 

I am sorry.. but you keep ignoring what I am telling you, and doing what you think is the correct way. Again, EVERYTHING AFTER CFHEADER AND CFCONTENT WILL BE IGNORED BY COLDFUSION.

 

^ _ ^

ZNBAuthor
Inspiring
December 6, 2019

Rebonjour,

Excusez-moi d'avoir laissé la ligne :

Hello again,
Excuse me for leaving the line:

 

 

<CFOUTPUT><cfcontent type="application/vnd.openxmlformats-officedocument.wordprocessingml.document" file="#Destination#/#Titre#.docx"></CFOUTPUT> 

 

 

Comme je vous le disais, c'était juste pour vérifier si c'était la bonne variable !

Mais quand j'ai exécuté cette requéte, je l'avais enlevé !

Je n'arrive pas à faire passer la variable entre la premère partie et la seconde.

Merci pour aide.

As I told you, it was just to check if it was the right variable!
But when I executed this request, I had it removed!
I can not get the variable between the first part and the second.
Thank you for help.

WolfShade
Legend
January 23, 2019

Je ne suis pas sûr de comprendre votre demande. Cependant, si vous essayez d'isoler des chapitres de texte, je pense qu'il y a un moyen de le faire. Cependant, il faut que le titre de chaque chapitre ait quelque chose d'unique à utiliser comme délimiteur. Par exemple, chaque chapitre peut avoir "Chapitre n" où "n" est un nombre. Cela pourrait indiquer le début d'un nouveau chapitre. Ou, si le titre est toujours au format "n - Titre du texte va ici" où un numéro est toujours le début d'un titre suivi d'un tiret et vous pouvez être assuré que rien dans le texte du titre n'a ce format , vous pouvez utiliser cela comme un délimiteur.

Est-ce que cela ressemble à quelque chose que vous pourriez faire?

V/r,

^ _ ^

ZNBAuthor
Inspiring
January 24, 2019

Bonjour,

Merci pour votre réponse.

C'est en effet un préalable ! Moi je pensais plus à un style particulier.

Ma difficulté est surtout, ne connaissant pas PDF, le découpage.

Une fois le document chargé par l'utilisateur, comment automatiquement l'intégrer dans un fichier :

0 - clé

1 - titre du chapitre

2 - chapitre

Merci d'avance pour votre aide

ZNBAuthor
Inspiring
April 16, 2019

Le nouveau code que j'ai posté devrait aider avec ceci. Les sauts de ligne dans le code apparaissent sous la forme d'un espace dans le navigateur. View Source devrait révéler les sauts de ligne dans le code. Le nouveau code remplace les sauts de ligne par une balise break, de sorte que de nouvelles lignes apparaissent dans le navigateur.

The new code that I posted should help with this.  Line breaks in code appear as a space in browser.  View Source should reveal the line breaks in the code.  The new code replaces line breaks with a break tag, so new lines appear in the browser.

V/r,

^ _ ^


Bonjour,

MERCI  ENCORE MERCI pour le travail effectué.

Mais je crois que je vais renoncer :-(  C'est au-dessus de mes capacités !

En effet quand un problème est résolu, il y en a un autre, surtout avec la langue française, avec les accents. J'ai fait un parser mais rien y fait. J'ai remplacé le "faux texte" par un vrai texte ! Rien n'y fait !

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<CFINCLUDE template="../inc_init_admin.cfm">
<title>Découpage PDF</title>
</head>

<body>
<cfsilent> 
    <cfscript>
a = "Le départ en vacances
Roselyne et Henri finissaient d'habiller leur deuxième enfant, encore tout endormi. Il était très tôt ce matin-là et ils s'étaient couchés tard la veille pour préparer leurs affaires. Leur fille Camille, plus grande, était déjà prête, après avoir pris un petit encas composé d’une tranche de pain de mie couverte de Nutella. Elle adorait ce goût de noisette et l’onctuosité de la crème qu’elle étendait toujours sur une tartine de pain de mie qu’elle faisait griller. L’odeur de pain grillé tout chaud et de la pâte Nutella qui caramélisait légèrement dessus lui titillait les narines et lui faisait penser aux contes pour enfants que sa mère lui lisait quand elle était petite. Elle regrettait de devoir grandir, même si le monde des adultes présentait bien des avantages.  Très souvent Camille accompagnait son petit déjeuner d’un verre de jus d’orange pour avoir en bouche le contraste entre l’amertume du fruit et le sucré de la tartine. C’est ce qu’elle avait fait ce matin et après, elle s’était habillée d’un pantalon très moulant en velours à fine cotte, vert émeraude, et d’un gros pull à col roulé un peu trop grand pour elle, vert bouteille. Le col lui retombait mollement sur la poitrine, les manches en accordéon dépassaient le bout de ses doigts, mais elle aimait ça. Elle avait chaussé des souliers genre bottines avec des sur-chaussettes très colorées qui couvraient une partie de son pantalon et retombaient de façon boudinée. Elle ne se maquillait pas. Jamais. Préférant rester « nature », son amour pour l’écologie la poussait à ne pas tricher avec sa beauté. Elle avait pris son air boudeur. Ses amies disaient qu'elle était très belle ainsi et les garçons semblaient être follement attirés  par sa grande bouche pulpeuse, toujours légèrement ente ouverte sur ses admirables dents. Elle avait du chien, comme on dit, et elle le savait. Pour l'heure, elle attendait patiemment assise dans le salon, son sac sur les genoux, que ses parents aient fini de s’occuper du « petit tyran » comme elle appelait son frère cadet. Henri, son père, était né en Algérie, du temps où ce pays était encore français. Il était un «pied-noir» comme ils s’appelaient euxmêmes, un français né en Algérie. Il était assez macho et reprochait à sa femme Roselyne de trop materner ce jeune garçon qui avait tout de même dix ans à présent. Mais il s'en occupait aussi, à sa manière, un peu comme on prend soin d'une chose personnelle que l'on veut façonner à sa main. Camille n’en trouvait pas ombrage. Cela l’arrangeait même, car ainsi, elle avait plus de liberté, bien qu’elle n’en profitât pas pour faire trop de bêtises. Son petit frère était en fait plutôt grand pour son âge, très vif, et déjà roublard. Poussé et soutenu par son père, il était le capitaine incontesté de son équipe de football, et avait tendance à s'imposer comme le meneur dans tous les jeux menés avec ses copains. Henri voulait que son fils réussisse dans la vie et toutes les occasions étaient bonnes pour le pousser à se dépasser, à être le meilleur. Il le poussait à effacer les autres pour se mettre en avant, à prendre la direction des opérations, à s'imposer en qualité de chef. Il avait sans arrêt avec lui ce genre de discussion :
- Tu dois être le meilleur partout, fiston. 
–  Pourquoi ça Papa ?
–  Parce qu’il en faut toujours un pour montrer l’exemple et que tu es capable d’être celui-là !
–  Mais si un copain veut aussi être le plus fort ?
– Tu dois lui dire que le meilleur, c’est toi et tu dois le provoquer. Il aura certainement peur de te voir si sûr de toi et il se dégonflera.
–  Et si…et si…et s'il se dégonfle pas et qu’il gagne ?
–  D’abord, on dit "s'il NE se dégonfle pas et qu’il gagne" Et ensuite, alors là, c’est à moi que tu auras affaire ! Mais cela n’arrivera pas. Tu es de la race des conquérants, tu as cela dans le  sang. Tu as ça dans les veines. Crois-moi ! Tu es le plus fort. 
–  Maman dit que, parfois, il faut laisser les autres s’exprimer et montrer ce qu’ils savent faire.
–  Maman se trompe. C’est une femme et elle ne sait pas ce que doit faire un homme s’il veut devenir un chef. Tu veux rester un larbin ou tu veux devenir un chef ? Tu préfères être le sergent Garcia ou devenir le chevalier Zorro ? Moi je t’apprends à devenir un chef, un leader, un patron ! Les autres te suivront parce que tu seras le plus fort, crois-moi.
–  Et ils m’obéiront tous ?
–  Oui, tous. Parce que tu oseras tout tenter, et si un jour tu rates un truc, tu ne devras jamais le reconnaître ! Jamais ! Si tu rates quelque chose, ce sera toujours à cause des autres et tu les accuseras. Du coup, ils penseront davantage à se défendre qu’à t’attaquer. Je vais t’apprendre tout ce qu'il faut, tu seras le premier et je serai fier de toi. 

Il ne fallait pas que son fils soit comme lui avait été dans sa jeunesse. Il se reprochait, en effet, de n'avoir pas osé quand il aurait pu le faire. Quand il aurait dû le faire. 

À l'école, il suivait les autres, même si parfois l'idée d'un jeu venait de lui. Plus tard, son cousin et un de leurs copains étaient partis visiter l'Europe, en pratiquant de l'auto-stop, lui n'avait pas voulu les suivre dans cette aventure, par peur de l'inconnu. Il n'avait pas osé non plus courtiser la plus belle fille du quartier, alors qu'elle lui faisait les yeux doux. Et, finalement, à cause de sa timidité, c'était un autre qu'elle avait épousé. Il n'avait pas osé entrer dans le "privé" au début de sa carrière et à présent, il n'était qu'un petit chef de service dans une administration poussiéreuse d'une petite ville de province. 

Il devait tout cela à toute une série de réflexions que son père avait faites à son propos pendant son enfance et son adolescence. Par exemple, Henri avait eu le jour de ses six ans, l’idée de se fabriquer une chaise à sa taille. En effet, les chaises à la maison étaient toutes trop grandes pour lui et il avait du mal à s’y asseoir seul. Sa mère l’aidait souvent et son père, quand il était là et voyait cela, disait toujours « mais quand est-ce qu'il va arriver à faire quelque chose tout seul, celui-là ! ». C’est pourquoi Henri avait eu l’idée de fabriquer une chaise qu’il pourrait utiliser sans l’aide de personne. Il espérait ainsi que son père serait enfin content de lui. 

L’entretien d’embauche

Alain Garcia regardait attentivement l’homme devant lui, assis nonchalamment dans un fauteuil noir en cuir confortable avec un dossier qui montait au-dessus de sa tête. Par moments, cet homme faisait pivoter son siège, comme pour dire : moi, je suis libre de mes mouvements, alors que toi, tu es coincé dans ta chaise basse, à ma merci. Il avait une attitude à la fois décontractée et hautaine. Ses jambes croisées négligemment laissaient augurer de sa suffisance. Sa main droite aux ongles parfaitement entretenus et manucurés de frais jouait sans cesse avec un coupe-papier en forme de petit poignard. Tantôt il le pointait vers Alain, tantôt il le faisait tourner entre ses doigts, la pointe posée sur le bureau. Il était habillé d’un costume croisé gris sombre, presque noir, rehaussé de légères rayures assez espacées très fines à peine plus claires. On sentait le tissu souple et soyeux, sortant d’un grand faiseur. Sa chemise d’un gris légèrement soutenu soulignait sa cravate couleur acier. Il était d’une élégance rare et racée.

Ses yeux étaient fixés sur Alain et épiaient le moindre de ses mouvements. Son regard perçant cherchait à découvrir la faille que pourrait traduire une moue, un cillement des paupières, un tremblement des mains, un regard fuyant. Manifestement, il n'était pas là pour aider Alain, mais pour le pousser dans ses derniers retranchements et lui faire dire quelque chose ou réaliser un geste qui, à ses yeux, pourrait l'éliminer. 

Car l'homme était un recruteur. Un chasseur de têtes, comme il convient de dire. Il avait passé un message dans la presse et sur le web quelques jours auparavant, et après un tri impitoyable des centaines de lettres et de courriel de réponses qu'il avait reçus, il en avait sélectionné arbitrairement une dizaine et recevait  à présent les candidats. Il avait appelé Alain deux jours auparavant.
–  Monsieur Garcia ? Cabinet des Prestataires de l’Indre. Vous avez répondu à l’une de nos annonces.
–  En effet, il s’agit d’un poste dans la distribution répondit Alain qui avait tout de suite fait le rapprochement.
–  Votre candidature présente quelques éléments intéressants. J’aimerais en discuter avec vous. Vous avez quelques minutes à me consacrer, là ? 

Alain voulait absolument décrocher un rendez-vous en face à face et ne tenait donc pas à faire un entretien téléphonique.
–  Oh ! Je regrette vraiment mais je partais à l’instant pour un rendez-vous personnel, je m’apprêtais à fermer ma porte quand le téléphone a sonné.
–  Bon, tant pis. Êtes-vous libre rapidement ? 
– Je peux vous rencontrer demain après midi ou mercredi matin si vous préférez proposa Alain.
–  Mercredi sera parfait. Je vous attends à 10 h 00. Cela vous convient mieux ?
–  C’est parfait. Qui dois-je demander à l’accueil ?
–  Je suis Christian Lejeune. Soyez à l’heure monsieur Garcia, je n’aime pas attendre ! 

Alain comprit que cet homme était assez orgueilleux et qu’il avait mal pris ce report d’entretien. Ce recruteur devait se prendre pour Dieu tout-puissant. Alain qui avait rencontré d’autres chasseurs de têtes comme lui, pensait que l’homme en éprouvait une certaine jouissance. Il pouvait donner un semblant d'espoir et de dignité à l'un des postulants. Un semblant seulement, car si le recruteur avait bien l'intention de profiter de la situation pour

 
18 <---- N° de page

mettre complètement à nu deux ou trois candidats qu'il présenterait à son commanditaire, ce n'était justement pas lui qui aurait le dernier mot, mais bien le futur employeur.   

Le chasseur de têtes se donnait ainsi l'illusion de la puissance. Car en réalité, et il devait bien le savoir au fond de lui, il n'était rien. Il était moins que ceux qui lui avaient écrit car eux, et en tout cas celui qui serait embauché, pourrait exercer un vrai pouvoir : celui de créer, de diriger, de gérer, de former d'autres hommes à un métier productif, générateur de richesses. Lui n'était que l'outil d'un client qui cherchait un collaborateur. 

En fait, c'était un mauvais recruteur comme il en existe hélas trop. Il n'était presque rien. Il était presque tout. Il devait le savoir et il s'en délectait sûrement. Alain avait rapidement jaugé le bonhomme et il comprenait que ce serait difficile pour lui. Il ne fallait surtout pas paraître supérieur car il serait éliminé. Il ne fallait pas paraître inférieur, car il serait méprisé. Alain devait aborder cet entretien d'une manière particulière pour parler de ses réussites et de ses aspirations. Il devait absolument trouver le moyen d'intéresser ce recruteur sans trop parler.  

Mais comment dire en quelques mots ce que l'on avait réalisé durant toute une carrière ou presque, ce que l'on ressentait, ce à quoi on aspirait dans la vie ? Par écrit ce n'était pas facile, et le recruteur n'examinait pas les lettres de motivation qui ressemblaient à des romans fleuves. Alain savait bien qu'il avait eu la chance de franchir ce premier obstacle dressé sur le parcours de sa recherche d'emploi. Il avait ensuite, ce matin même, répondu aux questions des tests qui lui avaient été soumis. Il s’agissait de tests de personnalité et de logique auxquels il s’était préparé depuis longtemps en faisant des mots croisés, en réalisant des tests de logique dans les revues spécialisées, et en étudiant aussi les dictionnaires de synonymes, homonymes et autres anagrammes. Et à présent, il se trouvait face à cet homme dont il avait un peu peur malgré tout."
 
   <cfset chr=#a#>
  <CFINCLUDE template="../inc_parser.cfm">
  <cfset a=#chr#>
       
  chapterArray = REmatchNoCase("[\t\n\r]+\d{1,3}\s+-\s+[^\t\n\r]+[\t\n\r]{1}",variables.a); 
        titleAndText = arrayNew(1); 
        indexList = ""; start = 1; 
        for(i = 1; variables.i lte arrayLen(variables.chapterArray); i++){ 
            ndx = findNoCase(variables.chapterArray,variables.a,variables.start);  
            start = variables.ndx + 1; 
            indexList = listAppend(variables.indexList,variables.ndx); 
            } 
        count = 0; 
        for(i = 1; variables.i lte listLen(variables.indexList); i++){ 
            start = listGetAt(variables.indexList,variables.i); 
            if(variables.i lt listLen(variables.indexList)){ 
                count = listGetAt(variables.indexList,variables.i+1)-variables.start; 
                } 
            else{ 
                count = len(variables.a); 
                } 
            titleAndText[variables.i]['title'] = trim(chapterArray[variables.i]); 
            titleAndText[variables.i]['text'] = REreplace(trim(replace(mid(variables.a,variables.start,variables.count),variables.chapterArray,'','all')),'[\t|\r|\n]','<br />','all'); 
            } 
    </cfscript> 
</cfsilent>
<!DOCTYPE HTML> 
<html> 
    <head> 
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
        <title>Chapter, Title, and Text from a string</title> 
    </head> 
    <body> 
        <cfdump var="#variables.chapterArray#" /> 
        <cfoutput>#variables.indexList#</cfoutput><cfdump var="#variables.titleAndText#" /><br /><br /> 
        <cfoutput> 
            <cfloop index="idx" from="1" to="#arrayLen(variables.titleAndText)#"> 
                <div>Title:  #variables.titleAndText[variables.idx]['title']#</div> 
                <div>Text:  #variables.titleAndText[variables.idx]['text']#</div> 
                <div><hr noshade /></div> 
            </cfloop> 
        </cfoutput> 
    </body> 
</html> 

inc_parser.cfm

<CFOUTPUT>
<cfset chr=" " & #chr# & " ">

<!--- ' --->
<cfset ca=chr(39)><cfset re="&##39;">
<cfset cpt=find(ca,chr)><CFLOOP CONDITION="(Cpt IS NOT 0) AND (len(chr) LT 5000)"><cfset chr=left(chr,cpt-1)& "#re#" & right(chr,len(chr)-cpt)><cfset cpt=find(ca,chr)></CFLOOP>
<!---  ù --->
<cfset ca=chr(151)><cfset re="&##151;">
<cfset cpt=find(ca,chr)><CFLOOP CONDITION="(Cpt IS NOT 0) AND (len(chr) LT 5000)"><cfset chr=left(chr,cpt-1)& "#re#" & right(chr,len(chr)-cpt)><cfset cpt=find(ca,chr)></CFLOOP>
<!--- " --->
<cfset ca=chr(153)><cfset re="&##153;">
<cfset cpt=find(ca,chr)><CFLOOP CONDITION="(Cpt IS NOT 0) AND (len(chr) LT 5000)"><cfset chr=left(chr,cpt-1)& "#re#" & right(chr,len(chr)-cpt)><cfset cpt=find(ca,chr)></CFLOOP>
<!--- æ --->
<cfset ca=chr(156)><cfset re="&aelig;">
<cfset cpt=find(ca,chr)><CFLOOP CONDITION="(Cpt IS NOT 0) AND (len(chr) LT 5000)"><cfset chr=left(chr,cpt-1)& "#re#" & right(chr,len(chr)-cpt)><cfset cpt=find(ca,chr)></CFLOOP>
<!--- £ --->
<cfset ca=chr(163)><cfset re="&pound;">
<cfset cpt=find(ca,chr)><CFLOOP CONDITION="(Cpt IS NOT 0) AND (len(chr) LT 5000)"><cfset chr=left(chr,cpt-1)& "#re#" & right(chr,len(chr)-cpt)><cfset cpt=find(ca,chr)></CFLOOP>
<!--- © --->
<cfset ca=chr(169)><cfset re="&copy;">
<cfset cpt=find(ca,chr)><CFLOOP CONDITION="(Cpt IS NOT 0) AND (len(chr) LT 5000)"><cfset chr=left(chr,cpt-1)& "#re#" & right(chr,len(chr)-cpt)><cfset cpt=find(ca,chr)></CFLOOP>      
<!--- « --->
<cfset ca=chr(171)><cfset re="&##171;">
<cfset cpt=find(ca,chr)><CFLOOP CONDITION="(Cpt IS NOT 0) AND (len(chr) LT 5000)"><cfset chr=left(chr,cpt-1)& "#re#" & right(chr,len(chr)-cpt)><cfset cpt=find(ca,chr)></CFLOOP>
<!--- ® --->
<cfset ca=chr(174)><cfset re="&reg;">
<cfset cpt=find(ca,chr)><CFLOOP CONDITION="(Cpt IS NOT 0) AND (len(chr) LT 5000)"><cfset chr=left(chr,cpt-1)& "#re#" & right(chr,len(chr)-cpt)><cfset cpt=find(ca,chr)></CFLOOP>
<!--- ° --->
<cfset ca=chr(176)><cfset re="&##176;">
<cfset cpt=find(ca,chr)><CFLOOP CONDITION="(Cpt IS NOT 0) AND (len(chr) LT 5000)"><cfset chr=left(chr,cpt-1)& "#re#" & right(chr,len(chr)-cpt)><cfset cpt=find(ca,chr)></CFLOOP>
<!--- ± --->
<cfset ca=chr(177)><cfset re="&sup1;">
<cfset cpt=find(ca,chr)><CFLOOP CONDITION="(Cpt IS NOT 0) AND (len(chr) LT 5000)"><cfset chr=left(chr,cpt-1)& "#re#" & right(chr,len(chr)-cpt)><cfset cpt=find(ca,chr)></CFLOOP>
<!--- ² --->
<cfset ca=chr(178)><cfset re="&sup2;">
<cfset cpt=find(ca,chr)><CFLOOP CONDITION="(Cpt IS NOT 0) AND (len(chr) LT 5000)"><cfset chr=left(chr,cpt-1)& "#re#" & right(chr,len(chr)-cpt)><cfset cpt=find(ca,chr)></CFLOOP>
<!--- ³ --->
<cfset ca=chr(179)><cfset re="&sup3;">
<cfset cpt=find(ca,chr)><CFLOOP CONDITION="(Cpt IS NOT 0) AND (len(chr) LT 5000)"><cfset chr=left(chr,cpt-1)& "#re#" & right(chr,len(chr)-cpt)><cfset cpt=find(ca,chr)></CFLOOP>
<!--- ´ --->
<cfset ca=chr(180)><cfset re="&acute;">
<cfset cpt=find(ca,chr)><CFLOOP CONDITION="(Cpt IS NOT 0) AND (len(chr) LT 5000)"><cfset chr=left(chr,cpt-1)& "#re#" & right(chr,len(chr)-cpt)><cfset cpt=find(ca,chr)></CFLOOP>
<!--- » --->
<cfset ca=chr(187)><cfset re="&##187;">
<cfset cpt=find(ca,chr)><CFLOOP CONDITION="(Cpt IS NOT 0) AND (len(chr) LT 5000)"><cfset chr=left(chr,cpt-1)& "#re#" & right(chr,len(chr)-cpt)><cfset cpt=find(ca,chr)></CFLOOP>
<!--- ¼ --->
<cfset ca=chr(188)><cfset re="&##188;">
<cfset cpt=find(ca,chr)><CFLOOP CONDITION="(Cpt IS NOT 0) AND (len(chr) LT 5000)"><cfset chr=left(chr,cpt-1)& "#re#" & right(chr,len(chr)-cpt)><cfset cpt=find(ca,chr)></CFLOOP>
<!--- ½ --->
<cfset ca=chr(189)><cfset re="&##189;">
<cfset cpt=find(ca,chr)><CFLOOP CONDITION="(Cpt IS NOT 0) AND (len(chr) LT 5000)"><cfset chr=left(chr,cpt-1)& "#re#" & right(chr,len(chr)-cpt)><cfset cpt=find(ca,chr)></CFLOOP>
<!--- ¾ --->
<cfset ca=chr(190)><cfset re="&##190;">
<cfset cpt=find(ca,chr)><CFLOOP CONDITION="(Cpt IS NOT 0) AND (len(chr) LT 5000)"><cfset chr=left(chr,cpt-1)& "#re#" & right(chr,len(chr)-cpt)><cfset cpt=find(ca,chr)></CFLOOP>
<!--- à --->
<cfset ca=chr(224)><cfset re="&agrave;">
<cfset cpt=find(ca,chr)><CFLOOP CONDITION="(Cpt IS NOT 0) AND (len(chr) LT 5000)"><cfset chr=left(chr,cpt-1)& "#re#" & right(chr,len(chr)-cpt)><cfset cpt=find(ca,chr)></CFLOOP>
<!--- â --->
<cfset ca=chr(226)><cfset re="&acirc;">
<cfset cpt=find(ca,chr)><CFLOOP CONDITION="(Cpt IS NOT 0) AND (len(chr) LT 5000)"><cfset chr=left(chr,cpt-1)& "#re#" & right(chr,len(chr)-cpt)><cfset cpt=find(ca,chr)></CFLOOP>

<!--- ç --->
<cfset ca=chr(231)><cfset re="&ccedil;">
<cfset cpt=find(ca,chr)>

<CFLOOP CONDITION="(Cpt IS NOT 0) AND (len(chr) LT 5000)">
<cfset chr=left(chr,cpt-1)& "#re#" & right(chr,len(chr)-cpt)>
<cfset cpt=find(ca,chr)>
</CFLOOP>

<!--- è --->
<cfset ca=chr(232)><cfset re="&egrave;">
<cfset cpt=find(ca,chr)><CFLOOP CONDITION="(Cpt IS NOT 0) AND (len(chr) LT 5000)"><cfset chr=left(chr,cpt-1)& "#re#" & right(chr,len(chr)-cpt)><cfset cpt=find(ca,chr)></CFLOOP>
<!--- é --->
<cfset ca=chr(233)><cfset re="&eacute;">
<cfset cpt=find(ca,chr)><CFLOOP CONDITION="(Cpt IS NOT 0) AND (len(chr) LT 5000)"><cfset chr=left(chr,cpt-1)& "#re#" & right(chr,len(chr)-cpt)><cfset cpt=find(ca,chr)></CFLOOP>
<!--- ê --->
<cfset ca=chr(234)><cfset re="&ecirc;">
<cfset cpt=find(ca,chr)><CFLOOP CONDITION="(Cpt IS NOT 0) AND (len(chr) LT 5000)"><cfset chr=left(chr,cpt-1)& "#re#" & right(chr,len(chr)-cpt)><cfset cpt=find(ca,chr)></CFLOOP>
<!--- ë --->
<cfset ca=chr(235)><cfset re="&euml;">
<cfset cpt=find(ca,chr)><CFLOOP CONDITION="(Cpt IS NOT 0) AND (len(chr) LT 5000)"><cfset chr=left(chr,cpt-1)& "#re#" & right(chr,len(chr)-cpt)><cfset cpt=find(ca,chr)></CFLOOP>
<!---î--->
<cfset ca=chr(238)><cfset re="&icirc;">
<cfset cpt=find(ca,chr)><CFLOOP CONDITION="(Cpt IS NOT 0) AND (len(chr) LT 5000)"><cfset chr=left(chr,cpt-1)& "#re#" & right(chr,len(chr)-cpt)><cfset cpt=find(ca,chr)></CFLOOP>
<!--- ï --->
<cfset ca=chr(239)><cfset re="&iuml;">
<cfset cpt=find(ca,chr)><CFLOOP CONDITION="(Cpt IS NOT 0) AND (len(chr) LT 5000)"><cfset chr=left(chr,cpt-1)& "#re#" & right(chr,len(chr)-cpt)><cfset cpt=find(ca,chr)></CFLOOP>
<!--- ù --->
<cfset ca=chr(249)><cfset re="&ugrave;">
<cfset cpt=find(ca,chr)><CFLOOP CONDITION="(Cpt IS NOT 0) AND (len(chr) LT 5000)"><cfset chr=left(chr,cpt-1)& "#re#" & right(chr,len(chr)-cpt)><cfset cpt=find(ca,chr)></CFLOOP>
<!--- û --->
<cfset ca=chr(251)><cfset re="&ucirc;">
<cfset cpt=find(ca,chr)><CFLOOP CONDITION="(Cpt IS NOT 0) AND (len(chr) LT 5000)"><cfset chr=left(chr,cpt-1)& "#re#" & right(chr,len(chr)-cpt)><cfset cpt=find(ca,chr)></CFLOOP>
<!--- ü --->
<cfset ca=chr(252)><cfset re="&uuml;">
<cfset cpt=find(ca,chr)><CFLOOP CONDITION="(Cpt IS NOT 0) AND (len(chr) LT 5000)"><cfset chr=left(chr,cpt-1)& "#re#" & right(chr,len(chr)-cpt)><cfset cpt=find(ca,chr)></CFLOOP>

<cfset ssep1=chr(39) & chr(34)>
<cfset ssep2=chr(34) & chr(39)>

<cfset chr=#replace(chr,ssep1,'"','ALL')#>
<cfset chr=#replace(chr,ssep2,'"','ALL')#>

<cfset chr=trim(chr)>
</CFOUTPUT>