2016-12-22 2 views
0

Ich bin ein Neuling mit Javascript in Adobe. Ich habe Skript geschrieben, das den Dateinamen abfängt und als Titel im Dokument hinzufügt, aber das Problem ist, dass es nicht in 2 Zeilen lange Dateinamen aufgeteilt wird. So lange Textdateinamen sind außerhalb des Seitenrahmens.Split lange Dateiname Zeichenfolge in zwei Zeilen mit Adobe-Javascript

Zum Beispiel Dateinamen ist „Dies ist ein Text, den ich brauche in zwei Zeilen aufgeteilt Wie das Skript zu schreiben, um den Langtext und fit in der Seite zu spalten“

Dies ist nur ein Beispiel . Was muss ich bearbeiten? Und ist es möglich?

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

Bitte lesen Sie die Tags ** vor ** Ihre Frage zu posten. – DavidPostill

+1

Sie stellen eine off-topic Frage. Bitte lesen Sie [On-Topic] (https://superuser.com/help/on-topic), [Wie stelle ich eine gute Frage?] (Https://superuser.com/help/how-to-ask) und [Welche Arten von Fragen sollte ich vermeiden zu fragen?] (https://superuser.com/help/dont-ask) – DavidPostill

+0

Nein, es nicht. Programmierfragen sind nicht Thema. Bitte ** lesen Sie den Javascript-Tag **, wie Sie bereits gesagt wurden "** Programmierfragen sind Off-Thema hier; fragen Sie auf Stack Overflow statt. **" – DavidPostill

Antwort

0

So in der Dokumentation für Acrobat suchen, um die schnelle Möglichkeit, dies zu tun ist, um die bPercentage: -1 Eigenschaft hinzufügen und verwenden, das sollte das Wasserzeichen passen die Seite mit einem Maximum von 100% skalieren. Je länger der Text ist, desto kleiner ist natürlich die Schriftgröße, aber sie sollte nur skaliert werden, wenn sie benötigt wird.

Das große Problem hier ist "wie groß ist zu groß?" Da die meisten Schriftarten keine feste Breite haben. Wenn Sie also keine Funktion haben, um die Größe des Typs in dieser Schriftart zu überprüfen, müssen Sie ein temporäres Bild erstellen, den Typ festlegen, dann die Abmessungen des Bildes messen und dann entscheiden, wie stark der Text gebrochen werden soll.

Der schlimmste Fall für Englisch ist jedoch wahrscheinlich eine endlose Reihe von W, also wenn Sie die Schriftgröße und einige vernünftige Zeichen begrenzen möchten, können Sie eine angemessene maximale Anzahl von Zeichen durch Zählen, wie viele Ws erhalten es braucht um außerhalb der Grenzen zu gehen.

Sobald Sie diese Nummer haben, können Sie die Zeichenfolge aufteilen.

Eine Möglichkeit, einen String aufgeteilt ist String zu verwenden:

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

Und dann cText: trFileName, ersetzen mit cText: cDisplayText,

Ich habe nicht getestet und mein Javascript ein wenig verkümmert hat, aber die Idee ist, Testen Sie die Zeichenfolgenlänge und fügen Sie einen Bindestrich und einen Zeilenumbruch ein.

Dies (offensichtlich) berücksichtigt nicht den Fall, in dem mehr als 1 Zeilenumbruch erforderlich ist.

+0

Es funktioniert nicht. Aber wenn es funktionieren würde, würde ich eine max. Zeichenfolge anstelle von max. Zeichen bevorzugen. Hier stecke ich fest. – spriteup

+0

Wenn Ihr Dateiname "geological_survey_Llanfairpwllgwyngyllgogerychwyrndrobwllllantysiliogogogoch.pdf" lautet, funktioniert eine Wortzählung nicht. etwas zu beachten – Yorik

+0

Ich habe vorgefertigte Dateinamen und es gibt keine bestimmten Symbole oder Zeichen. Es gibt nur Leerzeichen und Wörter. Wörter zählen Option ist die beste Lösung für mich. – spriteup