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

首先是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=
驱动程序类型 driver_type=
规范家庭名称 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="
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=
默认系统配置(猜测是从系统继承打印机) default_system_cfg=FALSE
平台 platform ="2,6,1
地区 locale="4B00409
}
mod{
media{
能力 abilities="
状态 caps_state caps="
拥有人 ui_owner="
纸张最大的规格的x size_max_x=914.40002441 ( #.3C$ &E@)
纸张最大的规格的y size_max_y=1219.2000732 ( X,P,DT '@)
description{
{
caps_type=
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
}
//其他的都是每个纸张的信息 {
caps_type=
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
}
{
caps_type=
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
}
{
caps_type=
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
}
{
caps_type=
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
}
{
caps_type=
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
}
{
caps_type=
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
}
{
caps_type=
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
}
{
caps_type=
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
}
{
caps_type=
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
}
{
caps_type=
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
}
{
caps_type=
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="
caps_state ="
ui_owner="
size_max_x =914.40002441 ( #.3C$ &E@)
size_max_y=1219.2000732 ( X,P,DT '@)
}
}
udm{
calibration{
_x=1.0
_y=1.0
}
media{
abilities="
caps_state="
ui_owner="
size_max_x=914.40002441 ( #.3C$ &E@)
size_max_y=1219.2000732 ( X,P,DT '@)
}
}
hidden{
media{
abilities="
caps_state="
ui_owner="
size_max_x=914.40002441 ( #.3C$ &E@)
size_max_y=1219.2000732 ( X,P,DT '@)
}
}

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=
驱动类型 driver_type=
规范家庭名称 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="
udm描述 udm_description="
短的网络名称 short_net_name="
友好的网络名称 friendly_net_name="
dm驱动程序版本 dm_driver_version=
默认系统配置(猜测是从系统继承打印机) default_system_cfg=FALSE
平台 platform="2,10,0
地区 locale="4B0040
配置说明 config_description="
配置自动线轴 config_autospool=FALSE
} media{
选择方法 selection_method=
类型 type="
dm方向 dm_orientation=
实际打印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= size{
name="ISO_A4_(210.00_x_297.00_MM)
group=
情景模式 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=
pathname="
allsysvalid=FALSE
plot_to_file=TRUE
}
res_color_mem{
name="RGB
num_colors=
color_depth=
num_undithered_colors=
color_system=
dm_color=
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{
{
name="Create_Bookmarks
value=TRUE
}
{
name="Thumbnail_Title
value=TRUE
}
{
name="Sheet_Links
value=TRUE
}
{
name="Rasterize_Geometry
value=FALSE
}
{
name="View_New_File
value=TRUE
}
{
name="Custom_Raster_Resolution
value=FALSE
}
{
name="Custom_DWF_Resolution
value=FALSE
}
{
name="Custom_Monochrome_Resolution
value=FALSE
}
{
name="Custom_Gradient_Resolution
value=FALSE
}
{
name="Gradient_Limit
value=
}
{
name="Monochrome_Raster_Limit
value=
}
{
name="Raster_Limit
value=
}
{
name="All_As_Geometry
value=FALSE
}
{
name="Capture
value=
}
{
name="Font_Capture
value=TRUE
}
{
name="Hardcopy_Resolution
value=
}
{
name="Include_Layer
value=TRUE
}
{
name="Resolution
value=
}
}

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{ 中英对换表
{
caps_type=
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=
landscape_mode=TRUE
}
}
description{ 纸张信息表,注意所有的小数点存在
{
caps_type=
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_(.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
}
}
}

添加纸张

        /// <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 * )) * (PaperX - (Offset_Down * )); //如果没有小数点保留,可能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 >= )
{
return str.Substring(, );
}
return str;
}

删除纸张的方法

    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;
}
}
}
}

cad.net 读取pc3,pmp 读取pc3打印机文件的更多相关文章

  1. 做参数可以读取参数 保存参数 用xml文件的方式

    做参数可以读取参数 保存参数 用xml文件的方式 好处:供不同用户保存适合自己使用的参数

  2. java通过文件路径读取该路径下的所有文件并将其放入list中

    java通过文件路径读取该路径下的所有文件并将其放入list中   java中可以通过递归的方式获取指定路径下的所有文件并将其放入List集合中.假设指定路径为path,目标集合为fileList,遍 ...

  3. SQLBulkCopy使用实例--读取Excel写入数据库/将 Excel 文件转成 DataTable

    MS SQL Server 提供一个称为 bcp 的流行的命令提示符实用工具,用于将数据从一个表移动到另一个表(表可以在不同服务器上). SqlBulkCopy 类允许编写提供类似功能的托管代码解决方 ...

  4. NPOI 读取excel到DataTable 读取隐藏列 读取公式列

    处理思路: 1.打开excel 用NPOI进行读取: 2.读取第一个Sheet: 读取过程中: a.先设置相应列 不隐藏 b.读取Cell时 先判断是否的包含公式 相应代码如下: public sta ...

  5. C++读取特定路径下文件目录及文件名称

    这几天在弄一个项目,需要读取给定路径下的所有文件夹名称或所有带后缀的文件名. 查了下C++的资料,发现有很多方法,这里总结其中的一种,其他用法类似. 主要用到了以下几个头文件(类):io.h, fst ...

  6. SQL SERVER中的逻辑读取,物理读取,以及预读的理解

    在SQLSERVER查询分析器中,当我们用Set Statistics on 语句来统计SQL语句或者存储过程I/O的时候, SQLSERVER会显示几个概念去词语:逻辑读取,物理读取,预读. 如下: ...

  7. [转]读取assets目录下的数据库文件

    在做Android应用的时候,不可避免要用到数据库.但是当我们把应用的apk部署到真机上的时候,已经创建好的数据库及其里边的数据是不能随着apk一起安装到真机上的. (PS:这篇博客解决了我前面博客中 ...

  8. C#读取固定文本格式的txt文件

    C#读取固定文本格式的txt文件 一个简单的C#读取txt文档的程序,文档中用固定的格式存放着实例数据. //判断关键字在文档中是否存在 ] == "设备ID:107157061" ...

  9. 【C++】ubuntu中读取指定目录中的所有文件

    摘要:ubuntu系统下,C++程序读取指定文件夹中多个文件,保存文件名列表.文件名没有规律且不考虑读取子文件夹中的文件. 系统配置:ubuntu16.04, cmake编译 首先安利一个函数,输入s ...

随机推荐

  1. webapi 返回类型

    参考 大神;https://www.cnblogs.com/landeanfen/p/5501487.html

  2. 看一下“Dubbo 2.7”的三大新特性

    Dubbo 2.7.x 作为 Apache 的孵化版本,除了代码优化之外,还新增了许多重磅的新特性,本文将会介绍其中最典型的三个新特性: 一.异步化改造 二.三大中心改造 三.服务治理增强 一.异步支 ...

  3. 字符串替换replace方法

    字符串替换replace方法: http://www.w3school.com.cn/jsref/jsref_replace.asp http://www.cnblogs.com/skywang/ar ...

  4. 在React中写一个Animation组件,为组件进入和离开加上动画/过度

    问题 在单页面应用中,我们经常需要给路由的切换或者元素的挂载和卸载加上过渡效果,为这么一个小功能引入第三方框架,实在有点小纠结.不如自己封装. 思路 原理 以进入时opacity: 0 --> ...

  5. 响应式开发 纯CSS实现隐藏菜单栏

    // 将要隐藏的菜单设置 display: block; // 然后在菜单上面设置一个点击选项,如“菜单”<label for="toggle-checkbox" id=&q ...

  6. <h1>~<h6> 标题标签

    <h1>~</h6>标题系列标签 解释:h1到h6 中h1标签最大,h6标签最小,逐一递增. 例如: <h1>标签</h1> <h2>标签& ...

  7. Nginx七层负载均衡的几种调度算法

      Nginx是一款轻量级的高性能web服务器,同时也是一款非常优秀的负载均衡器和反向代理服务器.由于支持强大的正则匹配规则.动静分离.URLrewrite功能及安装配置简单且对网络稳定性依赖非常小等 ...

  8. Alipay 支付类

    本版本参考网友 <?php namespace App\Tools; class Alipay { //应用ID,您的APPID. private $appID = '111'; //商户私钥 ...

  9. 【JSTL】JSTL标签库的常用标签

    一.JSTL技术 1.JSTL概述 JSTL(JSP Standard Tag Library),JSP标准标签库,可以嵌入在jsp页面中使用标签的形式完成业务逻辑等功能.jstl出现的目的同el一样 ...

  10. linux修改服务器时区并使用所选时区的时间

    linux 修改服务器时区并使用所选时区的时间(以 ubuntu18.04 修改为美国芝加哥时区为例) 一.修改时区    /usr/bin/tzselect        1.选择地区, 美洲地区: ...