abracadabraPDF › Forums › PDF – Général › Fractionnement doc et enregistrement avec nom spécifique
- Ce sujet est vide.
-
CréateurSujet
-
17 mars 2018 à 12:59 #45824
acrobatvendee
MembreBonjour,
J’ai un doc de 5 pages et je veux en faire 5 docs de 1 page. Chaque page donne des infos sur une commune et je souhaite que le nom de chaque fichier prenne le nom de la commune concernée (présent dans le texte).
Est-ce possible? et comment m’y prendre svp?
Je suis preneur d’exemples car j’ai des fichiers bcp plus volumineux à traiter.
Merci de votre aide
FP -
CréateurSujet
-
AuteurRéponses
-
17 mars 2018 à 17:03 #63637
bebarth
Maître des clésbonjour,
A mon avis c’est faisable, mais ça demande un peu de boulot !
A ce que je comprend les noms de communes ne sont pas des champs.
Sur la même ligne de texte que celui du nom de la commune, peut-il y avoir d’autres textes ???? en gros, comment savoir si le nom de commune comporte un ou plusieurs mots ???
J’essaie de voir ça lundi.
Bon weekend.
@+
:bonjour:17 mars 2018 à 18:31 #63638acrobatvendee
MembreBonsoir bebarth,
les noms de communes sont parfois composés (comme dans mon fichier joint) et ce ne sont pas des champs de fusion dans le pdf car je ne sais pas faire avec acrobat cc mais au départ mon doc provient d’un publipostage word avec champs de fusion et j’en fait un fichier pdf. (je pourrais mettre le nom de la commune ou je veux si besoin
Merci de ton aide et bon we18 mars 2018 à 09:39 #63639Merlin
Maître des clésBonjour.
PDFZone est une petite merveille qui fait ça en un tournemain et dont le petit prix fait qu’il ne vaut vraiment pas la peine de se prendre la tête avec Acrobat : http://www.pdfzoneapp.com/fr/
:Smiley15:
19 mars 2018 à 10:36 #63640bebarth
Maître des clésbonjour,
Voici en pièce jointe le fichier action que je te propose.
Ici, j’extrais la page avant de rechercher le mot COMMUNE puis les mots qui suivent pour composer le nom de la commune. Cela implique donc que l’on doit trouver le mot « COMMUNE » sur toutes les pages. Si ce n’est pas le cas il faudra réorganiser le script.
Si tu n’as pas de sous à dépenser et que tu es prêt à te prendre un peu la tête, essaye cette action…
Pour ma part, je me suis effectivement un peu « pris la tête », car à force de prendre des petits bouts de scripts à droite à gauche, on arrive à prendre des variables de mêmes noms et ça ne le fait pas… Mais bon, j’ai connu des prises de têtes bien plus compliquées !!!
Tu me dis ce que tu en penses et si le mot « COMMUNE » n’est pas obligatoirement sur toutes les pages, on fera différemment.
@+
:bonjour:19 mars 2018 à 13:48 #63641acrobatvendee
MembreOuaouh! Génialissime, un immense merci!
Il faut que je comprenne ton code car je voudrais enregistrer tous les fichiers créés à un endroit précis comme par exemple c:ika
Tu as utilisé du javascript, si je comprends bien.
Il faudrait que j’apprenne…
Merci encore19 mars 2018 à 14:16 #63642bebarth
Maître des clés…le plus simple pour connaitre le chemin à indiquer :
- Tu places un fichier à l’endroit où tu veux enregistrer tes nouveaux fichiers avec les noms des communes
- Tu ouvres ce fichier avec Acrobat
- Tu ouvres la console (cmd J sur mac, ce doit être ctrl J sur PC)
- Tu tapes « this.path; » puis la touche enter du clavier numérique
- Le chemin du fichier s’affiche dans la console
- Tu copies ce chemin, sans le nom du fichier
- Dans le script, tu modifies cette ligne
- [/list]
Code:newDoc.saveAs(repertoire+ville+ ».pdf »);
en
Code:newDoc.saveAs(« le chemin copié »+ville+ ».pdf »);- …en mettant les guillemets.
[/list]Normalement, si tu as les droits dans le répertoire, ça devrait fonctionner.
@+
:bonjour:20 mars 2018 à 11:23 #63643acrobatvendee
MembreBonjour Bebarth,
J’ai lancé le traitement sur un fichier pdf de 256 pages qui comporte la mention : Secteur 2 L’AIGUILLON SUR VIE au lieu de COMMUNE: L’AIGUILLON SUR VIE
j’ai donc modifié ton script en remplaçant le mot COMMUNE par Secteur
Je n’ai pas remplacé par Secteur 2 car le numéro de secteur change mais ce n’est pas grave puisque j’arrive à récupérer le nom de la commune
Je suis surtout ennuyé parceque le traitement s’arrête au bout de quelques pages créées et un message m’avertit qu’il y a trop de fichiers ouverts.
Comment faire pour que le traitement aille jusqu’au bout des 256 fichiers ?
Merci de ton aide précieuse20 mars 2018 à 12:24 #63644bebarth
Maître des clésbonjour,
J’avais effectivement remarqué que tous les fichiers se fermaient en fin de script alors que closeDoc(); est en fin de boucle, mais je ne savais pas que tu avais autant de documents…
Comme ça, je ne sais pas comment faire, mais je vais regarder !Pour rechercher soit COMMUNE soit SECTEUR, tu modifies cette ligne :
Code:while (ckWord != « COMMUNE » && ckWord != « SECTEUR ») {ça devrait fonctionner ! et pas besoin de rajouter « 2 » car un simple caractère n’est pas considéré comme un mot !
Je te tiens au courant si je trouve pour fermer les fenêtre une à une.
@+
:bonjour:20 mars 2018 à 12:50 #63645Merlin
Maître des clésComment faire pour que le traitement aille jusqu’au bout des 256 fichiers ?
Essaye avec Acrobat Pro version 9 ou 8 si tu en as la possibilité, ils pourront même traiter 10 fois plus de fichiers sans broncher.
:Smiley03:20 mars 2018 à 13:12 #63646bebarth
Maître des clés…parce que j’ai essayé :
Code:var d = app.activeDocs;
for( var i in d )
if( d != this ) d.closeDoc();et ça ne fonctionne pas non plus !!! enfin les fichiers se ferments tous à la fin… :mur:
@+
:bonjour:20 mars 2018 à 13:36 #63647acrobatvendee
Membreok je vais découper mon fichier en 5 alors en attendant que nos grands magiciens trouvent the solution
Je n’ai pas accès aux autres versions
Merci de votre aide20 mars 2018 à 14:58 #63648bebarth
Maître des clésBon ben on va prendre le problème différemment.
On cherche COMMUNE ou SECTEUR sur l’original et on extrait la page.Code:console.show();
console.clear();
//Début durée
d0=new Date();
debut=util.printd(« dd-mm HH:MM »,d0)
console.println(« Debut process: »+debut)
//Initialisation des variables
var Chemin = this.path;
var PathSansExt = Chemin.substring(0,Chemin.length-4);
var nomDocument = this.documentFileName;
var repertoire = Chemin.substring(0,Chemin.length-nomDocument.length);
for (var p = 0; p < this.numPages; p++) {
var ville = « »;
var ckWord = « »;
var i = 0;
//recherche du mot COMMUNE
var numWords = this.getPageNumWords(p);
while (ckWord != « COMMUNE » && ckWord != « SECTEUR ») {
var ckWord = this.getPageNthWord(p, i, true);
//Coordonnées du mot
var q = this.getPageNthWordQuads(p, i);
// convert quads in default user space to rotated
// user space used by Links.
m = (new Matrix2D).fromRotated(this,p);
mInv = m.invert()
r = mInv.transform(q) //Coordonnées champ du mot trouvé
r=r.toString() //Conversion en chaîne
r = r.split(« , »); //Séparation de la chaîne à chaque virgule « , »
//Position verticale du mot
var posVert = r[3];
i=i+1;
}
var posMot = posVert;
while (posMot == posVert) {
var ckWord = this.getPageNthWord(p, i, true);
//Coordonnées du mot
var q = this.getPageNthWordQuads(p, i);
// convert quads in default user space to rotated
// user space used by Links.
m = (new Matrix2D).fromRotated(this,p);
mInv = m.invert()
r = mInv.transform(q) //Coordonnées champ du mot trouvé
r=r.toString() //Conversion en chaîne
r = r.split(« , »); //Séparation de la chaîne à chaque virgule « , »
//Position verticale du mot
var posMot = r[3];
i=i+1;
if (posMot == posVert) {var ville = ville + » » + ckWord;}
}
var str = ville;
var debutVille = ville.substring(0,1);
if (debutVille == » « ) {
var res = str.slice(2);
} else {
var res = str.slice(1);
}
var ville = res;
console.println(« Commune : « +ville);
if (ville != « ») {
this.extractPages({
nStart: p,
cPath: repertoire+ville+ ».pdf »
});
}
}
//fin duree
df=new Date();
fin=util.printd(« dd-mm HH:MM »,df)
console.println(« Fin process: »+fin)
delta=(df.valueOf()-d0.valueOf())/1000/60
console.println(« Duree process: »+delta+ » minutes »)@+
:bonjour:20 mars 2018 à 16:25 #63649acrobatvendee
Membredésolé, je tombe sur une erreur (voir pièce jointe)
20 mars 2018 à 16:35 #63650bebarth
Maître des clés…pas d’erreur de mon côté avec le fichier que tu avais fourni, mais je n’ai pas pris en compte la possibilité par exemple qu’une page soit vierge.
Cette possibilité est-elle envisageable ??? Il faudrait peut-être rajouter des fonctions « try » !!!
Je ne sais pas si je pourrai regarder ça ce soir… trop de boulot (je suis sur une vidéo Adobe Première très urgente -> pour samedi).
Sinon demain matin !
@+
:bonjour:20 mars 2018 à 17:04 #63651acrobatvendee
Membreah je dois avoir des pages imprimées mais sans infos de commune. je referai un essai en les retirant mais je doute car l’erreur est venue au lancement.
pas de soucis pour le délai j’ai fait mon traitement aujourd’hui en découpant le fichier en 6
Adobe première? ah j’en fais bcp aussi
Bonne soirée20 mars 2018 à 21:44 #63652bebarth
Maître des clésbonsoir,
Là, ça devrait marcher qu’il y ait ou pas des mots sur la page et qu’il y ait COMMUNE/SECTEUR ou pas !Code:console.show();
console.clear();
//Début durée
d0=new Date();
debut=util.printd(« dd-mm HH:MM »,d0);
console.println(« Début process: »+debut);
//Initialisation des variables
var Chemin = this.path;
var PathSansExt = Chemin.substring(0,Chemin.length-4);
var nomDocument = this.documentFileName;
var repertoire = Chemin.substring(0,Chemin.length-nomDocument.length);
for (var p = 0; p < this.numPages; p++) {
var ville = « »;
var ckWord = « »;
var i = 0;
//recherche du mot COMMUNE
var numWords = this.getPageNumWords(p);
console.println(« La page: »+(p+1)+ » comporte « + numWords + » mots »);
if (numWords > 0) {
try {
while (ckWord != « COMMUNE » && ckWord != « SECTEUR ») {
var ckWord = this.getPageNthWord(p, i, true);
//Coordonnées du mot
var q = this.getPageNthWordQuads(p, i);
// convert quads in default user space to rotated
// user space used by Links.
m = (new Matrix2D).fromRotated(this,p);
mInv = m.invert()
r = mInv.transform(q) //Coordonnées champ du mot trouvé
r=r.toString() //Conversion en chaîne
r = r.split(« , »); //Séparation de la chaîne à chaque virgule « , »
//Position verticale du mot
var posVert = r[3];
i=i+1;
}
var posMot = posVert;
while (posMot == posVert) {
var ckWord = this.getPageNthWord(p, i, true);
//Coordonnées du mot
var q = this.getPageNthWordQuads(p, i);
// convert quads in default user space to rotated
// user space used by Links.
m = (new Matrix2D).fromRotated(this,p);
mInv = m.invert()
r = mInv.transform(q) //Coordonnées champ du mot trouvé
r=r.toString() //Conversion en chaîne
r = r.split(« , »); //Séparation de la chaîne à chaque virgule « , »
//Position verticale du mot
var posMot = r[3];
i=i+1;
if (posMot == posVert) {var ville = ville + » » + ckWord;}
}
var str = ville;
var debutVille = ville.substring(0,1);
if (debutVille == » « ) {
var res = str.slice(2);
} else {
var res = str.slice(1);
}
var ville = res;
if (ckWord == « COMMUNE ») {
console.println(« Commune : « +ville);
} else {
console.println(« Secteur : « +ville);
}
if (ville != « ») {
this.extractPages({
nStart: p,
cPath: repertoire+ville+ ».pdf »
});
}
} catch(e) {
app.alert({cMsg: »La page « + (p+1) + » ne contient ni COMMUNE ni SECTEUR. », nIcon:2});
}
}
}
//Fin durée
df=new Date();
fin=util.printd(« dd-mm HH:MM »,df);
console.println(« Fin process: »+fin);
delta=(df.valueOf()-d0.valueOf())/1000/60;
console.println(« Duree process: »+delta+ » minutes »);Si tu ne veux pas le message d’alerte, tu enlève la ligne
Code:app.alert({cMsg: »La page « + (p+1) + » ne contient ni COMMUNE ni SECTEUR. », nIcon:2});@+
:bonjour:21 mars 2018 à 22:50 #63653Merlin
Maître des clésJe viens de (re)trouver ce super tuto : http://khkonsulting.com/2014/04/extract-pdf-pages-based-content/?scid=social41756986&adbid=575295188949594113&adbpl=tw&adbpr=63779713
Je crois qu’il est en plein dans le sujet.
:Smiley03:22 mars 2018 à 11:22 #63654bebarth
Maître des clésbonjour Merlin,
Le tuto que tu indiques répondrait plus à un autre post où j’avais répondu car il extrait les pages contenant un même mot et enregistre ce mot comme nom de fichier.
https://abracadabrapdf.net/forum/index.php/topic,3410.msg20094.html#msg20094Ici, le problème est un peu différent. On teste les mots qui sont après et sur la même ligne que le mot COMMUNE ou SECTEUR et on prend tous ces mots pour former un nom (de ville et de fichier). C’est pourquoi j’avais demandé s’il n’y avait pas d’autres mots sur la même ligne, sinon impossible de savoir ou s’arrête le nom de la ville.
@+
:bonjour:22 mars 2018 à 13:36 #63655acrobatvendee
MembreJe suis très occupé ces dernières heures et vais regarder avec bcp de plaisir vos solutions prochainement. Merci infiniment pour ce que vous faites.
-
AuteurRéponses
- Vous devez être connecté pour répondre à ce sujet.