2016-12-22 2 views
0

Je suis débutant en utilisant Javascript dans Adobe. J'ai écrit un script qui attrape le nom du fichier et l'ajoute en tant que titre dans le document, mais le problème est qu'il ne se divise pas en 2 lignes de noms de fichiers longs. Les noms de fichiers texte longs sont hors de la bordure de la page.Séparer la longue chaîne de nom de fichier en deux lignes avec Adobe Javascript

Par exemple le nom du fichier est « Ceci est un texte que je dois diviser en deux lignes Comment écrire le script afin de diviser le texte long et en forme dans la page »

Ceci est juste un échantillon . Qu'est-ce que j'ai besoin de modifier? Et est-ce possible?

var trFileName = this.documentFileName.replace(/.*\/|\.pdf$/ig,""); //remove .pdf extension 
var pageAmount = this.numPages; //define how many pages are there 

this.addWatermarkFromText({ 
cText: trFileName, 
nStart: 0, 
nEnd: pageAmount, 
nFontSize: 18, 
aColor: color.blue, 
cFont: "Helvetica-Bold", 
nTextAlign: app.constants.align.center, 
nHorizAlign: app.constants.align.center, 
nVertAlign: app.constants.align.top, 
//nHorizValue: -25, 
nVertValue: -87.87 
}) 
+1

Veuillez lire les balises ** avant ** de poster votre question. – DavidPostill

+1

Vous posez une question hors sujet. Veuillez lire [On-Topic] (https://superuser.com/help/on-topic), [Comment poser une bonne question?] (Https://superuser.com/help/how-to-ask) et [Quels types de questions devrais-je éviter de poser?] (https://superuser.com/help/dont-ask) – DavidPostill

+0

Non, pas. Les questions de programmation sont hors sujet. S'il vous plaît ** lire la balise javascript ** comme vous avez déjà dit à "** Les questions de programmation sont hors sujet ici, demander sur Stack Overflow à la place. **" – DavidPostill

Répondre

0

Ainsi, la recherche à la documentation Acrobat moyen rapide de le faire est d'ajouter et d'utiliser la propriété bPercentage: -1 qui devrait à l'échelle du filigrane pour s'adapter à la page avec un maximum de 100%. Évidemment, plus le texte est long, plus la taille des caractères est petite, mais elle ne doit être mise à l'échelle que lorsque cela est nécessaire.

Le gros problème ici est "quelle taille est trop grande?" Puisque la plupart des polices ne sont pas à largeur fixe. Donc, si vous n'avez pas de fonction pour vérifier la taille du type dans cette police, vous devez configurer une image temporaire, définir le type, puis mesurer les dimensions de l'image, puis décider de combien casser le texte. Le pire des cas pour l'anglais est probablement une chaîne sans fin de W, donc si vous voulez coder en dur la taille de la police et une limite de caractères raisonnable, vous pouvez obtenir un nombre de caractères maximum raisonnable en comptant combien de W il faut sortir des limites.

Une fois que vous avez ce nombre, vous pouvez diviser la chaîne.

Une façon de diviser une chaîne est d'utiliser sous-chaîne:

var cDisplayText = trFilename; 

var nMaxChars = 10; 
var cAdobeNewline = '\r'; 
var cLineBreakChar = '-'; 

if (cDisplayText.length > nMaxChars && cDisplayText.length > 0) { 
    cDisplayText = cDisplayText.substring(0, nMaxChars) 
    + cLineBreakChar 
    + cAdobeNewline 
    + cDisplayText.substring(nMaxChars); 
} 

Et puis remplacez cText: trFileName, avec cText: cDisplayText,

Je n'ai pas testé et mon javascript est atrophié un peu, mais l'idée est de Testez la longueur de la chaîne et insérez un trait d'union et un saut de ligne.

Ceci (évidemment) ne tient pas compte du cas où il y a plus d'un saut de ligne requis.

+0

Cela ne fonctionne pas. Mais si cela fonctionne, je préférerais la chaîne de caractères max au lieu de caractères max. C'est là que je suis coincé. – spriteup

+0

Si votre nom de fichier est "geological_survey_Llanfairpwllgwyngyllgogerychwyrndrobwllllantysiliogogogoch.pdf", le nombre de mots ne fonctionnera pas. quelque chose à considérer – Yorik

+0

J'ai préformé les noms de fichiers et il n'y a pas de symboles ou de caractères spécifiques. Il n'y a que des caractères et des mots d'espace. Donc l'option de comptage de mots est la meilleure solution pour moi. – spriteup