cad.net 读取pc3,pmp 读取pc3打印机文件

修改pc3文件还没做好..大家先look look怎么读....

首先弄一个控制台程序,

然后去下载 Ionic.Zip 这个东西...载到控制台...都很简单...

 

cad.net 读取pc3,pmp 读取pc3打印机文件_第1张图片

cad.net 读取pc3,pmp 读取pc3打印机文件_第2张图片

 

 

然后就是复制下面代码,看控制台显示和代码注释....

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

 

cad.net 读取pc3,pmp 读取pc3打印机文件_第3张图片

 

 

 

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'@)
 }
}
View Code

 

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
 }
}
View Code

 

你可能感兴趣的:(cad.net 读取pc3,pmp 读取pc3打印机文件)