https://blog.csdn.net/mywaster/article/details/50220379

最近做一个项目,要求将dwg文件转化为pdf,开发工具VS2010 + AutoCad 2011,

在网上查了很多代码都有各种问题,解决重重的问题,终于实现了批量转化。

1.首先引入com组件

AutoCAD 2011 Type Library

AutoCAD/ObjectDBX Common18.0 Type Library

2.创建/获取CAD实例

private static AcadApplication _app = null;  

        private static void Initialization()
{
string programID = "AutoCAD.Application.18.1";
try
{
//如果CAD已经打开,就直接获取
_app = (AcadApplication)Marshal.GetActiveObject(programID);
}
catch
{
try
{
//创建新的实例
_app = (AcadApplication)new AcadDocument().Application;
}
catch
{
throw;
}
}
}

关于AutoCAD2011对应的版本是AutoCAD.Application.18.1

关于创建CAD实例的方法,网上流传的版本是

app = new AcadApplication();

app = new AcadApplicationClass();

经过测试上述两种方法对于AutoCad 2011都报错。。

所以采取了_app = (AcadApplication)new AcadDocument().Application;

3.dwg批量转换成pdf

public static void Dwg2Pdf(IEnumerable<FileInfo> files)
{
Initialization(); AcadDocument doc = null;
string destPath = string.Empty;
try
{
foreach (var f in files)
{
doc = _app.Documents.Open(f.FullName,true);
doc.SetVariable("sdi", );
doc.SetVariable("Filedia", );
doc.SetVariable("RASTERPREVIEW", );
doc.SetVariable("BACKGROUNDPLOT", );
doc.ActiveLayout.ConfigName = _cfg.AUTOCAD_PC3;
doc.ActiveLayout.UseStandardScale = true;
doc.ActiveLayout.StandardScale = AcPlotScale.acScaleToFit;
doc.ActiveLayout.PlotType = AcPlotType.acExtents;
doc.ActiveLayout.CenterPlot = true;
doc.ActiveLayout.PlotRotation = AcPlotRotation.ac0degrees;
doc.ActiveLayout.PlotType = Autodesk.AutoCAD.Interop.Common.AcPlotType.acExtents;
doc.Plot.QuietErrorMode = true;
destPath = Path.Combine(f.Directory.FullName, Path.GetFileNameWithoutExtension(f.Name) + ".pdf");
doc.Plot.PlotToFile(destPath);
if (doc != null) doc.Close(false);
}
}
catch (System.Exception e)
{
throw e;
}
finally
{
try
{
doc.Close(false);
_app.Quit();
}
catch { }
}
}

需要注意几点

1.doc.SetVariable("BACKGROUNDPLOT", 0);一定要设置为0,否则只能转换第一个文件,第二个文件就报错。

2.doc.ActiveLayout.ConfigName不同版本的CAD都不一样,有的是DWGtoPDF.pc3也有的是DWG to PDF.pc3

c# 将dwg文件转化为pdf的更多相关文章

  1. 为什么一些公司把dwg文件转化为pdf

    是因为dwg文件中可能会涉及到字体问题 这台电脑打开dwg没问题,另一台电脑可能没有相应的字体用autocad打开就会出现乱码,所以先转化为pdf,而pdf有固定格式的作用,能够保证一台电脑打开是什么 ...

  2. 将caj文件转化为pdf文件进行全文下载脚本(ubuntu下亲测有用)

    最近ubuntu下caj阅读器,突然崩掉了,而偏偏要准备开题,在网上搜索原因未果,准备放弃时候,突然在网上看到一个脚本,说是很好用,可以在指定页面将caj文件转化为pdf文件,亲测有用,这里直接给出脚 ...

  3. 利用Pandoc将markdown文件转化为pdf

    利用Pandoc将markdown文件转化为pdf 准备工作 安装pandoc 安装MiKTeX 将markdown文件转换为pdf 准备工作 安装pandoc Windows下安装pandoc很容易 ...

  4. 关于DWG文件转换成PDF

    最近有这样一个需求,客户会提供DWG文件,因为DWG文件是不能直接在网页上显示的,所以必须对他做处理,要求是转换成PDF格式.我查了很久的资料,很多都是基于C#和.NET的方法,而且都是说的很模糊,不 ...

  5. windows环境下 php 将office文件(word/excel/ppt)转化为pdf(转)

    将office文件转化为pdf的方法有 1.利用openoffice提供的服务 (比较简单,但是转化的效果不太好) 2.使用office提供的服务 (注:这在windows服务器上,并且服务器上面安装 ...

  6. 【使用Itext处理PDF文档(新建PDF文件、修改PDF文件、PDF中插入图片、将PDF文件转换为图片)】

    iText简介 iText是著名的开放源码的站点sourceforge一个项目,是用于生成PDF文档的一个java类库.通过iText不仅可以生成PDF或rtf的文档,而且可以将XML.Html文件转 ...

  7. DWG文件怎么转换成PDF格式

    在CAD中,设计师们绘制的图纸都是以dwg文件来进行保存的.Dwg文件是不能够直接进行打开查看的,就需要将其格式进行转换一下.将dwg文件转换为PDF格式的进行查看.那具体要怎么来进行操作呢?下面小编 ...

  8. asp.net 将ppt,word转化为pdf实现在线浏览详解

    1.首先添加应用:COM里面的Micsosoft Office 12.0 Object Library(VS2013基本都有14.0或者15.0 有的话一样的添加,因为我的没有只有12.0) : 2. ...

  9. Python将html转化为pdf

    前言 前面我们对博客园的文章进行了爬取,结果比较令人满意,可以一下子下载某个博主的所有文章了.但是,我们获取的只有文章中的文本内容,并且是没有排版的,看起来也比较费劲... 咋么办的?一个比较好的方法 ...

随机推荐

  1. 1. 全文搜索框架 Haystack

    1.什么是Haystack Haystack是django的开源全文搜索框架(全文检索不同于特定字段的模糊查询,使用全文检索的效率更高 ),该框架支持Solr,Elasticsearch,Whoosh ...

  2. 一台服务器通过nginx配置多个域名(80端口)

    1. 问题描述 多个域名对应一个服务器,为了避免域名后增加端口号,两个域名都需要占用80端口号,使用nginx来进行配置. 2. 解决方案 目前项目中,线上正在使用(100%可用)多域名对应一个服务器 ...

  3. android_sdcard读写(三)

    这次来个稍微复杂点的. package cn.com.sxp;import android.app.Activity;import android.app.ProgressDialog;import ...

  4. Solr 全文搜索

    ## 1. 概述 在本文中,我们将探讨一个[Apache Solr](http://lucene.apache.org/solr/)搜索引擎中的基本概念 - 全文搜索. Apache Solr是一个开 ...

  5. 消息中间件及IBM MQ

    MQ 消息中间件: 中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源. 中间件位于客户机/ 服务器的操作系统之上,管理计算机资源和网络通讯.是连接两个独立应用程 ...

  6. 浅谈ActiveMQ与使用

    一.什么是消息中间件 消息中间件顾名思义实现的就是在两个系统或两个客户端之间进行消息传送 二.什么是ActiveMQ ActiveMQ是一种开源的基于JMS(Java Message Servie)规 ...

  7. exe崩溃用windbgattach后有宝贵现场,可看程序退出线程等,千万不要清屏

    exe崩溃用windbgattach后有宝贵现场,可看程序退出线程等,千万不要清屏

  8. LeetCode第2题

    // 给出两个 非空 的链表用来表示两个非负的整数.其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字.//// 如果,我们将这两个数相加起来,则会返回一个新的链表 ...

  9. [leetcode] 679. 24 Game (Hard)

    24点游戏,游戏规则就是利用().+.-. *. /,对四个数字任意运算,可以得出24点则为true. 排列组合问题,最多有A42*A32*A22*4*4*4,也就是12*6*2*4*4=9216种组 ...

  10. IO流总结1

    一.什么是流? 流就是字节序列的抽象概念,能被连续读取数据的数据源和能被连续写入数据的接收端就是流,流机制是Java及C++中的一个重要机制,通过流我们可以自由地控制文件.内存.IO设备等数据的流向. ...