html预览dwg文件,大佬救命!有关dwg文件预览的问题
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
请问有人做过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文件预览的问题相关推荐
- CAD(dxf、dwg格式)文件的读取和显示,真正实现通过代码预览CAD文件,包含解析dwg、dxf文件,可以提取标注信息,可以转换为pdf、png、tiff、gif等6种格式的文件,可以永久免费实用
真正实现通过代码预览CAD文件,包含解析dwg.dxf文件,可以提取标注信息,可以转换为pdf.png.tiff.gif等6种格式的文件,可以永久免费实用. 网上看了很多资料,不是缺这个就是少那个,反 ...
- Springboot + layui + FTP文件上传删除 + HTTP文件下载预览 + pdf.js文件预览(项目实战总结)
文件管理 0.需求及前言 1.前端,上传按钮嵌入数据表格中 2.利用IIS部署FTP文件服务器 3.后台FTP连接和文件操作 4.FTP遇到的问题和解决方案 5.预览PDF文件V1.0:FTP+临时文 ...
- React文件预览,React实现在线预览docx,xslx,pdf格式文件
一.前言 由于项目需要实现文件的预览功能,通过查询百度找到了一个组件,就是react-file-viewer,其官方API中描述可支持文件格式有以下格式: 图片:png,jpeg,gif,bmp,包括 ...
- SpringBoot+MongoDB GridFS文件上传、下载、预览实战
SpringBoot + MongoDB GridFS 随着web 3.0的兴起,数据的形式不局限于文字,还有语音.视频.图片等.高效存储与检索二进制数据也成为web 3.0必须要考虑的问题.然而这种 ...
- 微信小程序预览文件,word、xlsx文件打不开?
预览文件的时候发现表格,word打不开,查了官方文档没有解决办法,后来解决了赶紧整理一下. 按照微信开发文档里的写,pdf可以预览成功,但word和xlsx不能预览 官方文档并没有收录这个bug,生成 ...
- Win10文件夹中图片不显示预览图解决方法
Win10文件夹中图片不显示预览图解决方法分享.如果我们在文件夹里面有很多的图片文件,可以通过预览图来快速的找到自己需要的图片.但是有用户却发现电脑文件夹里面图片不会显示缩略图,今天我们一起来看看如何 ...
- html选择文件夹控件,File文件控件,选中文件(图片,flash,视频)即立即预览显示
我们平常用file文件控件上传文件,要预览有时会刷新页面,结果file控件被清空,好多人问能能让他不清空或重新赋值,因为处于安全性的考虑,这是不可能的.那怎么进行无刷新预览呢?这里我把我所使用的方法写 ...
- vue中将base64的pdf文件流转换成pdf并预览(二)——base64转PDF工具的使用
vue中将base64的pdf文件流转换成pdf并预览(二)--base64转PDF工具的使用 Base64 to PDF官网 1.官网 官网--https://www.ipvoid.com/base ...
- OpenOffice 文件转PDF,实现文件预览
第一步 服务器端要安装Apache的 openoffice,下载地址 :http://www.openoffice.org/download 第二步 OpenOffice 文件转换服务,调用接口,传入 ...
最新文章
- 假如计算机是中国人发明的,那代码应该这么写
- 刚出道的黑客搞瘫美国!他们一边搞钱一边捐款给慈善组织,还说俄国人不打俄国人...
- leetcode算法题--数组中数字出现的次数
- python中module_Python中的模块(Module)
- AI 时代,如何布局算力基础设施
- MyBatis 实际使用案例-mappers
- Zookeeper已经设置了myid文件但是依然报错myid file is missing
- SHELL编程实现批量Netatalk字符集文件名替换
- ACL'21 | 弱标签的垃圾数据,也能变废为宝!
- 解析mysqlbinlog日志_关于mysql-binlog日志解析框架
- 光盘放进电脑读不出来_U盘插入电脑读不出来?学会这3招,轻松解决USB无法读取的问题...
- 人脸识别库Dlib介绍
- 大数据和数据挖掘之间,主要有什么关系?
- C# 斑马打印机USB接口实现打印各种类型的码
- link_path_walk()分析
- 零中频接收机频率转换图_德国Ramp;S罗德与施瓦茨EMI测试接收机ESR系列
- 2022 职业院校移动开发总结(uni-app)
- HTML制作手风琴效果,Dreamweaver制作手风琴图片展示效果(附代码)
- 阿里云通信发布全新号码认证服务, 重新定义手机号码认证的方式
- ACM javaIO 快速 读写