指定文件夹下的所有AI文件 存PDF或者保存低版本Ai

在这里插入图片描述

//var main = new Main('3',Compatibility.ILLUSTRATOR16);
var main = new Main('',Compatibility.ILLUSTRATOR16);
//保存 选择器的内容
var tempPath = "c:/temp_open_ai.txt";
//读取 上一次的路径
var pathereal = main.read_txt(tempPath)
//选择文件夹
var input = Folder.selectDialog("选择文件", pathereal);
if(input){
	//保存选择的文件路径
	main.file_words_save_txt(tempPath, input);
	//获取所有ai文件
	var list = input.getFiles("*.ai")
	if (list.length == 0) {
		alert("目前没有文件了!");
	}else{
		main.sort(list);
		//遍历文件 打开文件
		for (var i = 0; i < list.length; i++) {
			app.open(list[i])
			//main.savePdf();
			main.saveAi();
			activeDocument.close()
		}
	}

}





//以下是函数 可以不用改 。。。。。。。。。。。。。。。。。。。。。。。
function Main(preset,ai_ban_ben) {
	//preset保存pdf的选项
	this.preset = preset;
    this.compatibility = ai_ban_ben
    var that = this;
    this.read_txt = function (path) {
        /**
         *  读取记事本内容
         *  返回 字符串
         */
        try {
            var f = new File(path);//文件位置
            f.open('r');
            var txt = f.read();
            f.close();
            return txt;
        } catch (e) {
            return '';
        }
    }

    this.file_words_save_txt = function (file_name, words) {
        /**
         * 文本存txt
         * 使用例子
         * file_words_save_txt('','dj\r\nll简单\r\n123');
         * file_words_save_txt('C:/Users/Administrator/Desktop/1.txt','dj\r\nll简单\r\n123')
         */
        if(that.is_empty(file_name)) {
            f = new File(file_name);//文件位置
            f.open('w');
            f.write(words);
            f.close();
        }

    }
    this.is_empty = function (obj) {
        /**
         * 判断是不是空
         */
        return obj == undefined || obj == '';
    }
    this.savePdf = function () {
        var doc = app.activeDocument;
        //saveFileToPDF(getPdfPath());
        saveFileToPDF(getPdfPath(),that.preset);

        function getPdfPath() {
            var parent = doc.fullName.parent;
            var name = doc.name;
            var name_no_suffix = name.substring(0, name.lastIndexOf("."));
            var pdf_path = parent + "/" + name_no_suffix + ".pdf";
            return pdf_path;
        }
        function saveFileToPDF(dest, preset) {
            var doc = app.activeDocument;
            if (app.documents.length > 0) {
                saveOpts = new PDFSaveOptions();
                if (preset) {
                    saveOpts.pDFPreset = preset;
                }
                doc.saveAs(new File(dest), saveOpts);
            }
        }
    }
    this.saveAi = function () {
        var doc = app.activeDocument;
        saveFileToPDF(getAiPath(),that.compatibility);
        function getAiPath() {
            var parent = doc.fullName.parent;
            var name = doc.name;
            var name_no_suffix = name.substring(0, name.lastIndexOf("."));
            var pdf_path = parent + "/" + name_no_suffix + ".ai";
            return pdf_path;
        }

        function saveFileToPDF(dest,compatibility) {
            var doc = app.activeDocument;
            if (app.documents.length > 0) {
                saveOpts = new IllustratorSaveOptions();;
                if (compatibility) {
                    saveOpts.compatibility = compatibility;
                }
                doc.saveAs(new File(dest), saveOpts);
            }
        }
    }
    this.sort = function (list) {
        //根据文件大小排序
        for (var i = 0; i < list.length - 1; i++) {//确定轮数
            for (var j = 0; j < list.length - i - 1; j++) {//确定每次比较的次数
                if (list[j].length > list[j + 1].length) {
                    tem = list[j];
                    list[j] = list[j + 1];
                    list[j + 1] = tem;
                }
            }
        }
    }

}
在Python中转换CAD文件(DXF)到Illustrator(AI文件,由于这两个软件的交互不是直接的,所以需要分两步来完成:首先将DXF转换为一种中间格式(比如SVG或PDF),然后使用Illustrator或其他工具将其导入生成AI文件。这里假设电脑上已经安装了Adobe Illustrator 2022版本。 1. **DXF到SVG/PDF转换**: 首先,我们可以使用`ezdxf`库来读取DXF文件,然后利用`matplotlib`库将几何形状绘制出来,再保存为SVG。接着使用`cairosvg`或`pdf2image`将SVG转换为PDF,因为Illustrator更容易处理这两种格式。 ```python import os import ezdxf from ezdxf.render import RenderContext, entities_to_path from matplotlib.backends.backend_pdf import PdfPages import cairosvg import pdf2image # 遍历指定目录及其所有子目录 for root, dirs, files in os.walk('your_dxf_directory'): for file in files: if file.endswith('.dxf'): # 检查是否为DXF文件 dxf_name = os.path.join(root, file) dwg = ezdxf.readfile(dxf_name) # 创建SVG with PdfPages(os.path.splitext(dwg_name)[0] + '.pdf') as pdf_pages: ctx = RenderContext(doc=dwg, viewport=(0, 0, dwg.header.get_block_max_x(), dwg.header.get_block_max_y())) path = entities_to_path(dwg.modelspace()) ctx.set_line_width(0.5) # 设置线宽 pdf_pages.savefig(path, width=8.3, height=11.7) # AI尺寸,约8.3x11.7英寸 # 转换为AI svg_path = os.path.splitext(dwg_name)[0] + '.svg' pdf_path = os.path.splitext(dwg_name)[0] + '.pdf' try: cairosvg.svg2png(bytestring=open(svg_path, 'rb').read(), write_to=pdf_path, scale=3) # 缩放比例 except Exception as e: print(f"Failed to convert SVG to PDF: {e}") # 如果有Adobe Illustrator 2022可用,用它打开PDF并另AI try: ai_file = os.path.splitext(dwg_name)[0] + ".ai" subprocess.run(["/Applications/AI.app/Contents/MacOS/AI", "-o", ai_file, pdf_path]) except FileNotFoundError: print(f"Illustrator not found or unable to run: {pdf_path}") ``` 2. **注意**: - 这个脚本假定你有足够的系统权限运行Adobe Illustrator,并且文件名规则简单,可以直接基于原始DXF文件名创建AI文件名。 - 在转换过程中可能需要处理各种异常,例如文件路径问题、图形复杂度过高导致渲染失败等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值