首页
快乐星球
归档统计
留言板
友情链接
Search
1
service mysql start出错,mysql启动不了,解决mysql: unrecognized service错误
870 阅读
2
每日签到实现
817 阅读
3
二、1.Sublime Text 3使用SublimeLinter配置JS,CSS,HTML语法检查
816 阅读
4
影评---最佳出价
807 阅读
5
ERROR: unable to bind listening socket for address '127.0.0.1:9000': Address already in use
780 阅读
开发
apache
nginx
Css
Laravel
Js
C#
PHP
Asp
Wordpress
微信
Html5
uni
python
环境配置
Linux
windows
MySql
数据库
Sql Server
git
wdcp
生活
工作
视频制作
阅读
登录
Search
标签搜索
看书
工作
C#
PHP
Wordpress
Laravel
Linux
Git
混淆
Uni
生活
WDCP
阅读
IIS
开发
羽化
累计撰写
135
篇文章
累计收到
22
条评论
首页
栏目
开发
apache
nginx
Css
Laravel
Js
C#
PHP
Asp
Wordpress
微信
Html5
uni
python
环境配置
Linux
windows
MySql
数据库
Sql Server
git
wdcp
生活
工作
视频制作
阅读
页面
快乐星球
归档统计
留言板
友情链接
搜索到
3
篇与
的结果
2016-04-13
iTextSharp 生成pdf时自动生成页眉页脚
用iTextSharp生成pdf的时候往往需要添加页眉页脚,本人开始使用手动生成页眉页脚。也就是在每次document.NewPage();前进行document.Add(**)进行插入需要的页眉页脚。具体如下iTextSharp.text.Image instance = iTextSharp.text.Image.GetInstance(directoryName + "/Nymoi Logo.jpg"); instance.ScaleToFit(80f, 20f);iTextSharp.text.Paragraph element = new iTextSharp.text.Paragraph("www.nymoi.com", font10) { Alignment = 2 }; document.Add(instance); document.Add(element);这样就手动添加了,但是当页面的内容超出当页范围的时候,会自动创建一页,这个时候就无法手动添加页眉页脚。所以需要通过pdf模板来实现该功能新建一个HeaderAndFooterEvent的cs文件必须继承PdfPageEventHelper, IPdfPageEvent接口namespace NymoiAnalyzer.UI { public class HeaderAndFooterEvent : PdfPageEventHelper, IPdfPageEvent { public static PdfTemplate tpl = null; //模版 public static bool PAGE_NUMBER = false; //为True时就生成 页眉和页脚 iTextSharp.text.Font font = BaseFontAndSize("msyh",8, Font.NORMAL, BaseColor.GRAY); iTextSharp.text.Font font8 = BaseFontAndSize("msyh",8, Font.BOLD, BaseColor.GRAY); iTextSharp.text.Font font8Blk = BaseFontAndSize("msyh", 8, Font.NORMAL, BaseColor.BLACK); iTextSharp.text.Font font16 = BaseFontAndSize("begok", 16, Font.BOLD, BaseColor.BLACK); //重写 关闭一个页面时 public override void OnEndPage(PdfWriter writer, Document document) { if (PAGE_NUMBER) { Phrase header1 = new Phrase("NYMOI", font16); Phrase header2 = new Phrase("www.nymoi.com", font8Blk); Phrase footer1 = new Phrase("NYMOI Analyzer 4.0 ", font); Phrase footer2 = new Phrase("PAGE " + writer.PageNumber, font); PdfContentByte cb = writer.DirectContent; //模版 显示总共页数 cb.AddTemplate(tpl, document.Right - 54 + document.LeftMargin, document.Bottom - 8); //调节模版显示的位置 //页眉显示的位置 ColumnText.ShowTextAligned(cb, Element.ALIGN_CENTER, header1, 30 + document.LeftMargin, document.Top+10, 0); ColumnText.ShowTextAligned(cb, Element.ALIGN_CENTER, header2, document.Right - 45 + document.LeftMargin, document.Top+10, 0); //页脚显示的位置 ColumnText.ShowTextAligned(cb, Element.ALIGN_CENTER, footer1, 30 + document.LeftMargin, document.Bottom, 0); ColumnText.ShowTextAligned(cb, Element.ALIGN_CENTER, footer2, document.Right - 60 + document.LeftMargin, document.Bottom , 0); } } //重写 打开一个新页面时 public override void OnStartPage(PdfWriter writer, Document document) { if (PAGE_NUMBER) { writer.PageCount = writer.PageNumber - 1; } } //关闭PDF文档时发生该事件 public override void OnCloseDocument(PdfWriter writer, Document document) { BaseFont bf = BaseFont.CreateFont(Path.GetDirectoryName(Application.ExecutablePath) + "\\Fonts\\msyh.ttf", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED); tpl.BeginText(); //tpl.SetFontAndSize(bf, 16); //生成的模版的字体、颜色 //tpl.ShowText((writer.PageNumber - 2).ToString()); //模版显示的内容 tpl.EndText(); tpl.ClosePath(); } //定义字体 颜色 public static Font BaseFontAndSize(string fontName, Int32 size, int style, BaseColor baseColor) { BaseFont baseFont = null; Font font = null; string file_name = ""; int fontStyle; if (fontName == "msyh") { baseFont = BaseFont.CreateFont(Path.GetDirectoryName(Application.ExecutablePath) + "\\Fonts\\msyh.ttf", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED); }else if(fontName == "begok") { baseFont = BaseFont.CreateFont(Path.GetDirectoryName(Application.ExecutablePath) + "\\Fonts\\Begok regular.ttf", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED); } if (style < -1) { fontStyle = Font.NORMAL; } else { fontStyle = style; } font = new Font(baseFont, size, fontStyle, baseColor); return font; } //定义输出文本 public static Paragraph InsertTitleContent(string text) { iTextSharp.text.Font font = BaseFontAndSize( "msyh",16, Font.BOLD, BaseColor.BLACK); //BaseFont bfSun = BaseFont.CreateFont(@"c:\windows\fonts\STZHONGS.TTF", BaseFont.IDENTITY_H, false); //调用的字体 //Font font = new Font(bfSun, 15); Paragraph paragraph = new Paragraph(text, font); //新建一行 paragraph.Alignment = Element.ALIGN_CENTER; //居中 paragraph.SpacingBefore = 5; paragraph.SpacingAfter = 5; paragraph.SetLeading(1, 2); //每行间的间隔 return paragraph; } } }在新建pdf并打开的时候插入如下代码:PdfWriter writer = PdfWriter.GetInstance(document, new FileStream(pdfFilePath, FileMode.Create)); writer.PageEvent = new HeaderAndFooterEvent(); HeaderAndFooterEvent.PAGE_NUMBER = true;//不实现页眉跟页脚 HeaderAndFooterEvent.tpl = writer.DirectContent.CreateTemplate(100, 100); //模版的宽度和高度 PdfContentByte cb = writer.DirectContent; cb.AddTemplate(HeaderAndFooterEvent.tpl, 266, 714);//调节模版显示的位置这样就可以了,但是在页眉页脚中无法使用图片,希望哪位实现了,告诉我一下。
2016年04月13日
469 阅读
0 评论
0 点赞
2016-04-06
dotfuscator 混淆使用方法
dotfuscator如何对.net程序进行混淆保护对于程序代码的保护,网上有很多资料,有的说混淆,有的说加密,我比较支持混淆的方法,这样可以让反编译劳工,头晕一阵子,哈哈开玩笑。对于加密如果不是不得已,我想没有必要。加密性能消耗比较大。dotfuscator相信做程序的人很多都知道,dotfuscator与XenoCode都是代码混淆工具,做为保护代码安全的一个工具。既然说到.net的程序,那当然要扯扯dotfuscator,都同属微软的产品,兼容性绝对是天生一对。闲话不多说,说最直接的东西,最实用东西。下面来说说dotfuscator的用法,我用的是Dotfuscator Professional Edition 4.2版,Dotfuscator的版本有多好,具体请看微软官方说明http://msdn.microsoft.com/zh-cn/library/ms227255(v=VS.80).aspx.aspx)用法一 使用默认混淆打开软件点击input选项卡,把dll或exe添加,Libray不要选,否则的话,几乎所有的公共函数变量,不会被加密和混淆,可以很容易的看到代码点击build选项卡,在目标目录(destination directory)选取你想把dll生成到的位置,如F盘:/混淆目录其它不用设置,直接点build,会有提示是否要保存项目。点击否生成的dll,再用.net Reflector 进行反编译,看一下。看到的结果是,类名重命名,方法名重命名 全都变成a,b,c这种方法有个缺点,对于三层架构来说,他的dal层语句还是有在。比较容易看懂。用法二 自定义混淆,类名,方法名不变。但是方法里面的内容变成只有一句 // This item is obfuscated and can not be translated.打开软件点击input选项卡,把dll或exe添加在options的选项中,这是全局配置选项:把 Disable String Encryption 设为 NO,即启用字符串加密;检查 Disable Control flow、Dsiable Renaming为NO,即保证控制流和混淆功能打开,其他默认 Rename 选项勾选“use enhanced overload induction”(使用增强模式),注意:不要勾选下方的“ Do not suppress on serializable types”,即序列化类型的变量不加密,否则编译后可能异常; “Renaming Scheme” 选择“Unprintable”(不可打印字符,即乱码),也可以选择其他如小写字母、大写字符、数字的方式。 点击build选项卡,在目标目录(destination directory)选取你想把dll生成到的位置,如F盘:/混淆目录其它不用设置,直接点build,会有提示是否要保存项目。点击否生成的dll再用.net Reflector 进行反编译,看一下。可以发现函数体内的代码已经看不到了,提示:“ This item is obfuscated and can not be translated.”;字符串也变成了乱码,函数名称也不可见了看起来是比较强大。但是有个缺点。因为dll是需要被web程序调用的,web的程序调用的方法,之前是使用类名,及方法名的。所以推荐不要做rename这步骤。也就是在Options选项时,Dsiable Renaming设置为NO.而Rename里面就不要去设置了DotFuscator其特点是混淆,一个很重要的方面是重命名。然而重命名又导致无法引用的问题。这要求需要对几个DLL 同时混淆,对于WEB 来说,页面cs可以发布成一个DLL,将所有层的DLL一起混淆,可以解决很多问题。这里对WEB DLL不进行重名,以保证页面文件可以访问。对于说在混淆后,容量会变小.我觉得这不是绝对的,我的容量是变大了**
2016年04月06日
395 阅读
0 评论
0 点赞
2016-04-02
visual studio installer 安装后修改注册表
使用visual studio installer生成msi安装包的时候往往要修改一下注册表,小编就遇到按照后要修改打开方式用小编写的程序打开一些文件。1、右键打开注册表2、修改打开方式,小编要修改的是.moi扩展的打开方式这里要说明Condition并不是键值,而是创建该键的满足条件,默认值的话只要把名称为空按回车,就直接是默认值了。3、修改打开方式,设置默认的图标和打开的默认程序。ico文件建议是32×32的打开方式的%1是用来打开文件的,没有%1的话小编只是调用了当前安装文件,却无法读取文件的内容
2016年04月02日
680 阅读
0 评论
0 点赞