修改pc3文件还没做好..大家先look look怎么读....
首先弄一个控制台程序,
然后去下载 Ionic.Zip 这个东西...载到控制台...都很简单...
然后就是复制下面代码,看控制台显示和代码注释....
namespace ConsoleApp1 { class Program { static void Main() { string pc3Path = @"D:\桌面\DWG To PDF.pc3"; //cad2008的东西 Pc3PmpDecompress(pc3Path, pc3Path + ".txt"); //解压 } ////// 解压pc3和pmp打印机文件 /// /// 打印机路径 /// 输出txt路径 public static void Pc3PmpDecompress(string pc3OrPmpPath, string txtPathOut) { using (FileStream fs = File.Open(pc3OrPmpPath, FileMode.Open, FileAccess.ReadWrite)) { //版本信息 int ver1 = 48; { byte[] buffer = new byte[ver1]; fs.Read(buffer, 0, ver1); string str = Encoding.Default.GetString(buffer); Console.Write(Environment.NewLine + "版本信息:" + Environment.NewLine + str); } //12字节=3个int,第一个记录 "校验和" "adler"方式 int ver2 = 4; { //"校验和"读取 byte[] checkSum = new byte[ver2]; fs.Read(checkSum, 0, ver2); //转为16进制再读 var ss = new List<string>(); for (int index = 0; index < checkSum.Length; index++) { var shiliu = ((int)checkSum[index]).ToString("X2"); ss.Add(shiliu); } Console.Write(Environment.NewLine + "压缩校验和:" + Environment.NewLine + string.Join(" ", ss.ToArray())); } int ver3 = 8; { //第二个是原始数据的字节数 //第三个是压缩后的字节数 BinaryReader br = new BinaryReader(fs); var ss = new int[2]; for (int i = 0; i < 2; i++) { ss[i] = br.ReadInt32(); } Console.Write(Environment.NewLine + "压缩前的字节数:" + Environment.NewLine + ss[0].ToString()); Console.Write(Environment.NewLine + "压缩后的字节数:" + Environment.NewLine + ss[1].ToString()); } int ver4 = ver1 + ver2 + ver3; //前面头信息不能解压 fs.Seek(ver4, SeekOrigin.Begin);//从新设置开始的位置,但是不设置也会自动读到这里 using (ZlibStream zs = new ZlibStream(fs, CompressionMode.Decompress))//zip流,解压 { using (StreamReader sr = new StreamReader(zs, Encoding.Default))//流读取器 乱码原因 { string str = sr.ReadToEnd(); //读到结束 using (FileStream fs_out = File.Open(txtPathOut, FileMode.Create, FileAccess.ReadWrite))//新建文本 { byte[] bys = Encoding.Default.GetBytes(str); var lenhth = Encoding.Default.GetBytes(str).Length; fs_out.Write(bys, 0, lenhth);//写入读取的信息 } Console.Write(Environment.NewLine + "压缩包内容:" + Environment.NewLine + str); } zs.Dispose(); } fs.Dispose(); } Console.ReadKey(); } } }
特别感谢的是找到方法的疯狂青蛙: http://www.cnblogs.com/cadlife
和不厌其烦教我怎么读16进制的e大: https://www.cnblogs.com/edata
2008的pc3翻译....
meta{ 关联到PMP的位置 user_defined_model_pathname=" 用户定义的模型库名称user_defined_model_basename=" 驱动程序路径名 driver_pathname="C:\Program Files (x86)\AutoCAD 2008\drv\gdiplot9.hdi 驱动程序版本 driver_version="1.1-9.1.51.0 驱动标签线 driver_tag_line ="Windows 系统驱动程序 - 由 Autodesk 提供 工具包版本 toolkit_version=1 驱动程序类型 driver_type=1 规范家庭名称 canonical_family_name="System 先显示自定义 show_custom_first=TRUE 类型是文本 truetype_as_text=TRUE 规范模型名称 canonical_model_name="System 本地家庭名称 localized_family_name="系统 本地模型名称 localized_model_name="系统 只有文件 file_only=FALSE 模型能力 model_abilities="555555555055 UDM描述 udm_description=" 视窗系统设备名称 win_device_name="pdfFactory Pro 视窗系统设备名称 win_driver_name= "pdfFactory 6 短的网络名称 short_net_name="pdfFactory Pro 友好的网络名称 friendly_net_name="FPP6: dm驱动程序版本 dm_driver_version=1555 默认系统配置(猜测是从系统继承打印机) default_system_cfg=FALSE 平台 platform ="2,6,1 地区 locale="4B00409 } mod{ media{ 能力 abilities="100004455400144444000005005005000400000000000005000 状态 caps_state caps="00000 拥有人 ui_owner="22212222121111212112221 纸张最大的规格的x size_max_x=914.40002441 ( 0#.3C$ &E@) 纸张最大的规格的y size_max_y=1219.2000732 ( X,P,DT 5'@) description{ 0{ caps_type=1 name="ISO_A4_Portrait_210.00W_x_297.00H_-_(5,_17)_x_(205,_280)_=52600_MM media_bounds_urx=210.0 media_bounds_ury=297.0 printable_bounds_llx=0.0 printable_bounds_lly=0.0 printable_bounds_urx=210.0 printable_bounds_ury=297.0 printable_area=62370.0 dimensional=TRUE } //其他的都是每个纸张的信息 1{ caps_type=1 name="ISO_A4_Landscape_297.00W_x_210.00H_-_(5,_17)_x_(292,_193)_=50512_MM media_bounds_urx=297.0 media_bounds_ury=210.0 printable_bounds_llx=0.0 printable_bounds_lly=0.0 printable_bounds_urx=297.0 printable_bounds_ury=210.0 printable_area=62370.0 dimensional=TRUE } 2{ caps_type=1 name="ISO_A3_Portrait_297.00W_x_420.00H_-_(5,_17)_x_(292,_403)_=110782_MM media_bounds_urx=297.0 media_bounds_ury=420.0 printable_bounds_llx=0.0 printable_bounds_lly=0.0 printable_bounds_urx=297.0 printable_bounds_ury=420.0 printable_area=124740.0 dimensional=TRUE } 3{ caps_type=1 name="ISO_A3_Landscape_420.00W_x_297.00H_-_(5,_17)_x_(415,_280)_=107830_MM media_bounds_urx=420.0 media_bounds_ury=297.0 printable_bounds_llx=0.0 printable_bounds_lly=0.0 printable_bounds_urx=420.0 printable_bounds_ury=297.0 printable_area=124740.0 dimensional=TRUE } 4{ caps_type=1 name="ISO_A2_Portrait_420.00W_x_594.00H_-_(5,_17)_x_(415,_577)_=229600_MM media_bounds_urx=420.0 media_bounds_ury=594.0 printable_bounds_llx=0.0 printable_bounds_lly=0.0 printable_bounds_urx=420.0 printable_bounds_ury=594.0 printable_area=249480.00000 ( $!T#D$:G ) dimensional=TRUE } 5{ caps_type=1 name="ISO_A2_Landscape_594.00W_x_420.00H_-_(5,_17)_x_(589,_403)_=225424_MM media_bounds_urx=594.0 media_bounds_ury=420.0 printable_bounds_llx=0.0 printable_bounds_lly=0.0 printable_bounds_urx=594.0 printable_bounds_ury=420.0 printable_area=249480.00000 ( $!T#D$:G ) dimensional=TRUE } 6{ caps_type=1 name="ISO_A1_Portrait_594.00W_x_841.00H_-_(5,_17)_x_(589,_824)_=471288_MM media_bounds_urx=594.0 media_bounds_ury=841.0 printable_bounds_llx=0.0 printable_bounds_lly=0.0 printable_bounds_urx=594.0 printable_bounds_ury=841.0 printable_area=499554.00000 ( (A]'D&X?P) dimensional=TRUE } 7{ caps_type=1 name="ISO_A1_Landscape_841.00W_x_594.00H_-_(5,_17)_x_(836,_577)_=465360_MM media_bounds_urx=841.0 media_bounds_ury=594.0 printable_bounds_llx=0.0 printable_bounds_lly=0.0 printable_bounds_urx=841.0 printable_bounds_ury=594.0 printable_area=499554.00000 ( (A]'D&X?P) dimensional=TRUE } 8{ caps_type=1 name="ISO_expand_A1_Portrait_594.00W_x_841.00H_-_(5,_10)_x_(589,_831)_=479464_MM media_bounds_urx=594.0 media_bounds_ury=841.0 printable_bounds_llx=0.0 printable_bounds_lly=0.0 printable_bounds_urx=594.0 printable_bounds_ury=841.0 printable_area=499554.00000 ( (A]'D&X?P) dimensional=TRUE } 9{ caps_type=1 name="ISO_expand_A1_Landscape_841.00W_x_594.00H_-_(5,_10)_x_(836,_584)_=476994_MM media_bounds_urx=841.0 media_bounds_ury=594.0 printable_bounds_llx=0.0 printable_bounds_lly=0.0 printable_bounds_urx=841.0 printable_bounds_ury=594.0 printable_area=499554.00000 ( (A]'D&X?P) dimensional=TRUE } 10{ caps_type=1 name="ISO_A0_Portrait_841.00W_x_1189.00H_-_(5,_17)_x_(836,_1172)_=959805_MM media_bounds_urx=841.0 media_bounds_ury=1189.0 printable_bounds_llx=0.0 printable_bounds_lly=0.0 printable_bounds_urx=841.0 printable_bounds_ury=1189.0 printable_area=999949.00000 ( !J$+D$QEP) dimensional=TRUE } 11{ caps_type=1 name="ISO_expand_A0_Portrait_841.00W_x_1189.00H_-_(5,_10)_x_(836,_1179)_=971439_MM media_bounds_urx=841.0 media_bounds_ury=1189.0 printable_bounds_llx=0.0 printable_bounds_lly=0.0 printable_bounds_urx=841.0 printable_bounds_ury=1189.0 printable_area=999949.00000 ( !J$+D$QEP) dimensional=TRUE } } } } del{ media{ abilities="100004455400144444000005005005000400000000000005000 caps_state ="00000 ui_owner="22212222121111212112221 size_max_x =914.40002441 ( 0#.3C$ &E@) size_max_y=1219.2000732 ( X,P,DT 5'@) } } udm{ calibration{ _x=1.0 _y=1.0 } media{ abilities="100004455400144444000005005005000400000000000005000 caps_state="00000 ui_owner="22212222121111212112221 size_max_x=914.40002441 ( 0#.3C$ &E@) size_max_y=1219.2000732 ( X,P,DT 5'@) } } hidden{ media{ abilities="04455400144444000005005005000400000000000005000 caps_state="00000 ui_owner="22212222121111212112221 size_max_x=914.40002441 ( 0#.3C$ &E@) size_max_y=1219.2000732 ( X,P,DT 5'@) } }
2019的pc3翻译...
meta{ 关联到PMP的位置 user_defined_model_pathname="G:\K01.惊惊连盒\04.工作小工具\2019dwgToPdf打印机\DWG To PDF.pmp 用户定义的模型库名称user_defined_model_basename=" 驱动程序路径名 driver_pathname="C:\Program Files\Autodesk\AutoCAD 2019\drv\pdfplot15.hdi 驱动程序版本 driver_version="1.1-15.0.61.0 [v018-1] [v018-1] 驱动标签线 driver_tag_line="PDF ePlot - by Autodesk 工具包版本 toolkit_version=1 驱动类型 driver_type=3 规范家庭名称 canonical_family_name="Autodesk ePlot 先显示自定义 show_custom_first=FALSE 以文本形式输入 truetype_as_text=TRUE 规范模型名称 canonical_model_name="pdf 本地家庭名称 localized_family_name="Autodesk ePlot (PDF) 本地模型名称 localized_model_name="DWG To PDF 是否打印到文件(false就是后台打印?) file_only=TRUE 模型能力 model_abilities="000550055000 udm描述 udm_description=" 短的网络名称 short_net_name=" 友好的网络名称 friendly_net_name=" dm驱动程序版本 dm_driver_version=0 默认系统配置(猜测是从系统继承打印机) default_system_cfg=FALSE 平台 platform="2,10,0 地区 locale="4B0040 配置说明 config_description=" 配置自动线轴 config_autospool=FALSE } media{ 选择方法 selection_method=2 类型 type=" dm方向 dm_orientation=1 实际打印x边界偏移 actual_printable_bounds_llx=0.0 实际打印y边界偏移 actual_printable_bounds_lly=0.0 实际打印x边界范围 actual_printable_bounds_urx=210.0 实际打印y边界范围 actual_printable_bounds_ury=297.0 份数副本 number_of_copies=1 size{ name="ISO_A4_(210.00_x_297.00_MM) group=4 情景模式 landscape_mode=FALSE 长打印_减少 longplot_reduction=1.0 媒介描述 media_description{ 实际打印x边界偏移 printable_bounds_llx=5.0 实际打印y边界偏移 printable_bounds_lly=17.0 实际打印x边界范围 printable_bounds_urx=205.0 实际打印y边界范围 printable_bounds_ury=280.0 实际打印面积 printable_area=52600.0 尺寸的 dimensional=TRUE 媒介界限 media_bounds{ 纸张范围 urx=210.0 纸张范围 ury=297.0 } } } } io{ type=2 pathname=" allsysvalid=FALSE plot_to_file=TRUE } res_color_mem{ name="RGB num_colors=16777216 color_depth=24 num_undithered_colors=16777216 color_system=1 dm_color=1 lines_overwrite=TRUE resolution{ name="Default phys_resolution_x=600.0 phys_resolution_y=600.0 addr_resolution_x=1.0 addr_resolution_y=1.0 effective_resolution_x=600.0 effective_resolution_y=600.0 } } custom{ 0{ name="Create_Bookmarks value=TRUE } 1{ name="Thumbnail_Title value=TRUE } 2{ name="Sheet_Links value=TRUE } 3{ name="Rasterize_Geometry value=FALSE } 4{ name="View_New_File value=TRUE } 5{ name="Custom_Raster_Resolution value=FALSE } 6{ name="Custom_DWF_Resolution value=FALSE } 7{ name="Custom_Monochrome_Resolution value=FALSE } 8{ name="Custom_Gradient_Resolution value=FALSE } 9{ name="Gradient_Limit value=600 } 10{ name="Monochrome_Raster_Limit value=400 } 11{ name="Raster_Limit value=400 } 12{ name="All_As_Geometry value=FALSE } 13{ name="Capture value=2 } 14{ name="Font_Capture value=TRUE } 15{ name="Hardcopy_Resolution value=600 } 16{ name="Include_Layer value=TRUE } 17{ name="Resolution value=14 } }