将超链接应用于文本的脚本
Script for applying hyperlinks to text
由于不熟悉编码,我在调整下面的代码时遇到了问题。我需要超链接“#”和“#”之后的所有内容,直到 "space"。 “#”后面的数字可以是变量,最多可以有5个数字。
示例如下:
var doc = app.activeDocument;
// get URL
app.findGrepPreferences = app.changeGrepPreferences = NothingEnum.nothing;
app.findGrepPreferences.findWhat = '(?i)(?<=# )(https?|www)\S+\>=';
var mURL = doc.findGrep();
// get Texte
app.findGrepPreferences = app.changeGrepPreferences = NothingEnum.nothing;
app.findGrepPreferences.findWhat = '#';
var mSource = doc.findGrep();
for (var k = 0; k <mSource.length; k++){
var mHyperlinkDestination = doc.hyperlinkURLDestinations.add(mURL[k].contents);
var mHyperlinkTextSource = doc.hyperlinkTextSources.add(mSource[k]);
mHyperlink = doc.hyperlinks.add(mHyperlinkTextSource,mHyperlinkDestination);
mHyperlink.name =mURL[k].contents;
mHyperlink.visible=false;
}
//remove URL text
app.findGrepPreferences = app.changeGrepPreferences = NothingEnum.nothing;
app.findGrepPreferences.findWhat = '(?i)(?<=# )(https?|www)\S+\>=';
app.changeGrepPreferences.changeTo = '';
doc.changeGrep();
这应该有效:
var doc = app.activeDocument;
// get URL
app.findGrepPreferences = app.changeGrepPreferences = NothingEnum.nothing;
app.findGrepPreferences.findWhat = '\s(https?|www)(://).+$';
var mURL = doc.findGrep();
// get Texte
app.findGrepPreferences = app.changeGrepPreferences = NothingEnum.nothing;
app.findGrepPreferences.findWhat = '#\d{1,5}';
var mSource = doc.findGrep();
for (var k = 0; k <mSource.length; k++){
var mHyperlinkDestination = doc.hyperlinkURLDestinations.add(mURL[k].contents);
var mHyperlinkTextSource = doc.hyperlinkTextSources.add(mSource[k]);
mHyperlink = doc.hyperlinks.add(mHyperlinkTextSource,mHyperlinkDestination);
mHyperlink.name =mURL[k].contents + '_' + k;
mHyperlink.visible=false;
}
//remove URL text
app.findGrepPreferences = app.changeGrepPreferences = NothingEnum.nothing;
app.findGrepPreferences.findWhat = '(?<= )(https?|www)(://).+$';
app.changeGrepPreferences.changeTo = '';
doc.changeGrep();
总的来说,只是一些小的调整
1) 更改 URL 的 grep 搜索
2) 更改了数字的 grep 搜索(“#”后跟 1-5 位数字)
3) 两个超链接不能重名。我更改了该行以对它们进行编号,您可能需要调整以满足您的需要,您可以做的一件事是使用 mSource[k].contents + '_' + mURL[k].contents
,但如果您有重复,您将 运行 陷入同样的问题.
由于不熟悉编码,我在调整下面的代码时遇到了问题。我需要超链接“#”和“#”之后的所有内容,直到 "space"。 “#”后面的数字可以是变量,最多可以有5个数字。
示例如下:
var doc = app.activeDocument;
// get URL
app.findGrepPreferences = app.changeGrepPreferences = NothingEnum.nothing;
app.findGrepPreferences.findWhat = '(?i)(?<=# )(https?|www)\S+\>=';
var mURL = doc.findGrep();
// get Texte
app.findGrepPreferences = app.changeGrepPreferences = NothingEnum.nothing;
app.findGrepPreferences.findWhat = '#';
var mSource = doc.findGrep();
for (var k = 0; k <mSource.length; k++){
var mHyperlinkDestination = doc.hyperlinkURLDestinations.add(mURL[k].contents);
var mHyperlinkTextSource = doc.hyperlinkTextSources.add(mSource[k]);
mHyperlink = doc.hyperlinks.add(mHyperlinkTextSource,mHyperlinkDestination);
mHyperlink.name =mURL[k].contents;
mHyperlink.visible=false;
}
//remove URL text
app.findGrepPreferences = app.changeGrepPreferences = NothingEnum.nothing;
app.findGrepPreferences.findWhat = '(?i)(?<=# )(https?|www)\S+\>=';
app.changeGrepPreferences.changeTo = '';
doc.changeGrep();
这应该有效:
var doc = app.activeDocument;
// get URL
app.findGrepPreferences = app.changeGrepPreferences = NothingEnum.nothing;
app.findGrepPreferences.findWhat = '\s(https?|www)(://).+$';
var mURL = doc.findGrep();
// get Texte
app.findGrepPreferences = app.changeGrepPreferences = NothingEnum.nothing;
app.findGrepPreferences.findWhat = '#\d{1,5}';
var mSource = doc.findGrep();
for (var k = 0; k <mSource.length; k++){
var mHyperlinkDestination = doc.hyperlinkURLDestinations.add(mURL[k].contents);
var mHyperlinkTextSource = doc.hyperlinkTextSources.add(mSource[k]);
mHyperlink = doc.hyperlinks.add(mHyperlinkTextSource,mHyperlinkDestination);
mHyperlink.name =mURL[k].contents + '_' + k;
mHyperlink.visible=false;
}
//remove URL text
app.findGrepPreferences = app.changeGrepPreferences = NothingEnum.nothing;
app.findGrepPreferences.findWhat = '(?<= )(https?|www)(://).+$';
app.changeGrepPreferences.changeTo = '';
doc.changeGrep();
总的来说,只是一些小的调整
1) 更改 URL 的 grep 搜索
2) 更改了数字的 grep 搜索(“#”后跟 1-5 位数字)
3) 两个超链接不能重名。我更改了该行以对它们进行编号,您可能需要调整以满足您的需要,您可以做的一件事是使用 mSource[k].contents + '_' + mURL[k].contents
,但如果您有重复,您将 运行 陷入同样的问题.