上传文件至「/」
This commit is contained in:
142
furbadge.csv
Normal file
142
furbadge.csv
Normal file
@@ -0,0 +1,142 @@
|
||||
UID,兽牌名称,兽牌图片,票务
|
||||
400,夜凛DX2026,/fur_badge/400_夜凛DX2026_1781445441059.png,基础
|
||||
1257,鱼,/fur_badge/1257_鱼_1783782390434.png,基础
|
||||
348,Paco - 帕科,/fur_badge/348_Paco - 帕科_1783597812678.png,精英
|
||||
648,Daily天利 a.k.a DJ夜鹭,/fur_badge/648_Daily天利 a.k.a DJ夜鹭_1783649749898.png,精英
|
||||
1267,老刀KNIFE,/fur_badge/1267_老刀KNIFE_1783596991914.png,精英
|
||||
36,凌寒661,/fur_badge/36_凌寒661_1783167672512.png,精英
|
||||
63,Mickel,/fur_badge/63_Mickel_1783167165620.png,精英
|
||||
182,弗地冈人,/fur_badge/182_弗地冈人_1783168648032.png,精英
|
||||
191,维C,/fur_badge/191_维C_1783199418023.png,精英
|
||||
222,灯泡,/fur_badge/222_灯泡_1783491736163.png,精英
|
||||
302,莲曜Trevor,/fur_badge/302_莲曜Trevor_1783168340916.png,精英
|
||||
310,小林,/fur_badge/310_小林_1783170862000.png,精英
|
||||
881,皮气,/fur_badge/881_皮气_1783351835306.png,精英
|
||||
902,Kylewood_椰子,/fur_badge/902_Kylewood_椰子_1783260334669.png,精英
|
||||
915,叶诗煜,/fur_badge/915_叶诗煜_1783170679191.png,精英
|
||||
1012,Mechta,/fur_badge/1012_Mechta_1783661602981.png,精英
|
||||
1167,你梦中的大猫,/fur_badge/1167_你梦中的大猫_1783169634366.png,精英
|
||||
1631,星凛帅哥,/fur_badge/1631_星凛帅哥_1783860865498.png,精英
|
||||
1649,哲星,/fur_badge/1649_哲星_1783242681138.png,精英
|
||||
1673,青岚,/fur_badge/1673_青岚_1783645417247.png,精英
|
||||
1711,蒋乐君,/fur_badge/1711_蒋乐君_1783758136460.png,精英
|
||||
1716,云SHUO朔,/fur_badge/1716_云SHUO朔_1783697344709.png,精英
|
||||
1729,灰鹿原,/fur_badge/1729_灰鹿原_1783830138735.png,精英
|
||||
1759,否否,/fur_badge/1759_否否_1783176579198.png,精英
|
||||
1777,YQRF_HJ,/fur_badge/1777_YQRF_HJ_1783180911569.png,精英
|
||||
1784,Brenda,/fur_badge/1784_Brenda_1783864659218.png,精英
|
||||
1845,什伍,/fur_badge/1845_什伍_1783169364199.png,精英
|
||||
1848,冰淋冰淇淋,/fur_badge/1848_冰淋冰淇淋_1783316351476.png,精英
|
||||
1913,暮凝,/fur_badge/1913_暮凝_1783268466250.png,精英
|
||||
1969,飞梦梦Q,/fur_badge/1969_飞梦梦Q_1783190768803.png,精英
|
||||
2010,LochA,/fur_badge/2010_LochA_1783756013954.png,精英
|
||||
2011,MLKE,/fur_badge/2011_MLKE_1783170373848.png,精英
|
||||
2038,能量大使,/fur_badge/2038_能量大使_1783779288678.png,精英
|
||||
2040,夏花,/fur_badge/2040_夏花_1783173768120.png,精英
|
||||
2076,盖修GEIS,/fur_badge/2076_盖修GEIS_1783169519576.png,精英
|
||||
2078,莫比乌斯_陌白,/fur_badge/2078_莫比乌斯_陌白_1783508742883.png,精英
|
||||
2079,辰煜,/fur_badge/2079_辰煜_1783315850917.png,精英
|
||||
2120,CregChain,/fur_badge/2120_CregChain_1783755836421.png,精英
|
||||
2159,澈灵,/fur_badge/2159_澈灵_1783168999416.png,精英
|
||||
60,佩里斯:都是杂鱼!,/fur_badge/60_佩里斯:都是杂鱼!_1783343498538.png,精英
|
||||
288,祤狐,/fur_badge/288_祤狐_1783843598125.png,精英
|
||||
625,赤弦CHISEN,/fur_badge/625_赤弦CHISEN_1783843638870.png,精英
|
||||
660,斑斑,/fur_badge/660_斑斑_1783346469577.png,精英
|
||||
1072,幻汐,/fur_badge/1072_幻汐_1783015019944.png,精英
|
||||
1441,欧狼,/fur_badge/1441_欧狼_1783495798069.png,精英
|
||||
1838,一只灵柚儿,/fur_badge/1838_一只灵柚儿_1783345091349.png,精英
|
||||
2176,杨氏集团团长,/fur_badge/2176_杨氏集团团长_1783925554409.png,精英
|
||||
2193,牙牙,/fur_badge/2193_牙牙_1783470730654.png,精英
|
||||
2261,Shizi噬子,/fur_badge/2261_Shizi噬子_1783922685052.png,精英
|
||||
2262,兽屋之龙,/fur_badge/2262_兽屋之龙_1783922651561.png,精英
|
||||
26,锐恩Rain,/fur_badge/26_锐恩Rain_1782577007777.png,精英
|
||||
49,橙光Flare,/fur_badge/49_橙光Flare_1780982434843.png,精英
|
||||
84,墨凉,/fur_badge/84_墨凉_1781183892838.png,精英
|
||||
197,金步戈,/fur_badge/197_金步戈_1783435117784.png,精英
|
||||
375,奇犽,/fur_badge/375_奇犽_1781176411576.png,精英
|
||||
408,海鸥不欧,/fur_badge/408_海鸥不欧_1783453071801.png,精英
|
||||
638,极光:佩佩是杂鱼,/fur_badge/638_极光:佩佩是杂鱼_1783367220836.png,精英
|
||||
664,雷正ReZiiph,/fur_badge/664_雷正ReZiiph_1782553431324.png,精英
|
||||
665,独焰,/fur_badge/665_独焰_1781170872244.png,精英
|
||||
843,秋月,/fur_badge/843_秋月_1782314999688.png,精英
|
||||
937,洛塔特,/fur_badge/937_洛塔特_1783945215245.png,精英
|
||||
938,蓝际,/fur_badge/938_蓝际_1781793253636.png,精英
|
||||
1042,歪骨,/fur_badge/1042_歪骨_1782367899503.png,精英
|
||||
1592,Abbey,/fur_badge/1592_Abbey_1783098626739.png,精英
|
||||
1629,小玄,/fur_badge/1629_小玄_1783674582280.png,精英
|
||||
1630,莱恩波鲁,/fur_badge/1630_莱恩波鲁_1781801339358.png,精英
|
||||
1666,赤夜,/fur_badge/1666_赤夜_1783746001346.png,精英
|
||||
1667,此兽牌很美味,/fur_badge/1667_此兽牌很美味_1781798715801.png,精英
|
||||
1689,甦翊綦,/fur_badge/1689_甦翊綦_1780501448912.png,精英
|
||||
1693,缄默,/fur_badge/1693_缄默_1780500776538.png,精英
|
||||
1698,迪迪,/fur_badge/1698_迪迪_1783754672874.png,精英
|
||||
1745,阿普雷斯,/fur_badge/1745_阿普雷斯_1780728611425.png,精英
|
||||
1789,风龙慧蓝,/fur_badge/1789_风龙慧蓝_1780687663613.png,精英
|
||||
1790,奈克,/fur_badge/1790_奈克_1780742748517.png,精英
|
||||
1842,焕想Fancy,/fur_badge/1842_焕想Fancy_1780816408570.png,精英
|
||||
1929,决,/fur_badge/1929_决_1780812968716.png,精英
|
||||
1956,南宫鹤飞,/fur_badge/1956_南宫鹤飞_1781158261318.png,精英
|
||||
1996,鼻涕龙,/fur_badge/1996_鼻涕龙_1781298204510.png,精英
|
||||
2032,南宫洛辰,/fur_badge/2032_南宫洛辰_1781179570645.png,精英
|
||||
2053,荭皊,/fur_badge/2053_荭皊_1783684838596.png,精英
|
||||
2174,摸鱼柴,/fur_badge/2174_摸鱼柴_1783359048032.png,精英
|
||||
2175,麦萌小鱼,/fur_badge/2175_麦萌小鱼_1783357219284.png,精英
|
||||
615,断手的学委,/fur_badge/615_断手的学委_1783740564700.png,精英
|
||||
618,星仔,/fur_badge/618_星仔_1783740703364.png,精英
|
||||
619,人造黄油,/fur_badge/619_人造黄油_1783740423233.png,精英
|
||||
1269,拉尔rua,/fur_badge/1269_拉尔rua_1783742214314.png,精英
|
||||
1277,冬冬不吃麻辣烫,/fur_badge/1277_冬冬不吃麻辣烫_1783743743976.png,精英
|
||||
2183,药刀,/fur_badge/2183_药刀_1783429270728.png,精英
|
||||
2187,牧木匠,/fur_badge/2187_牧木匠_1783429384836.png,精英
|
||||
294,两片暖阳夹苏白,/fur_badge/294_两片暖阳夹苏白_1783870136943.png,精英
|
||||
688,零羽,/fur_badge/688_零羽_1783869224568.png,精英
|
||||
922,哈多利,/fur_badge/922_哈多利_1783924906194.png,精英
|
||||
1163,柯里德丶亚伯,/fur_badge/1163_柯里德丶亚伯_1783867465193.png,精英
|
||||
1331,Vincent,/fur_badge/1331_Vincent_1783869538891.png,精英
|
||||
2266,诺尔,/fur_badge/2266_诺尔_1783922658960.png,精英
|
||||
126,瑞飒,/fur_badge/126_瑞飒_1783612012208.png,精英
|
||||
611,烟雨,/fur_badge/611_烟雨_1783597072620.png,精英
|
||||
634,涛涛,/fur_badge/634_涛涛_1783746346549.png,精英
|
||||
1,喵小杰,/fur_badge/1_喵小杰_1780490697925.png,资深
|
||||
333,芒夏星澜,/fur_badge/333_芒夏星澜_1783851795542.png,资深
|
||||
349,橘砂🍊JUSHA,/fur_badge/349_橘砂🍊JUSHA_1781256182825.png,资深
|
||||
552,青桔,/fur_badge/552_青桔_1783755279325.png,资深
|
||||
560,Finn,/fur_badge/560_Finn_1783843519975.png,资深
|
||||
563,明河,/fur_badge/563_明河_1783721262397.png,资深
|
||||
623,摸鱼蜥蜴,/fur_badge/623_摸鱼蜥蜴_1783865850288.png,资深
|
||||
645,樱城,/fur_badge/645_樱城_1783939867128.png,资深
|
||||
652,Jasaka咖啡,/fur_badge/652_Jasaka咖啡_1782270782418.png,资深
|
||||
686,寒山纪,/fur_badge/686_寒山纪_1783922944832.png,资深
|
||||
752,逽琦,/fur_badge/752_逽琦_1781100913604.png,资深
|
||||
782,凌青皓,/fur_badge/782_凌青皓_1783743586380.png,资深
|
||||
1005,Wilson Zo,/fur_badge/1005_Wilson Zo_1783767759700.png,资深
|
||||
1187,极光Aurora,/fur_badge/1187_极光Aurora_1781174588843.png,资深
|
||||
1468,灰狐,/fur_badge/1468_灰狐_1783827589616.png,资深
|
||||
1603,7倓宁,/fur_badge/1603_7倓宁_1783589604724.png,资深
|
||||
1637,锐虎,/fur_badge/1637_锐虎_1780499767682.png,资深
|
||||
1644,鳞渊From豫,/fur_badge/1644_鳞渊From豫_1781109623687.png,资深
|
||||
1688,亚泽Asawa,/fur_badge/1688_亚泽Asawa_1780491702306.png,资深
|
||||
1690,Taskura,/fur_badge/1690_Taskura_1781801587379.png,资深
|
||||
1750,柠檬鲨钠,/fur_badge/1750_柠檬鲨钠_1781069768666.png,资深
|
||||
1752,皓月Amar,/fur_badge/1752_皓月Amar_1781102880872.png,资深
|
||||
1792,SuKubiy,/fur_badge/1792_SuKubiy_1780492290688.png,资深
|
||||
1794,泰克斯 taiks,/fur_badge/1794_泰克斯 taiks_1780552508574.png,资深
|
||||
1819,傲龙,/fur_badge/1819_傲龙_1783871256186.png,资深
|
||||
1825,UET,/fur_badge/1825_UET_1782831138668.png,资深
|
||||
1847,狐白,/fur_badge/1847_狐白_1781776684318.png,资深
|
||||
1861,湫陌於,/fur_badge/1861_湫陌於_1780556317669.png,资深
|
||||
1898,龙波Rohnbo,/fur_badge/1898_龙波Rohnbo_1782307006778.png,资深
|
||||
1911,阿寄zzz,/fur_badge/1911_阿寄zzz_1781192673333.png,资深
|
||||
1928,翊玖,/fur_badge/1928_翊玖_1783759056084.png,资深
|
||||
1940,槐泽,/fur_badge/1940_槐泽_1781011694705.png,资深
|
||||
1945,灰钰,/fur_badge/1945_灰钰_1780925378357.png,资深
|
||||
1948,55,/fur_badge/1948_55_1781492322941.png,资深
|
||||
1973,莫尔Morr,/fur_badge/1973_莫尔Morr_1781099883704.png,资深
|
||||
1995,屿尘,/fur_badge/1995_屿尘_1781441279285.png,资深
|
||||
2003,Ukaly,/fur_badge/2003_Ukaly_1781002738782.png,资深
|
||||
2026,路默希尔瓦,/fur_badge/2026_路默希尔瓦_1782611615884.png,资深
|
||||
2034,盐水饼干,/fur_badge/2034_盐水饼干_1783849261923.png,资深
|
||||
2051,柠檬狐鬼饕,/fur_badge/2051_柠檬狐鬼饕_1783671134988.png,资深
|
||||
431,阿怪,/fur_badge/431_阿怪_1781697163599.png,#N/A
|
||||
1284,白阳,/fur_badge/1284_白阳_1783514083086.png,#N/A
|
||||
1915,黑泽,/fur_badge/1915_黑泽_1783922767349.png,#N/A
|
||||
|
223
兽牌.jsx
Normal file
223
兽牌.jsx
Normal file
@@ -0,0 +1,223 @@
|
||||
// 主函数
|
||||
function main() {
|
||||
if (app.documents.length === 0) {
|
||||
alert("请先打开AI文件");
|
||||
return;
|
||||
}
|
||||
|
||||
var doc = app.activeDocument;
|
||||
var csvFile = File.openDialog("选择兽牌导出.csv文件");
|
||||
|
||||
if (!csvFile) {
|
||||
alert("未选择文件");
|
||||
return;
|
||||
}
|
||||
|
||||
// 导出目录:CSV 同目录下的 pdf_export
|
||||
var exportFolder = new Folder(csvFile.parent.fsName + "/pdf_export");
|
||||
if (!exportFolder.exists) {
|
||||
exportFolder.create();
|
||||
}
|
||||
|
||||
// 读取CSV文件
|
||||
var data = readCSV(csvFile);
|
||||
|
||||
if (data.length === 0) {
|
||||
alert("CSV文件为空");
|
||||
return;
|
||||
}
|
||||
|
||||
var exportedCount = 0;
|
||||
|
||||
// 遍历每一行数据
|
||||
for (var i = 0; i < data.length; i++) {
|
||||
var row = data[i];
|
||||
if (!row || row.length < 4) {
|
||||
continue;
|
||||
}
|
||||
|
||||
var id = row[0];
|
||||
var name = row[1];
|
||||
var path = row[2];
|
||||
var type = row[3];
|
||||
|
||||
if (type !== "精英") {
|
||||
continue; // 只处理精英类型
|
||||
}
|
||||
|
||||
// 处理ID格式
|
||||
var formattedId = formatId(id);
|
||||
|
||||
// 创建一份副本,避免连续修改原始模板
|
||||
// var workDoc = doc.duplicate();
|
||||
// workDoc.name = "兽牌_" + id + "_" + name;
|
||||
|
||||
// 填充id图层
|
||||
fillLayer(doc, "id", formattedId);
|
||||
|
||||
// 填充name图层
|
||||
fillLayer(doc, "name", name);
|
||||
|
||||
// 替换pic图层的图片,并嵌入
|
||||
if (path && path !== "") {
|
||||
var imageFile = resolveImageFile(csvFile, path);
|
||||
if (imageFile && imageFile.exists) {
|
||||
replacePicLayer(doc, "pic", imageFile);
|
||||
}
|
||||
}
|
||||
|
||||
// 导出PDF
|
||||
var pdfFileName = createPdfFileName(id, name);
|
||||
var pdfFile = new File(exportFolder.fsName + "/" + pdfFileName);
|
||||
exportPdf(doc, pdfFile);
|
||||
|
||||
// 关闭副本
|
||||
// workDoc.close(SaveOptions.DONOTSAVECHANGES);
|
||||
|
||||
exportedCount++;
|
||||
}
|
||||
|
||||
alert("已导出 " + exportedCount + " 个 PDF");
|
||||
}
|
||||
|
||||
// 读取CSV文件
|
||||
function readCSV(file) {
|
||||
var data = [];
|
||||
file.open("r");
|
||||
|
||||
while (!file.eof) {
|
||||
var line = file.readln();
|
||||
if (line) {
|
||||
var cells = line.split(",");
|
||||
data.push(cells);
|
||||
}
|
||||
}
|
||||
|
||||
file.close();
|
||||
return data;
|
||||
}
|
||||
|
||||
// 格式化ID:"1257" -> "00 / 00 / 12 / 57"
|
||||
function formatId(id) {
|
||||
id = id.toString();
|
||||
|
||||
// 补零至4位
|
||||
while (id.length < 4) {
|
||||
id = "0" + id;
|
||||
}
|
||||
|
||||
// 分割为4段,每2位一段
|
||||
var part1 = id.substring(0, 2);
|
||||
var part2 = id.substring(2, 4);
|
||||
|
||||
return "00 / 00 / " + part1 + " / " + part2;
|
||||
}
|
||||
|
||||
// 填充文本图层
|
||||
function fillLayer(doc, layerName, text) {
|
||||
for (var i = 0; i < doc.layers.length; i++) {
|
||||
if (doc.layers[i].name === layerName) {
|
||||
var layer = doc.layers[i];
|
||||
for (var j = 0; j < layer.pageItems.length; j++) {
|
||||
if (layer.pageItems[j].typename === "TextFrame") {
|
||||
layer.pageItems[j].contents = text;
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 解析图片路径,支持相对路径和绝对路径
|
||||
function resolveImageFile(csvFile, pathValue) {
|
||||
var trimmedPath = pathValue.toString().trim();
|
||||
if (!trimmedPath) {
|
||||
return null;
|
||||
}
|
||||
|
||||
var candidate = new File(trimmedPath);
|
||||
if (candidate.exists) {
|
||||
return candidate;
|
||||
}
|
||||
|
||||
var relativeCandidate = new File(csvFile.parent.fsName + "/" + trimmedPath);
|
||||
if (relativeCandidate.exists) {
|
||||
return relativeCandidate;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
// 替换图层中的图片,并嵌入
|
||||
function replacePicLayer(doc, layerName, imageFile) {
|
||||
for (var i = 0; i < doc.layers.length; i++) {
|
||||
if (doc.layers[i].name === layerName) {
|
||||
var layer = doc.layers[i];
|
||||
for (var j = 0; j < layer.pageItems.length; j++) {
|
||||
var item = layer.pageItems[j];
|
||||
if (item.typename === "PlacedItem") {
|
||||
item.file = imageFile;
|
||||
|
||||
try {
|
||||
item.embed();
|
||||
} catch (e) {
|
||||
// 某些版本 Illustrator 对 embed() 的支持可能不同,忽略异常
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 生成 PDF 文件名:id_name.pdf
|
||||
function createPdfFileName(id, name) {
|
||||
var safeId = id.toString();
|
||||
var safeName = name.toString();
|
||||
|
||||
// safeName = safeName.replace(/[\\/:*?"<>|]/g, "_");
|
||||
// safeName = safeName.replace(/\s+/g, "_");
|
||||
|
||||
// if (!safeName) {
|
||||
// safeName = "未命名";
|
||||
// }
|
||||
|
||||
return safeId + "_" + safeName + ".pdf";
|
||||
}
|
||||
|
||||
// 导出PDF,使用 PDF/X-4:2008 (Japan) 预设,并设置相关选项
|
||||
function exportPdf(doc, pdfFile) {
|
||||
var pdfSaveOptions = new PDFSaveOptions();
|
||||
|
||||
try {
|
||||
pdfSaveOptions.presetName = "[PDF/X-4:2008 (Japan)]";
|
||||
} catch (e) {}
|
||||
|
||||
try {
|
||||
pdfSaveOptions.pdfPreset = "[PDF/X-4:2008 (Japan)]";
|
||||
} catch (e) {}
|
||||
|
||||
try {
|
||||
pdfSaveOptions.compatibility = PDFCompatibility.PDFX4;
|
||||
} catch (e) {}
|
||||
|
||||
// 常规设置:从顶层图层创建 Acrobat 图层
|
||||
try {
|
||||
pdfSaveOptions.acrobatLayers = true;
|
||||
} catch (e) {}
|
||||
|
||||
// 尽量关闭下采样,避免降低像素
|
||||
try {
|
||||
pdfSaveOptions.downsampleImages = false;
|
||||
} catch (e) {}
|
||||
|
||||
try {
|
||||
pdfSaveOptions.downsampleLinkedImages = false;
|
||||
} catch (e) {}
|
||||
|
||||
doc.saveAs(pdfFile, pdfSaveOptions);
|
||||
}
|
||||
|
||||
// 运行脚本
|
||||
main();
|
||||
Reference in New Issue
Block a user