cad.net 读写pc3,pmp打印机文件 20191229更新任意纸张大小


更新的任意纸张批量打印预览

 

 

 

首先是e大给了我这个英文工程:  https://github.com/phusband/PiaNO

然后我做了大量中文函数翻译的工程和几个函数的增设调改....

因为这个歪果仁更新已经过了很久了,而且中文也不宜和纯英文工程合并..

所以我另建了一个工程,上传了这个项目到github,

请去此下载:   https://github.com/jingjingbox/-_PianoCN

利用pianoCN现在可以读改 PC3,STB,CTB三种格式的文件.

 

注意引用了相关的NuGet

  

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

 

20191229更新:

我做的批量打印都是基于Acad2019的,因为2019的<dwg to pdf>打印机打印出来的东西比PdfFactory和低版本的要清晰和文件小.

之前挖的坑是没有修改pmp的方法,现在给工程出来了,而且这次更新主要的目的是提供任意纸张大小的方法:修改pmp文件..

但是还是有很多东西需要说明一下.

 

批量打印不可以用模态对话框,打印预览的时候会卡死.所以要用非模态的.

(这个是我实现成功的方式,但是不一定要非模态,或许有其他方法处理就可以了....)

 

打开pmp文件之后的修改注意事项

[pmp]注意事项:
        不能改:
        系统纸张数量
        系统纸张的名称
        只能改:
        系统纸张边界范围,在 mod:description下
        用户纸张的大小  ,在 udm:添加size,添加description

[pmp]解析: 
    mod:media:size:        本地中文名称和英文名称对照表
    mod:media:description: 是纸张大小和纸张边界的描述--这里就是修改纸张大小
    del:   估计是删除纸张的..
    udm:   用户定义的纸张
    hidden:隐藏纸张,主要作用是手选打印的时候可以不显示那么多纸张. 

[pmp]用户表解析: 
    udm{                     这里就是用户定义的
            size{            中英对换表
            0{
            caps_type=2
            name="UserDefinedMetric (2222.00 x 2222.00毫米)
            localized_name="用户 1 (2222.00 x 2222.00 毫米)  这里文字可以随便写的
            media_description_name="UserDefinedMetric 横向 2222.00W x 2222.00H - (5, 4) x (2215, 2218) =4896479 毫米
            media_group=15
            landscape_mode=TRUE
            }
            }
            description{     纸张信息表,注意所有的小数点存在
            0{
            caps_type=2
            name="UserDefinedMetric 横向 2222.00W x 2222.00H - (5, 4) x (2215, 2218) =4896479 毫米
            media_bounds_urx=2222.0
            media_bounds_ury=2222.0
            printable_bounds_llx=5.0999999046   //注意所有的小数点必须存在
            printable_bounds_lly=4.0999999046   //注意所有的小数点必须存在
            printable_bounds_urx=2215.8999023   //注意所有的小数点必须存在
            printable_bounds_ury=2218.8999023   //注意所有的小数点必须存在
            printable_area=4896479.8408  
            dimensional=TRUE
            }
    } 

[我的pmp设置]
    我在2019 dwgToPdf打印机先
    恢复了-默认值,再-过滤图纸尺寸,
    然后剩下A0 A1 A2 A3 A4 去掉边界值,这一步就可以手动打印无边了.
    ISO A0 (841.00 x 1189.00 毫米)       建议用
    ISO_expand_A0_(841.00_x_1189.00_MM) 这种cad2008用这种纸张会有边界靠左的问题,2019就没有问题. 

修改纸张的边界偏移的时候,
左推到右:图形会以右边中点进行等比缩放,
下推到上:图形会以上边中点进行等比缩放,
然后此时要重设图形原点.否则图纸是偏的. 

 

可以用pc3生成pmp文件,这样pmp是临时的,你在上面加(用户)图纸和减(用户)图纸,就可以打不定边长的图纸辣~~~~~~~~~~~~~~

修改pc3和pmp上面的路径.这里就是提供一个方法给大家修改节点属性的方法

#if AC2019
using PiaNO;
#endif 
using System.IO;

namespace JoinBox.批量打印
{
    public static class Pc3PmpChange
    { 
        public const string DTP = "DWG TO PDF.PC3";

        /// <summary>
        /// 附着pmp路径到pc3内
        /// </summary>
        /// <param name="plotDevice">当前调用的打印机</param>
        /// <param name="dwgtopdfpmp">pmp路径</param>
        public static void ChangUserDefinedModel(string plotDevice, string dwgtopdfpmp)
        {
#if AC2019
            //获取这个打印机的完整路径
            string printerConfigDir = CadSystem.Getvar("PrinterConfigDir") + "\\" + DTP;
            var ns = new string[] { printerConfigDir, dwgtopdfpmp };

            foreach (var path in ns)
            {
                if (!File.Exists(path))
                {
                    continue;
                } 
                var PdfConfig = new PlotterConfiguration(path);
                //解压了打印机信息之后,遍历打印机节点
                foreach (var nodeA in PdfConfig)
                {
                    if (nodeA.NodeName == "meta")
                    {
                        nodeA.ValueChang("user_defined_model_pathname" + "_str", dwgtopdfpmp);
                        break;
                    }
                }
                PdfConfig.Saves();
            }
#endif 
        }
    }
}
View Code

 

添加纸张

        /// <summary>
        /// 根据范围带下生成纸张,返回纸张名称
        /// </summary>
        /// <param name="ext">打印范围</param>
        /// <param name="dwgtopdfpmp">打印机pmp纸张文件路径</param> 
        /// <returns></returns>
        public PlotterConfiguration AddPrinter(string dwgtopdfpmp)
        {
            Name = $"JBS_PDF_({PaperY.ToString("#0.00")}_x_{PaperX.ToString("#0.00")}_MM)";

            // JoinBoxStandard 嘻嘻
            //                                                              (5,_17)这个是默认偏移量
            // media_description_name="ISO_A0_Portrait_841.00W_x_1189.00H_-_(5,_17)_x_(836,_1172)_=959805_MM 
            //实际打印面积(虽然因为偏移值是0,等于长乘宽就可以,但是为了日后我忘记这里怎么算的,还是求一下吧)
            double area = (PaperY - (Offset_Left * 2)) * (PaperX - (Offset_Down * 2));

            //如果没有小数点保留,可能cad闪退!
            StringBuilder description_name = new StringBuilder();
            description_name.Append($"JBS_PDF_Portrait_{PaperY.ToString("#0.00")}W_x_{PaperX.ToString("#0.00")}H");
            description_name.Append("_-_");
            description_name.Append($"({Offset_Left.ToString("#0.00")},_{Offset_Down.ToString("#0.00")})");//偏移量
            description_name.Append("_x_");
            description_name.Append($"({(PaperY - Offset_Left).ToString("#0.00")},_{(PaperX - Offset_Down).ToString("#0.00")})_");
            description_name.Append($"={area.ToString("#0.00")}_MM");
            Media_description_name = description_name.ToString();

            PdfConfig = new PlotterConfiguration(dwgtopdfpmp)
            {
                TruetypeAsText = true
            };

            //解压了打印机信息之后,遍历打印机节点  
            foreach (var nodeA in PdfConfig)
            {
                if (nodeA.NodeName == "udm")
                {
                    foreach (var nodeB in nodeA)
                    {
                        if (nodeB.NodeName == "media")
                        {
                            PiaNode piaNode_size = null;
                            PiaNode piaNode_description = null;

                            //遍历是否有节点
                            foreach (PiaNode nodeC in nodeB)
                            {
                                string nden = nodeC.NodeName;
                                switch (nden)
                                {
                                    case str_size:
                                        piaNode_size = nodeC;
                                        break;
                                    case str_description:
                                        piaNode_description = nodeC;
                                        break;
                                }
                            }
                            //找不到就添加节点
                            if (piaNode_size == null)
                            {
                                piaNode_size = nodeB.Add(str_size);
                            }
                            if (piaNode_description == null)
                            {
                                piaNode_description = nodeB.Add(str_description);
                            }
                            //在节点中添加/修改信息
                            AddPaperEnAndCn(piaNode_size);
                            AddPaperDescription(piaNode_description);
                            break;
                        }
                    }
                    break;
                }
            }
            PdfConfig.Saves();
            return PdfConfig;
        }

        /// <summary>
        /// 添加pmp纸张-中英对换表
        /// </summary>
        /// <param name="nodeC"></param>
        private void AddPaperEnAndCn(PiaNode nodeC)
        {
            //图纸数量+1就是新建一张图   
            var spl = '\n';
            int count = nodeC.Count();
            string name = count.ToString();
            string[] paper = new string[] {
                                name+ "{",
                                $"caps_type=2",             //1是系统的,2是用户的.这里严格,可不可以在打印纸看见就是这里了
                                $"name=\"{Name}",
                                $"localized_name=\"{Localized_name}",
                                $"media_description_name=\"{Media_description_name}",
                                $"media_group=15",          //4是系统的,15是用户的.
                                "landscape_mode=TRUE\n}",   //false是系统的,true是用户的
                                };
            string paperAll = string.Join(spl + " ", paper) + spl;
            PlusNode(nodeC, name, paperAll);
        }

        /// <summary>
        /// 判断是否已有同名节点,有就不加入
        /// </summary>
        /// <param name="nodeC"></param>
        /// <param name="name"></param>
        /// <param name="paperAll"></param>
        private void PlusNode(PiaNode nodeC, string name, string paperAll)
        {
            bool yiyou = true;
            foreach (var nodeD in nodeC)
            {
                foreach (var pair in nodeD.Values)
                {
                    if (pair.Key == "media_description_name_str" &&
                        pair.Value == Media_description_name)
                    {
                        yiyou = false;
                        break;
                    }
                }
                if (!yiyou)
                {
                    break;
                }
            }
            if (yiyou)
            {
                nodeC.Add(name, paperAll);
            }
        }

        /// <summary>
        /// 添加pmp纸张-信息
        /// </summary>
        /// <param name="nodeC"></param>
        private void AddPaperDescription(PiaNode nodeC)
        {
            var spl = '\n';
            int count = nodeC.Count();
            string name = count.ToString();
            string[] paper = new string[] {
                               name + "{",
                               $"caps_type=2",  //1是系统的,2是用户的.这里严格,可不可以在打印纸看见就是这里了
                               $"name=\"{Media_description_name}",
                               $"media_bounds_urx={ChangDouble(PaperX)}",
                               $"media_bounds_ury={ChangDouble(PaperY)}",
                               $"printable_bounds_llx={ChangDouble(Offset_Left)}",
                               $"printable_bounds_lly={ChangDouble(Offset_Down)}",
                               $"printable_bounds_urx={ChangDouble(PaperX)}",
                               $"printable_bounds_ury={ChangDouble(PaperY)}",
                               $"printable_area={ChangDouble(PaperX * PaperY)}",
                               "dimensional=TRUE\n}",
                                };
            string paperAll = string.Join(spl + " ", paper) + spl;
            PlusNode(nodeC, name, paperAll);
        }

        /// <summary>
        /// 保证数字在12位内
        /// </summary>
        /// <param name="dos"></param>
        /// <returns></returns>
        string ChangDouble(double dos)
        {
            var str = string.Format("{0:0.0#########}", dos);
            if (str.Length >= 12)
            {
                return str.Substring(0, 12);
            }
            return str;
        }
View Code

 

删除纸张的方法

    public static class PrinterTool
    {
        /// <summary>
        /// 移除图纸 
        /// </summary> 
        /// <param name="dwgtopdfpmp">pmp名称</param>
        /// <param name="printerNames">要移除的纸张名称</param>
        public static void RemovePrinters(this Plot plot, string dwgtopdfpmp, string[] printerNames, Database db, Transaction tr)
        {
            var pdfConfig = new PlotterConfiguration(dwgtopdfpmp)
            {
                TruetypeAsText = true
            };
            pdfConfig.RemovePrinters(printerNames);
            pdfConfig.Saves();

            //然后需要刷新一次打印机设备纸张,不然会有残留显示
            var bt = tr.GetObject(db.BlockTableId, OpenMode.ForRead, false) as BlockTable;
            foreach (ObjectId btrId in bt)
            {
                var btr = tr.GetObject(btrId, OpenMode.ForRead, false) as BlockTableRecord;
                if (btr.IsLayout)//是布局才进入
                {
                    Layout layout = tr.GetObject(btr.LayoutId, OpenMode.ForRead) as Layout;
                    var ps = new PlotSettings(layout.ModelType);
                    plot.RefreshLists(ps);
                }
            }
        }

        /// <summary>
        /// 移除图纸 
        /// </summary> 
        /// <param name="pdfConfig">pmp的解析</param>
        /// <param name="printerNames">要移除的纸张名称</param>
        static void RemovePrinters(this PlotterConfiguration pdfConfig, string[] printerNames)
        {
            //解压了打印机信息之后,遍历打印机节点  
            foreach (var nodeA in pdfConfig)
            {
                if (nodeA.NodeName == "udm")
                {
                    foreach (var nodeB in nodeA)
                    {
                        if (nodeB.NodeName == "media")
                        {
                            //遍历是否有节点
                            foreach (PiaNode nodeC in nodeB)
                            {
                                switch (nodeC.NodeName)
                                {
                                    case Printer.str_size:
                                    case Printer.str_description:
                                        {
                                            nodeC.RemoveChildNodes(printerNames);
                                        }
                                        break;
                                }
                            }
                            break;
                        }
                    }
                    break;
                }
            }
        }
    }
View Code


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM