喷墨打印机哪个牌子好,你了解多少,他才是你办公最佳的选择

只需一步,快速开始
查看: 2817|回复: 8
激光打印机打印语言你了解多少
主题帖子积分
高级工程师, 积分 1042, 距离下一级还需 18958 积分
高级工程师, 积分 1042, 距离下一级还需 18958 积分
在线时间86 小时
绝大部分用户在购买打印机的时候关心的就是打印速度,打印分辨率,打印幅面,打印负荷等等几个参数,很少有人在意打印机的另外一个重要特性:打印语言,它是决定打印机输出复杂版面能力的重要指标。   我们先来看几款打印机关于打印语言的描述:   惠普Laserjet4100:PCL6 PCL5e postscript3仿真   惠普Laserjet1200:PCL6 PCL5e postscript2仿真   爱普生EPL-6100:PCL6 PCL5e postscript3 ECS/p2   爱普生 N4000+:PCL5e postscript3 ESC/page   面对以上一些生涩的词汇,估计很少有人明白究竟代表什么意思,能表明打印机怎样的一个输出特性,下面就说说这个大家不很熟悉但很重要的特性——打印语言。   概述   打印语言就是一个命令集,它告诉打印机如何组织被打印的文档。这些命令不是被单独地传送,而是由打印机驱动程序把它们嵌在打印数据中传给打印机,并由打印机的打印控制器再分开解释。   打印机语言很多,但总的来说可以分成两类,一类是页描述语言(PDL,Page Descriptional Language),另一类是嵌入式语言(如ESCape Code Language)。页描述语言非常复杂,命令非常多,当然它的功能也很强大,可以用来输出复杂的页面和图像,比较适合打印诸如演讲的材料、技术手册、广告册子等。PDL经常被用于一些要求输出效果比较高的软件中,包括图像设计软件,高级文字处理软件,带有高级图表功能的表格软件以及一些桌面印刷软件。PDL虽然能描述复杂的文档,但正是由于它的复杂性,使得打印机处理起来也比较慢。目前,激光打印机或喷墨打印机普遍采用的PCL和 PostScript都属于PDL。   嵌入式语言的名字来自于它使用命令的方式,它的每一个命令都以一个特征码(如ESC)为前缀,以此表明该字符串是一个命令而不是一般的打印数据。嵌入式语言没有页描述语言那么复杂,它适用于描述相对比较简单的文档,比如信件,数据库输出或一些简单的图形。ECL不支持精密印刷,只能使用不同的字体和大小输出文本,而不能处理特殊效果,一般针式打印机采用ECL。   页描述语言和嵌入式语言的代表分别是Adobe公司的PostScript语言和HP公司的PCL语言,它们是已经成为业界标准的两种打印机语言,现在它们已分别推出了PostScript Level 3和PCL6。许多厂商都使用自己的打印机控制语言,如EPSON的ESC/page,佳能的CaPSYL,施乐的XES、JDL,IBM的IPDS,DEC的ANSI/Sixel等,它们都各具特点,   下面就主要介绍一下Postscript语言和PCL打印语言   PostScript语言   PostScript是一种与设备无关的打印机语言,即在定义图像时可以根本不考虑输出设备的特性(如打印机的分辨率、纸张大小等),而且它对文本和图形实行同样的处理过程,这就给处理字体带来了极大的灵活性。由于PostScript的设备无关特性,在输出到特定输出设备,譬如对分辨率、纸张大小、进纸盒进行选择时,PostScript通过打印机描述(PostScript Printer Description )文件来实行各种打印机的不同特性。PPD文件主要提供以下与打印机有关的特定信息::默认/最高分辨率,是否支持半色调监控,用户设定的监控信息,页面大小定义,页面可打印区域,默认字体(通常为Courier),是否支持双面打印等等。每一种不同的PostScript打印机都分别对应有专门的PPD文件。在Adobe公 司的网站http//:上提供了各种主流的PPD文件。通过PS驱动程序,各种不同的应用软件将各自的数据转换成PostScript格式。由于打印机只能接受位图格式,当打印机控制器将PostScript转换成位图格式时,由打印机中专门的光栅图像处理器(Raster Image Processor)来完成这一转换过程。   由于使用PostScript打印机对打印控制器的要求都比较高,另外PostScript是Adobe公司的注册产品,打印机厂商在其产品中使用PostScript语言要支付Adobe公司一笔费用,因此使用PostScript的打印机的成本要比使用其他语言和控制方式的打印机要高。因此目前也出现了一些PostScript仿真,像HP公司的一些激光打印机中使用的PostScript仿真,可以和Adobe公司的PostScript完全兼容,也无需再支付Adobe公司相应的费用。   PCL语言   正是Adobe公司的对PostScript语言的收费方式,给HP公司的PCL( Printer Command Language,打印机控制语言)语言提供了发展空间,PCL语言是HP公司于70年代针对其打印机产品推出的一种打印机页面描述语言。HP公司的市场策略与Adobe完全不同,其他厂商可以在他们的打印机产品中自由模仿或使用PCL语言。正是PCL语言的开放性,降低了使用PCL语言的打印机产品的成本,从而使其在打印机产品中的普及程度远远高于PostScript语言。   PCL语言最初也是为点阵打印机设计的,PCL3是第一个得到广泛应用的版本,但它只支持一些简单的打印任务。PCL4虽然还只能应用在个人打印机中,但增加了对图形打印的支持,但由于解释工作比较简单,PCL4比后期的PCL5和PCL6对打印控制器的要求要低很多。   PCL5是HP公司为它的激光打印机LaserJetⅢ设计的,它提供了一些与PostScript语言相似的功能,开始支持矢量字库和矢量图形描述,实现了WYSIWYG(What You See Is What You Get, 所见即所得), PCL5中也使用了各种压缩技术来减小数据量,加快数据传输。 PCL5e 开始支持双向数据通讯,从而使打印机可以向计算机发送打印机的状态信息。PCL5c增加了对彩色打印的支持。   1996年HP公司发布了PCL6,它更加灵活,是一个目标朝向的控制语言,使处理多图形的文件的速度大大加快,实现了更好的WYSIWYG,可以更好地处理Web页面。   两种语言的比较   1. PostScript和PCL两者的工作流程都是首先在计算机的一端将打印内容解释成标准的页面描述文件,这种文件可以被所有采用这种语言的打印机所识别,传送到打印机的核心——控制器中,然后在打印机控制器中将页面描述文件解释成可以打印的图像。从工作流程的角度看,采用这两种语言的打印方式对打印机的“大脑”要求较高,需要打印机能够自己独立处理转换的任务,并且需要打印机本身有足够的内存。   2. PostScript和PCL都具备了标准化和与设备无关性的优势,对计算机系统资源占用也较少,两种语言的高版本还提高了对字库、图形和图像的解释能力,对于提供了高打印质量的产品,大都采用了此两类语言。但相对来说,由于对打印机核心部分——打印控制器性能的要求较高,一定程度会增加机器成本,尤其是PostScript对打印控制器的性能更高。   3. 经过对多款使用PCL语言和PostScript语言的黑白和彩色激光打印机进行测试。发现,使用PCL语言的打印机在处理文本或一些常见办公应用软件下的文档时具有非常明显的速度优势,在这些应用下,在打印质量方面与使用PostScript语言的打印机也没有差距。使用PostScript语言的打印机在常见办公应用下的打印速度要慢一些,但在处理PDF文件或在Photoshop等软件下打印大的图形图像文件时具有一定的速度优势,同时其在图形表现准确度、色彩表现准确度和一些字库表现准确度方面也比PCL语言有优势。 所以PCL语言比较适合一些普通的商务办公应用,而PostScript语言更加适合对图形和色彩准确度要求比较高的专业应用。这也是目前许多打印机产品同时提供PCL和PostScript两个版本的驱动的一个重要原因。   其他相关   其他要说的一点是关于选配打印语言的问题,打印语言有标配和选配两种:所谓标配是把打印语言解释成一段程序,加载在打印机主控芯片程序里面,从主机过来的打印语言格式数据流直接在此芯片中解释成机芯所能识别和控制的视频数据。而选配则是把打印语言解释器做成了一个相对独立的硬件,插于打印机控制器中预留的解释器插槽中。相对于标配,选配的数据读取速度较慢,数据精确度较低。厂商采取选配打印语言的策略就是为了降低打印机的成本,一般的用户用其自带的打印语言就可以完成相应的工作了,但如果有用户需要其的打印语言,那选购打印语言模块后直接插在打印机上就可以了。
<p id="rate_090" onmouseover="showTip(this)" tip="&积分 + 6
" class="mtn mbn">
<p id="rate_590" onmouseover="showTip(this)" tip="赞同您的帖子,感谢您的支持!&积分 + 2
" class="mtn mbn">
帖子永久地址:&<button type="submit" class="pn" onclick="setCopy('激光打印机打印语言你了解多少\nhttp://www.oachn.net/thread-.html', '帖子地址已经复制到剪贴板您可以用快捷键 Ctrl + V 粘贴到 QQ、MSN 里。')">推荐给好友导航<font color="#、大家在,时遇到技术问题,请到技术讨论区发帖,上传资料请到上传区,下载不要使用迅雷等工具。
2、下载:、、、、、。
3、论坛导航:、、、、、。
3、网导航:、、、、、。
主题帖子积分
中级工程师, 积分 585, 距离下一级还需 415 积分
中级工程师, 积分 585, 距离下一级还需 415 积分
在线时间89 小时
主题帖子积分
高级工程师, 积分 2386, 距离下一级还需 17614 积分
高级工程师, 积分 2386, 距离下一级还需 17614 积分
居住地江苏 苏州
在线时间59 小时
主题帖子积分
中级工程师, 积分 593, 距离下一级还需 407 积分
中级工程师, 积分 593, 距离下一级还需 407 积分
在线时间36 小时
主题帖子积分
高级工程师, 积分 4133, 距离下一级还需 15867 积分
高级工程师, 积分 4133, 距离下一级还需 15867 积分
居住地江苏 苏州
在线时间1137 小时
主题帖子积分
销售√维修▕ 电脑↖全系列打印
技术员, 积分 9, 距离下一级还需 291 积分
技术员, 积分 9, 距离下一级还需 291 积分
居住地江苏 连云港
在线时间75 小时
主题帖子积分
高级工程师, 积分 2030, 距离下一级还需 17970 积分
高级工程师, 积分 2030, 距离下一级还需 17970 积分
居住地湖北 恩施
在线时间52 小时
主题帖子积分
技术经理, 积分 38859, 距离下一级还需 61141 积分
技术经理, 积分 38859, 距离下一级还需 61141 积分
在线时间1544 小时
{:4_411:}捡到宝喽!
主题帖子积分
技术员, 积分 60, 距离下一级还需 240 积分
技术员, 积分 60, 距离下一级还需 240 积分
在线时间3 小时
热心会员以上级别可佩带。
优秀会员以上可佩带。
授予对宣传推广论坛有突出贡献的会员。
热心会员勋章
在讨论区积极帮助会员、及时、正确的回答会员提出的问题。
积极发表原创文章,能够带动人气、并且经常发一些具有讨论意义的帖子。
优秀会员勋章
为论坛其他会员积极提供帮助或被论坛管理团队认定的会员。
优秀会员GG勋章
授予优秀会员(GG专用)。
热心宣传勋章
授予宣传推广论坛的会员。
Powered by
&&重要声明:本站【办公中国】官方域名为:【www.OACHN.net】,客服QQ:,其它模仿我站均为假冒,与本站无任何关系!Android蓝牙打印机,带你真正了解各种打印格式 - 简书
Android蓝牙打印机,带你真正了解各种打印格式
注意:本文原创,转载请注明出处。欢迎关注我的
本文主要讲解蓝牙打印机在打印小票的过程中,如何打印各种常见格式。由于之前需要调试打印格式,但是苦于网上没有详细的讲解教程,无奈只能自给自足,自己封装了一个。如果各位盆友正在或者曾经苦恼蓝牙打印机的打印格式,那么恭喜你,本篇博文就是你要寻找的。
什么是蓝牙打印机
是的,你没看错。一开始兔子哥先来介绍一下什么是蓝牙打印机。。。好吧,这个就交给百度了:
蓝牙打印机(Bluetooth printer)就是将蓝牙技术应用在打印机上,摆脱连线所带来的不便,实现无线打印,可以减少桌面上令人不快的电缆,并且可以将打印机远离主机任意搬动,摆放在房间中适合的位置。
常见小票样式
Paste_Image.png
这个小票格式基本就是最常见的了。这里面的各种格式,都可以从蓝牙打印机的API里面找到。蓝牙打印机有好多API,我把常用的给封装了一下:PrintUtils.java
* 复位打印机
public static final byte[] RESET = {0x1b, 0x40};
public static final byte[] ALIGN_LEFT = {0x1b, 0x61, 0x00};
* 中间对齐
public static final byte[] ALIGN_CENTER = {0x1b, 0x61, 0x01};
public static final byte[] ALIGN_RIGHT = {0x1b, 0x61, 0x02};
* 选择加粗模式
public static final byte[] BOLD = {0x1b, 0x45, 0x01};
* 取消加粗模式
public static final byte[] BOLD_CANCEL = {0x1b, 0x45, 0x00};
* 宽高加倍
public static final byte[] DOUBLE_HEIGHT_WIDTH = {0x1d, 0x21, 0x11};
public static final byte[] DOUBLE_WIDTH = {0x1d, 0x21, 0x10};
public static final byte[] DOUBLE_HEIGHT = {0x1d, 0x21, 0x01};
* 字体不放大
public static final byte[] NORMAL = {0x1d, 0x21, 0x00};
* 设置默认行间距
public static final byte[] LINE_SPACING_DEFAULT = {0x1b, 0x32};
打印小票,当然首先需要连接蓝牙打印机。至于如何扫描打印机,如何连接,这个都是标准的蓝牙方式,网上资料也很多。因为本博文主要关注打印格式,所以这个就不再赘述了。连接打印机后,需要从BluetoothSocket中获取OutputStream。然后接下来都是通过OutputStream来给打印机发送打印指令。
设置打印格式
设置打印格式,就要用到上面封装的那些指令了。
* 设置打印格式
* @param command 格式指令
public static void selectCommand(byte[] command) {
outputStream.write(command);
outputStream.flush();
} catch (IOException e) {
e.printStackTrace();
用法如下:
PrintUtils.selectCommand(PrintUtils.RESET);
PrintUtils.selectCommand(PrintUtils.LINE_SPACING_DEFAULT);
PrintUtils.selectCommand(PrintUtils.ALIGN_CENTER);
PrintUtils.selectCommand(PrintUtils.NORMAL);
* 打印文字
* @param text 要打印的文字
public static void printText(String text) {
byte[] data = text.getBytes("gbk");
outputStream.write(data, 0, data.length);
outputStream.flush();
} catch (IOException e) {
e.printStackTrace();
用法如下:
PrintUtils.printText("好吃的牛肉面" + "\n");
打印文字的时候,最后都要手动拼接一个 "\n" 用来换行。
根据上面封装的代码,“貌似”是可以实现所有的打印样式了。是的,没毛病。因为上面既有打印格式的设置,又有打印文字的用法。打印小票是没问题了。but……
这种格式如何实现?
Paste_Image.png
这种格式呢?
Paste_Image.png
有的盆友可能会说,这有啥问题的??? 并且给出了他们认为完美的解释:
PrintUtils.printText("合计
53.50" + "\n");
PrintUtils.printText("抹零
3.50" + "\n");
PrintUtils.printText("项目
金额" + "\n");
可是,完美吗?
你可能觉得人工加空格是可以“实现”需求。but……中间的空格,你知道应该添加多少吗?添加多了或者少了,打印出来的结果都会一塌糊涂!并且注意小票上都是要求对齐的!合计、抹零左侧对齐。金额右侧对齐。项目、数量、金额这三列都要中心对齐。。看到这里,这个人工加空格的做法,还完美吗?
给我一个完美的解释!
“海参炒面,海参呢?给我一个完美的解释!”
“我叫海参,面是我炒的。完美不?”
是的,我们需要一个完美的解释。到底如何实现上面说的打印两列、打印三列的情况。
首先,讲解之前,先设置几个默认值:
* 打印纸一行最大的字节
private static final int LINE_BYTE_SIZE = 32;
* 打印三列时,中间一列的中心线距离打印纸左侧的距离
private static final int LEFT_LENGTH = 16;
* 打印三列时,中间一列的中心线距离打印纸右侧的距离
private static final int RIGHT_LENGTH = 16;
* 打印三列时,第一列汉字最多显示几个文字
private static final int LEFT_TEXT_MAX_LENGTH = 5;
我们知道,通用的打印纸都是有固定宽度的。经过大量测试,得出打印纸一行的最大字节数是32个字节。那么根据上面的注释,我们可以得到以下结论:
LEFT_LENGTH + RIGHT_LENGTH = LINE_BYTE_SIZE
这是毋庸置疑的。左侧宽度 + 右侧宽度 必须要等于打印纸总宽度。
而且因为打印三列的时候,中间一列是要居中显示的,所以LEFT_LENGTH和RIGHT_LENGTH都必须是总宽度32的一半,也就是必须是16.
那么如何计算某个文字所占的字节数呢?
* 获取数据长度
* @param msg
@SuppressLint("NewApi")
private static int getBytesLength(String msg) {
return msg.getBytes(Charset.forName("GB2312")).
OK,准备了这么多,海参终于准备好了。接下来就可以准备炒面了~
* 打印两列
* @param leftText
* @param rightText 右侧文字
@SuppressLint("NewApi")
public static String printTwoData(String leftText, String rightText) {
StringBuilder sb = new StringBuilder();
int leftTextLength = getBytesLength(leftText);
int rightTextLength = getBytesLength(rightText);
sb.append(leftText);
// 计算两侧文字中间的空格
int marginBetweenMiddleAndRight = LINE_BYTE_SIZE - leftTextLength - rightTextL
for (int i = 0; i & marginBetweenMiddleAndR i++) {
sb.append(" ");
sb.append(rightText);
return sb.toString();
那位说话了:“你这代码明明也是手动拼的空格啊,完美个毛啊!”。大兄弟你消消气,这里是通过逻辑进行拼接的空格,不是无脑的拼接。打印两列的步骤如下:
拼接左侧一列的文字
拼接两侧文字中间的空格
拼接右侧一列的文字
关键步骤是计算两侧文字中间的空格。怎么计算呢?很简单,总宽度 - 左侧文字长度 - 右侧文字长度
就是空格的长度。
* 打印三列
* @param leftText
* @param middleText 中间文字
* @param rightText
@SuppressLint("NewApi")
public static String printThreeData(String leftText, String middleText, String rightText) {
StringBuilder sb = new StringBuilder();
// 左边最多显示 LEFT_TEXT_MAX_LENGTH 个汉字 + 两个点
if (leftText.length() & LEFT_TEXT_MAX_LENGTH) {
leftText = leftText.substring(0, LEFT_TEXT_MAX_LENGTH) + "..";
int leftTextLength = getBytesLength(leftText);
int middleTextLength = getBytesLength(middleText);
int rightTextLength = getBytesLength(rightText);
sb.append(leftText);
// 计算左侧文字和中间文字的空格长度
int marginBetweenLeftAndMiddle = LEFT_LENGTH - leftTextLength - middleTextLength / 2;
for (int i = 0; i & marginBetweenLeftAndM i++) {
sb.append(" ");
sb.append(middleText);
// 计算右侧文字和中间文字的空格长度
int marginBetweenMiddleAndRight = RIGHT_LENGTH - middleTextLength / 2 - rightTextL
for (int i = 0; i & marginBetweenMiddleAndR i++) {
sb.append(" ");
// 打印的时候发现,最右边的文字总是偏右一个字符,所以需要删除一个空格
sb.delete(sb.length() - 1, sb.length()).append(rightText);
return sb.toString();
打印三列的步骤如下:
拼接左侧一列的文字
拼接左侧文字和中间文字中间的空格
拼接中间的文字
拼接右侧文字和中间文字中间的空格
拼接右侧一列的文字
在计算空格的时候,为了保证中间一列始终保持中心线对齐,所以在计算中间文字长度时候,都除以2。
完整打印代码
PrintUtils.selectCommand(PrintUtils.RESET);
PrintUtils.selectCommand(PrintUtils.LINE_SPACING_DEFAULT);
PrintUtils.selectCommand(PrintUtils.ALIGN_CENTER);
PrintUtils.printText("美食餐厅\n\n");
PrintUtils.selectCommand(PrintUtils.DOUBLE_HEIGHT_WIDTH);
PrintUtils.printText("桌号:1号桌\n\n");
PrintUtils.selectCommand(PrintUtils.NORMAL);
PrintUtils.selectCommand(PrintUtils.ALIGN_LEFT);
PrintUtils.printText(PrintUtils.printTwoData("订单编号", "\n"));
PrintUtils.printText(PrintUtils.printTwoData("点菜时间", " 10:46\n"));
PrintUtils.printText(PrintUtils.printTwoData("上菜时间", " 11:46\n"));
PrintUtils.printText(PrintUtils.printTwoData("人数:2人", "收银员:张三\n"));
PrintUtils.printText("--------------------------------\n");
PrintUtils.selectCommand(PrintUtils.BOLD);
PrintUtils.printText(PrintUtils.printThreeData("项目", "数量", "金额\n"));
PrintUtils.printText("--------------------------------\n");
PrintUtils.selectCommand(PrintUtils.BOLD_CANCEL);
PrintUtils.printText(PrintUtils.printThreeData("面", "1", "0.00\n"));
PrintUtils.printText(PrintUtils.printThreeData("米饭", "1", "6.00\n"));
PrintUtils.printText(PrintUtils.printThreeData("铁板烧", "1", "26.00\n"));
PrintUtils.printText(PrintUtils.printThreeData("一个测试", "1", "226.00\n"));
PrintUtils.printText(PrintUtils.printThreeData("牛肉面啊啊", "1", "2226.00\n"));
PrintUtils.printText(PrintUtils.printThreeData("牛肉面啊啊啊牛肉面啊啊啊", "888", "98886.00\n"));
PrintUtils.printText("--------------------------------\n");
PrintUtils.printText(PrintUtils.printTwoData("合计", "53.50\n"));
PrintUtils.printText(PrintUtils.printTwoData("抹零", "3.50\n"));
PrintUtils.printText("--------------------------------\n");
PrintUtils.printText(PrintUtils.printTwoData("应收", "50.00\n"));
PrintUtils.printText("--------------------------------\n");
PrintUtils.selectCommand(PrintUtils.ALIGN_LEFT);
PrintUtils.printText("备注:不要辣、不要香菜");
PrintUtils.printText("\n\n\n\n\n");
Paste_Image.png
学习了上面的打印格式,那么这个小票怎么打印? 区别就是打印三列的时候,中间一列是偏右了。相信大家应该知道答案了。如果有疑问,可以给我留言。
鉴于好多读者给我留言,要PrintUtils工具类代码,所以我把代码发布到github上了,大家可以自行下载。地址是:
如果有帮助到你,可以顺手来个star 。万分感谢!
追求超越,成功会不期而至。享受过程,结果将水到渠成。
最近竞品公司出了一个接入蓝牙打印机的功能,作为竞争对手公司肯定不能少所以就给我分了任务,搞定蓝牙打印机 首先介绍一个公司的蓝牙打印功能设想,因为公司已经具备了wife打印机的打印功能而且非常完善,于是就在想是不是可以吧蓝牙当一个wife去使用这样工作量能少N倍啊,想到这里那...
Guide to BluetoothSecurity原文 本出版物可免费从以下网址获得:https://doi.org/10.6028/NIST.SP.800-121r2 权威 本出版物是由NIST根据2014年 “联邦信息安全现代化法案” (FISMA),44 USC §...
激光技术出现于60年代,真正投入实际应用始于70年代初期。最早的激光发射器是充有氦-氖(He-Ne)气体的电子激光管,体积很大,因此在实际应用中受到了很大限制。70年代末期,半导体技术趋向成熟。半导体激光器随之诞生,高灵敏度的感光材料也不断发现,加上激光控制技术的发展,激...
上一篇 主要介绍了如何通过蓝牙连接到打印机。这一篇,我们就介绍如何向打印机发送打印指令,来打印字符和图片。 ===================== 更新==================== 终于抽时间整了一个可以运行的demo出来,实现了以下功能...
公司的一个手机端的 CRM 项目最近要增加小票打印的功能,就是我们点外卖的时候经常会见到的那种小票。这里主要涉及到两大块的知识: 蓝牙连接及数据传输 ESC/POS 打印指令 蓝牙连接不用说了,太常见了,这篇主要介绍这部分的内容。但ESC/POS 打印指令是个什么鬼?简单说...
等,我一个人等在风里 许久
很多时候我选择沉默 当枫叶染红了你的街道 我的青丝发白
老成夜乌黑苍白的老树 你依旧要走 就这样 我 等了多少春秋 始终有些话,我无法向你谈起 就像你不曾和我说 我爱你 梦里,我一次次将爱怀揣
禅和花有着千丝万缕的关系,佛教讲人生是一场修行,书法、香道、花道都是一种法门,不同的法门应了你不同的机缘,帮助你通过它完成自我的修行,插花的过程是修心的过程,花道的精神就是‘天地人’的和谐统一,达到人花一体是一种境界,在插花中观照内心,让自己与自然和谐共处,平神静气,...
在武侠小说中,金庸的《书剑恩仇录》,无疑算得上一场现实的悲剧。 明明是作者的第一部武侠作品,他却不肯让笔下的那些儿女,真正拥有一段携书弹剑,快意恩仇的武侠人生,偏要他们在勾心斗角的权谋里泥足深陷,在庙堂与江湖的冲突中摸爬滚打,在国家与民族的重压下勉力难当——正如那刚出鞘的剑...
Author:ProZoom Hobby:爱折腾、爱思考,想静静的ProZoom Github
CSDN --- 关于我 Android Coding Style 1 Project structure 工程结构 1.1 Notice 说明 N...
今天和老公讨论个事情,最终恍然大悟。 我说:老公,你说你娶了个多聪明的媳妇呀? 老公:聪明! 我说:你知道为啥你能娶到这么好的媳妇吗? 老公:为啥? 我说:因为你特别好,你值得娶这么好的媳妇! 高兴的时候有能量,有能量就有创造力,很多没和老公休闲的聊天了。生活中的小插曲,暖...

我要回帖

更多关于 喷墨打印机如何加墨水 的文章

 

随机推荐