该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

请问有人做过dwg的文件预览吗,网上的代码有版本限制,用最新版的AutoCAD保存的dwg文件会提示参数无效,有大佬做过这个吗?

异常信息:

未处理System.Exception

HResult=-2146233088

Message=参数无效。

Source=WindowsFormsTest1

StackTrace:

在 WindowsFormsTest1.Form1.ViewDWG.GetDwgImage(String FileName) 位置 E:\code\C#\studentdata\WindowsFormsTest1\WindowsFormsTest1\Form1.cs:行号 343

在 WindowsFormsTest1.Form1.button2_Click(Object sender, EventArgs e) 位置 E:\code\C#\studentdata\WindowsFormsTest1\WindowsFormsTest1\Form1.cs:行号 195

在 System.Windows.Forms.Control.OnClick(EventArgs e)

在 System.Windows.Forms.Button.OnClick(EventArgs e)

······

单步调试 到myImg = Image.FromStream(BMPF); //创建位图文件对象这里异常。

相关代码:

struct BITMAPFILEHEADER

{

public short bfType;

public int bfSize;

public short bfReserved1;

public short bfReserved2;

public int bfOffBits;

}

public Image GetDwgImage(string FileName)

{

if (!(File.Exists(FileName)))

{

throw new FileNotFoundException("文件没有被找到");

}

FileStream DwgF=null; //文件流

int PosSentinel; //文件描述块的位置

BinaryReader br = null; //读取二进制文件

int TypePreview; //缩略图格式

int PosBMP; //缩略图位置

int LenBMP; //缩略图大小

short biBitCount; //缩略图比特深度

BITMAPFILEHEADER biH; //BMP文件头,DWG文件中不包含位图文件头,要自行加上去

byte[] BMPInfo; //包含在DWG文件中的BMP文件体

MemoryStream BMPF = new MemoryStream(); //保存位图的内存文件流

BinaryWriter bmpr = new BinaryWriter(BMPF); //写二进制文件类

Image myImg = null;

try

{

DwgF = new FileStream(FileName, FileMode.Open, FileAccess.Read); //文件流

br = new BinaryReader(DwgF);

DwgF.Seek(13, SeekOrigin.Begin); //从第十三字节开始读取

PosSentinel = br.ReadInt32(); //第13到17字节指示缩略图描述块的位置

DwgF.Seek(PosSentinel + 30, SeekOrigin.Begin); //将指针移到缩略图描述块的第31字节

TypePreview = br.ReadByte(); //第31字节为缩略图格式信息,2 为BMP格式,3为WMF格式

if (TypePreview == 1)

{

}

else if(TypePreview == 6)

{

PosBMP = br.ReadInt32(); //DWG文件保存的位图所在位置

DwgF.Seek(PosSentinel + 16, SeekOrigin.Begin);

LenBMP = br.ReadInt32(); //位图的大小

DwgF.Seek(PosBMP + 14, SeekOrigin.Begin); //移动指针到位图块

biBitCount = br.ReadInt16(); //读取比特深度

DwgF.Seek(PosBMP, SeekOrigin.Begin); //从位图块开始处读取全部位图内容备用

BMPInfo = br.ReadBytes(LenBMP); //不包含文件头的位图信息

br.Close();

DwgF.Close();

biH.bfType = 19778; //建立位图文件头

if (biBitCount < 9)

{

biH.bfSize = 254 + 4 * (int)(Math.Pow(2, biBitCount)) + LenBMP;

}

else

{

biH.bfSize = 254 + LenBMP;

}

biH.bfReserved1 = 0; //保留字节

biH.bfReserved2 = 0; //保留字节

biH.bfOffBits = 14 + 40 + 1024; //图像数据偏移

//以下开始写入位图文件头

bmpr.Write(biH.bfType); //文件类型

bmpr.Write(biH.bfSize); //文件大小

bmpr.Write(biH.bfReserved1); //0

bmpr.Write(biH.bfReserved2); //0

bmpr.Write(biH.bfOffBits); //图像数据偏移

bmpr.Write(BMPInfo); //写入位图

BMPF.Seek(0, SeekOrigin.Begin); //指针移到文件开始处

myImg = Image.FromStream(BMPF); //创建位图文件对象

//myImg = Image.FromFile(FileName);

bmpr.Close();

BMPF.Close();

}

return myImg;

}

html预览dwg文件,大佬救命!有关dwg文件预览的问题相关推荐

  1. CAD(dxf、dwg格式)文件的读取和显示,真正实现通过代码预览CAD文件,包含解析dwg、dxf文件,可以提取标注信息,可以转换为pdf、png、tiff、gif等6种格式的文件,可以永久免费实用

    真正实现通过代码预览CAD文件,包含解析dwg.dxf文件,可以提取标注信息,可以转换为pdf.png.tiff.gif等6种格式的文件,可以永久免费实用. 网上看了很多资料,不是缺这个就是少那个,反 ...

  2. Springboot + layui + FTP文件上传删除 + HTTP文件下载预览 + pdf.js文件预览(项目实战总结)

    文件管理 0.需求及前言 1.前端,上传按钮嵌入数据表格中 2.利用IIS部署FTP文件服务器 3.后台FTP连接和文件操作 4.FTP遇到的问题和解决方案 5.预览PDF文件V1.0:FTP+临时文 ...

  3. React文件预览,React实现在线预览docx,xslx,pdf格式文件

    一.前言 由于项目需要实现文件的预览功能,通过查询百度找到了一个组件,就是react-file-viewer,其官方API中描述可支持文件格式有以下格式: 图片:png,jpeg,gif,bmp,包括 ...

  4. SpringBoot+MongoDB GridFS文件上传、下载、预览实战

    SpringBoot + MongoDB GridFS 随着web 3.0的兴起,数据的形式不局限于文字,还有语音.视频.图片等.高效存储与检索二进制数据也成为web 3.0必须要考虑的问题.然而这种 ...

  5. 微信小程序预览文件,word、xlsx文件打不开?

    预览文件的时候发现表格,word打不开,查了官方文档没有解决办法,后来解决了赶紧整理一下. 按照微信开发文档里的写,pdf可以预览成功,但word和xlsx不能预览 官方文档并没有收录这个bug,生成 ...

  6. Win10文件夹中图片不显示预览图解决方法

    Win10文件夹中图片不显示预览图解决方法分享.如果我们在文件夹里面有很多的图片文件,可以通过预览图来快速的找到自己需要的图片.但是有用户却发现电脑文件夹里面图片不会显示缩略图,今天我们一起来看看如何 ...

  7. html选择文件夹控件,File文件控件,选中文件(图片,flash,视频)即立即预览显示

    我们平常用file文件控件上传文件,要预览有时会刷新页面,结果file控件被清空,好多人问能能让他不清空或重新赋值,因为处于安全性的考虑,这是不可能的.那怎么进行无刷新预览呢?这里我把我所使用的方法写 ...

  8. vue中将base64的pdf文件流转换成pdf并预览(二)——base64转PDF工具的使用

    vue中将base64的pdf文件流转换成pdf并预览(二)--base64转PDF工具的使用 Base64 to PDF官网 1.官网 官网--https://www.ipvoid.com/base ...

  9. OpenOffice 文件转PDF,实现文件预览

    第一步 服务器端要安装Apache的 openoffice,下载地址 :http://www.openoffice.org/download 第二步 OpenOffice 文件转换服务,调用接口,传入 ...

最新文章

  1. 假如计算机是中国人发明的,那代码应该这么写
  2. 刚出道的黑客搞瘫美国!他们一边搞钱一边捐款给慈善组织,还说俄国人不打俄国人...
  3. leetcode算法题--数组中数字出现的次数
  4. python中module_Python中的模块(Module)
  5. AI 时代,如何布局算力基础设施
  6. MyBatis 实际使用案例-mappers
  7. Zookeeper已经设置了myid文件但是依然报错myid file is missing
  8. SHELL编程实现批量Netatalk字符集文件名替换
  9. ACL'21 | 弱标签的垃圾数据,也能变废为宝!
  10. 解析mysqlbinlog日志_关于mysql-binlog日志解析框架
  11. 光盘放进电脑读不出来_U盘插入电脑读不出来?学会这3招,轻松解决USB无法读取的问题...
  12. 人脸识别库Dlib介绍
  13. 大数据和数据挖掘之间,主要有什么关系?
  14. C# 斑马打印机USB接口实现打印各种类型的码
  15. link_path_walk()分析
  16. 零中频接收机频率转换图_德国Ramp;S罗德与施瓦茨EMI测试接收机ESR系列
  17. 2022 职业院校移动开发总结(uni-app)
  18. HTML制作手风琴效果,Dreamweaver制作手风琴图片展示效果(附代码)
  19. 阿里云通信发布全新号码认证服务, 重新定义手机号码认证的方式
  20. ACM javaIO 快速 读写

热门文章

  1. Linux应用开发【第十二章】I2C编程应用开发
  2. php判断三个数为对子,豹子| 简单粗暴方法
  3. 简约时间地图图表合集PPT模板
  4. 前端学习日志-7-浏览器
  5. 华为手机软件测试员工资,【东莞华为工资】软件测试工程师待遇-看准网
  6. 设计模式学习(九):Builder
  7. 陇原战“疫“2021网络安全大赛Writeup
  8. c# datatable分类汇总
  9. [渝粤教育] 南京工业大学 有机化学实验 参考 资料
  10. 【计算机毕业设计】图书馆借阅管理系统