使用iText来拆分pdf文件相比PDFBOX要复杂一点。以下示例实现了拆分PDF文件为单页文件,并保存为“文件名-n.pdf”的文件:
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.pdf.PdfCopy;
import com.itextpdf.text.pdf.PdfReader;
/**
* PDF文档的工具
*
* @author Howard
*
*/
public class PDFTool {
/**
* 拆分pdf,返回页数
*
* @throws IOException
* @throws DocumentException
* @throws FileFormatException
* @throws FileNotFoundException
*
*/
public int split(String filePath) throws IOException, DocumentException {
PdfReader reader = new PdfReader(filePath);
int pageCnt = reader.getNumberOfPages();
for (int i = 0; i < pageCnt; i++) {
Document document = new Document(reader.getPageSizeWithRotation(i+1));
PdfCopy copy ......
保护你的JAVA / .net 程序,终极避免被反编译方法研究
反编译真的让JAVA / .net 制作者讨厌的东西。你花大量的精力做了一个很好的软件,却有人盗用,
盗用都算了
人家还用来商业...
就像某文说的.你的软件买 XXXXXXXX大元.人家公司买200元.....
怎么做到呢?就是通过反编译。
我们可以看到
就算保护很强的reflector4/6 也未能幸免
如果你不将你的Application进行保护,它将很容易被反编译
只需一个软件就可以获取阅读性很强的源代码。
现行方法我说一下,
一个 是所谓混淆。
二个是加壳或者虚拟机
我最近研究 是 终极大法。
就是将他彻底编译为本机代码,或者就是类似C/C++一样
编译为真正的机器码。
然后 你就高枕无忧吧。
我想如果对方真有本事能ASM-〉C or C#
上面什么保护对他而言都是纸老虎。
本机编译话题 网上不多,而且很多内容也比较旧了(好几篇2002年,也没有人验证)
我花了一个星期时间 验证每一种方法,给大家做个汇报
JAVA 篇
我倒不敢班门弄斧,JAVA有问题去请教我徒弟吧
(这是他的BLOG http://blog.csdn.net/DL88250)
JAVA 现行本机编译商业软件比较强悍,也比较成熟。直接去购买就是
不属于本文研究内容。
我研究的是GCJ。windo ......
什么是堆栈,关于这个名词,我在百度,google搜索了半天,也没有发现一个比较权威的解释,还有许多资料语焉不详,就以维基百科的解释为准吧,和我记忆中的一致。
堆栈(英文:stack),中国大陆作堆栈,台湾作堆叠,在计算机科學中,是一種特殊的串列形式的資料結構,它的特殊之處在於只能允許在鏈結串列或陣列的一端(稱為堆疊頂端指標,英文為top)進行加入資料(push)和輸出資料(pop)的運算。另外堆疊也可以用一維陣列或連結串列的形式來完成。堆疊的另外一個相對的操作方式稱為佇列。
由於堆疊資料結構只允許在一端進行操作,因而按照後進先出(LIFO, Last In First Out)的原理運作。
堆疊資料結構使用兩種基本操作:推入(push)和彈出(pop):
推入(push) :將數據放入堆疊的頂端(陣列形式或串列形式),堆 ......
一 相对路径的获得
说明:相对路径(即不写明时候到底相对谁)均可通过以下方式获得(不论是一般的java项目还是web项目)
String relativelyPath=System.getProperty("user.dir");
上述相对路径中,java项目中的文件是相对于项目的根目录
web项目中的文件路径视不同的web服务器不同而不同(tomcat是相对于 tomcat安装目录\bin)
二 类加载目录的获得(即当运行时某一类时获得其装载目录)
1.1)通用的方法一(不论是一般的java项目还是web项目,先定位到能看到包路径的第一级目录)
InputStream is=TestAction.class.getClassLoader().getResourceAsStream("test.txt");
(test.txt文件的路径为 项目名\src\test.txt;类TestAction所在包的第一级目录位于src目录下)
上式中将TestAction,test.txt替换成对应成相应的类名和文件名字即可
1.2)通用方法二 (此方法和1.1中的方法类似,不同的是此方法必须以'/'开头)
InputStream is=Test1.class.getResourceAsStream("/test.txt");
(test.txt文件的路径为 项目名\src\test. ......
什么是堆栈,关于这个名词,我在百度,google搜索了半天,也没有发现一个比较权威的解释,还有许多资料语焉不详,就以维基百科的解释为准吧,和我记忆中的一致。
堆栈(英文:stack),中国大陆作堆栈,台湾作堆叠,在计算机科學中,是一種特殊的串列形式的資料結構,它的特殊之處在於只能允許在鏈結串列或陣列的一端(稱為堆疊頂端指標,英文為top)進行加入資料(push)和輸出資料(pop)的運算。另外堆疊也可以用一維陣列或連結串列的形式來完成。堆疊的另外一個相對的操作方式稱為佇列。
由於堆疊資料結構只允許在一端進行操作,因而按照後進先出(LIFO, Last In First Out)的原理運作。
堆疊資料結構使用兩種基本操作:推入(push)和彈出(pop):
推入(push) :將數據放入堆疊的頂端(陣列形式或串列形式),堆 ......
java.net的类可以划分为两类:套接字API(Sockets API)和用于处理统一资源定位器(URL)。Socket 是所有其他可移植网络通信的底层机制,用于网络上客户和服务器之间的各种通信。java提供的套接字支持三种不同的底层协议:Socket(面向连接的协议)、DatagramSocket(无连接协议)和MulticastSocket。
在编写网络编程时,通常会谈到客户和服务器,发起通信的是客户(client),接收请求的是服务器(server)。客户需要两个信息来找到Internet上的一个服务器并与之连接,即IP地址和端口号。
客户构造一个Socket来打开与一个服务器的链接:
try{
Socket sock = new Socket("www.baidu.com",25);
}catch(UnkownHostException e){
System.out.println("can't find host.");
}catch(IOE ......