2005年07月30日

iTextSharp作者对iTextSharp的介绍非常简单:iTextSharp is a port of the iText, a free Java-Pdf library,那iText又是什么呢?一个可以方便PDF生成和处理的Java library。

也许你会问,为什么选择iTextSharp而不是iText呢?答案是你为什么要学C#/VB.net,而不是学java呢?

iTextSharp目前版本是3.0.5(基于iText1.3.1和当前的cvs)

下载地址为:

预编译版本:http://switch.dl.sourceforge.net/sourceforge/itextsharp/itextsharp-3.0.5-dll.zip

源代码:http://switch.dl.sourceforge.net/sourceforge/itextsharp/itextsharp-3.0.5.zip

基于The Microsoft .Net Framework 1.1

可以使用VS.Net2003或者sharpdevelop(我在家使用的就是这个,Version1.1.0,build 1964)

不过使用sharpDevelop编译iTextSharp的时候会报找不到Function USR和EqualsIgnoreCase,解决办法,用查找替换的方法替换所有USR为System.util.USR,EqualsIgnoreCase为System.util.EqualsIgnoreCase。如果还有什么问题的话请留言。

下面开始我们的第一个例子了,一门语言的教学第一个例子往往就是helloworld,那我们也别搞什么特殊化了,就以helloworld为开始吧。

其实创建一个生成hellworld.pdf的小程序真的很简单,只需以下5步:

Step 1:
创建一个iTextSharp.text.Document-object的实例:
Document document = new Document();

Step 2:
Creates a Writer that listens to this document and writes the document to the Stream of your choice:
创建PdfWriter用于监听document,并把document写入你所选择的流:
PdfWriter.getInstance(document, new FileStream("Chap0101.pdf", FileMode.Create));

Step 3:
打开document:
document.Open();

Step 4:
给document添加内容:
document.Add(new Paragraph("Hello World"));

Step 5:
关闭document:
document.Close();

是不是很简单?

C#代码:

/*
 * Created by SharpDevelop.
 * User: hy
 * Date: 2005-7-30
 * Time: 20:42
 *
 * To change this template use Tools | Options | Coding | Edit Standard Headers.
 */
using System;
using iTextSharp.text;
using iTextSharp.text.pdf;
using System.IO;
namespace helloworld
{
 class MainClass
 {
  public static void Main(string[] args)
  {
   Console.WriteLine("Hello World!");
   Document doc=new Document();
   PdfWriter.GetInstance(doc,new FileStream(@"c:\helloworld.pdf",FileMode.Create));
   doc.Open();
   doc.Add(new Paragraph("hello world!"));
   doc.Close();
  }
 }

VB.net代码:

Imports System
Imports iTextSharp.text
Imports iTextSharp.text.pdf
Imports System.IO
Namespace helloworld

 Class MainClass

  Public Shared Sub Main(ByVal args As String())
   Console.WriteLine("Hello World!")
   Dim doc As Document = New Document
   PdfWriter.GetInstance(doc, New FileStream("c:\helloworld.pdf", FileMode.Create))
   doc.Open
   doc.Add(New Paragraph("hello world!"))
   doc.Close
  End Sub
 End Class
End Namespace

注意:别忘了在你的例子中引用iTextSharp哟。

以前一些卖U盘的JS为了快些卖钱,想出一些什么随身Q,随身邮之类的花样来骗钱。其实很多软件都可以在安装一次后经过简单处理就不必每次都安装了,比如winrar,msn,ultraedit,一些以IE为内核的浏览器等等,我的机器上有近20种软件是在每次重装系统后不必考虑再安装的。

不过今天介绍的是一款重量级的东东:随身办公套装(portable openoffice)。

相信吗,openoffice不用安装就可以使用,而且最新的1.9xbeta版本都不超过128M,而且你也可以把它刻在一张mini CD-R上,随身携带,在需要的时候让它帮你一把。

废话似乎多了些,下面还是请portable openoffice自己出场吧。

Portable openoffice(也可以叫做portableoo,我自己做了个光盘镜象,索性简写成poo)一个开源项目,说实话不过是安装好openoffice后再做些处理,方便即使不方便安装的时候依然可以用到功能强大的office工具。

下面就是官方网站,可以获得的版本有1.142.0b,前者只有53.4Mb(压缩包) / 90.6Mb(解压缩后),后者是70.8Mb (压缩包)/ 127Mb (解压缩后)

http://johnhaller.com/jh/useful_stuff/portable_openoffice/

http://sourceforge.net/projects/portableoo/

网站上相信介绍了制作过程(如果你有兴趣的话可以按照它的方法自己制作一个,本来我也打算制作一个了,只是嫌中文版的版本太低,我还是使用现成的吧),另外还介绍了其他几款比较流行的软件的portable版本: Portable Firefox, Portable Thunderbird, Portable Sunbird and Portable NVU.

下面做个提醒,使用portable的时候杀毒软件会报启动程序有病毒,实际上没有病毒,但为了每次使用时不给自己添麻烦,还是建议各位自己写个批处理文件吧。

@start program\soffice.exe

就是把上面这句话保存为bat文件,比如poo.bat,当然要把这个放在program的上一级目录了,这样除了program所在的目录内的有意义外,其余的都可以删除不要了。

我呢,做了个光盘镜象版,每次mount这个iso文件的时候就会自动运行openoffice,是不是很方便呢?其实制作方法也很简单。

在program所在目录建一个autorun.inf文件,文件内容为:

[autorun]
open=program\soffice.exe
icon=openoffice.ICO

icon那行只是为了好看,当你把镜象文件虚拟成光驱或者刻盘插入光驱的时候,你会看到你的光驱图标变成了漂亮的openoffice的图标,当然你可以使用任何你喜欢的图标文件来替换它。

当然为了方便还是建议把上面的提到的批处理文件也保留一份。

我觉得还有一个问题要交待,网站上说因为openoffice的某些功能需要java虚拟机的支持,所以没有虚拟机的话,有些功能也就无法实现了,比如把文档转为xhtml,以及随openoffice提供的数据库(实际是java版本的hsqldb,在2.0b以上版本才提供)无法使用,作者说因为java虚拟机无法portable,所以没有提供,我想可能是因为如果提供了,则会超过128M限制的,我会另外起个专题讨论这个。

如果有必要我愿意提交我制作的虚拟光盘文件(只是我没有这么大的ftp空间)

我第一次碰到这个问题还是我在上个纺织厂工作的事情,外贸员用有宏的excel来维护一些资料,却在一次关闭后再也无法打开了,那可是两个星期工作的内容,她担心死了,于是来找我,说实在的,我当时也没有什么好办法,当然首先是上网查找原因了,其实根本很难查找,因为连思路也没有,下载了些修复软件,都没有用,心想这下丢丑了。后来想到我偶尔玩玩的openoffice.org,死马当活马医吧,下载openoffice,安装,试着打开那个有问题的excel,居然成功了,然后另存,再用excel打开,没有问题。

说实话,关于这个题目的确没有太多好说的,因为只要你试下就知道了;至于为什么要转成swf呢?如果这个问题是你问我的话,我想是你还没有这种需求,我说了也没有多少意思,我不想讨论ppt和swf哪个做演示文档更方便更好之类的争论。

至于把图片文件转为swf,我也就更不想浪费大家时间看我罗嗦了。

以下的介绍是我转载自OpenOffice.org 中文計劃

改良了的檔案格式支援

  • PDF (Portable Document Format) 匯出
  • 支援以 PDF 檔案格式寄出文件
  • DocBook/XML 匯入/匯出
  • XHTML 匯出
  • 支援 flat XML 匯出
  • 支援 Macromedia Flash (SWF) 匯出
  • 支援 AportisDoc (Palm)、Pocket Word 及 Pocket Excel 等流動裝置
  • 為 Office 2003 XML 文件而設,以 xslt 為基礎的過濾器 (filter)

可存取性

  • 支援全鍵盤巡覽 (keyboard navigation) 與控制
  • 支援系統顏色與佈景主題設定
  • 支援求助系統與文件的存取
  • 預設支援 Java 可存取性 API 的援助性技術

國際化

複合文字格式、直書、及雙向書寫

  • 支援在文字文件、文字框架、及圖形物件中使用直書
  • 支援在試算表資料格中使用直書 (每個資料格有獨立的書寫方向)
  • 支援以複合文字格式輸入、顯示、及編輯指令碼
  • 支援在 OpenOffice.org 的圖形使用者介面 (GUI) 中使用右至左書寫格式
  • 支援在 OpenOffice.org 的文件中使用雙向書寫
  • 支援阿拉伯與印度數字
  • OpenOffice.org 會根據你的語系環境設定來自動從左至右書寫與複合文字格式中選取適合你的書寫方向

其他國際化功能

  • 支援一些 8-bit 的阿拉伯與印度文字編碼
  • 支援 KOI8_U 編碼
  • 語言選項中新增了複合文字格式的選項卡
  • 援救模式支援以 X11 字形編寫,用相向書寫/右至左書寫的文件
  • 為泰文及印度文等語言提供順序輸入核對功能
  • 初始字符退卻 (fallback) 支援

與微軟 Office 的相容性

所有元件

  • 更精確地處理匯入與匯出圖形物件
  • 能夠匯入中日韓編碼及複合文字格式的文件
  • 增強了檔案格式轉換的穩定與精確性

Word

  • 支援 Word 文件內的表格轉換
  • 改進了的文字文件佈局匯入

Excel

  • 支援數據驗證 (data validation)
  • 匯入/匯出圖表的圖形細節

PowerPoint

  • 更好的文字框架一對一 (one to one)配置
  • 改進了的 WordArt 物件匯入

文書處理

  • 加強了註腳支援
  • 改進了目錄中的超連結支援
  • 改進了工具箱中的鍵盤處理
  • 匯入純文字檔案時,其內文會以無比例字形匯入
  • 現在能夠調整 HTML 與 BASIC 原始程式碼的字形
  • 支援在表頭與註腳中繪畫物件

繪圖/簡報

  • 於在文字繪圖物件上執行的拼字核對增加了次語系支援
  • 命令列增加了新選項 -start,用以提示 OpenOffice.org 在開啟文件後立即開始簡報

試算表

  • 匯入及匯出圖表中使用點陣圖、材質、或影線格式的 Excel 檔案
  • 命令列增加了新選項 -start,用以提示 OpenOffice.org 在開啟文件後立即開始簡報
  • 總和 (sum) 按鈕會分析上下文以決定插入總計 (total) 函數還是小計 (subtotal) 函數
  • 支援 Excel 95 或更舊的表格控制

資料庫

  • 在表格設計工具內可以鍵盤巡覽來控制表格
  • 增加了在參考書目欄位中關掉括號的功能
  • 資料來源管理選項中的資料庫類型增加了 MySQL 一項
  • 報告製作精靈中能加入欄位 (field) 標籤
  • 資料來源現在能使用任何 OpenOffice.org 知道的文字編碼
  • 提供使用者介面支援與安裝了資料庫驅動器的使用者
  • 資料庫報告製作精靈

文書處理輔助功能

  • 拼寫檢查程式、確義詞彙、及連字符處理 (hyphenator) 會自動偵測新安裝的語言包
  • 拼寫檢查程式內預設包括英文、美式英文、及義大利文的語言包
  • 連字符處理支援丹麥文、英文、德文、及俄文
  • 拼寫檢查程式包含初步印度文支援
  • 拼寫檢查程式用 n-gram 計分法來計算改錯建議

程式設計與自動化

  • Macro 記錄器
  • 內置故障報告器以把故障資料傳送到 OpenOffice.org 伺服器
  • 整合了 Python-UNO 橋接器 (bridge),以便程式設計員使用 Python 來製作 UNO 元件
  • 更新了 Java-To-Native UNO 橋接器 (bridge),使其速度快了十倍
  • 偵察在 OpenOffice.org 登記了的 Java 的錯誤配置
  • 在 Windows 上支援 ActiveX Control
  • 在 Windows Explorer 中,OpenOffice.org 檔案類的「內容」(properties) 資訊框所包含的資訊增加了

其他改進

  • Windows 98 的使用者再不用下載 unicows.dll 了
  • OpenOffice.org 的開頭顯示畫面現在加上了 process bar
  • 改進了的網上說明
  • 改進了 dialogs 與工具列的個人化功能
  • 改進了的 URL 列自動完成功能
  • 若快顯功能表 (context menu) 在 URL 上開啟,它將包括「開啟網頁」的選項
  • 若在數部電腦上使用共享文件夾,OpenOffice.org 將不會准許數個「相同的使用者」同時進行安裝
  • 增加了命令列工具及 API,以讓使用者把設定資料輸入至後端
  • 現在,文件視窗都會以重疊視窗方式產生,以避免新的文件視窗完全覆蓋了舊的文件視窗
  • 支援透過自動產生的目錄登記與及存取附加程式 (add-on)
  • 新增 FTP 檔案存取元件
  • 第一次執行 OpenOffice.org 時,迎接你的將不再是通訊錄資料來源選擇工具,而是邀請你注冊的訊息
  • 支援恢復受到些微損壞的 OpenOffice.org 檔案
  • 為有 type42 字體支援的 generic postscript 列印新增了 ppd 檔案
  • 支援在 Unix 複製/貼上點陣圖
2005年07月26日

PDFSELECT1.1

Usage: pdfselect [options] infile [outfile]
Options:
-p N, –pages N         Intervals of pages to be selected,if N=0 ,the inFile wil
l be split to many one page pdf to outFile driver.
-q, –quiet             Do not print progress messages.
-e, –even              Select even pages It may be used in conjunction with the
 other page selection options to select the even pages from a range of pages.
-o, –odd               Select odd pages. It may be used in conjunction with the
 other page selection options to select the even pages from a range of pages.
-r, –reverse           The -r option causes pdfselect to output the selected pa
ges in reverse order.
-h, –help              Print this message and exit.
-V, –version           Show version number.

  • Example:
    Split PDF:pdfselect -p 0 c:\a.pdf d:\
  • (分割一个给定的PDF)
    Reverse PDF:pdfselect c:\a.pdf c:\b..pdf
  • (对一个给定的PDF进行逆向排序输出)
    Extract given pages:pdfselect -p 2-3,8-7 c:\a.pdf c:\b..pdf
  • (从给定PDF中提取指定页)
    Extract given pages and reverse it:pdfselect -r -p 5,2-3,8-7 c:\a.pdf c:\b..pdf
  • (从给定PDF中提取指定页,并进行逆向排序)
    Extract odd pages:pdfselect -o c:\a.pdf c:\b..pdf
  • (提取给定PDF的奇数页)
    Extract odd pages and reverse it:pdfselect -r -o c:\a.pdf c:\b..pdf
  • (提取给定PDF的奇数页,并进行逆向排序)
    Extract even pages:pdfselect -e c:\a.pdf c:\b..pdf
  • (提取给定PDF的偶数页)
    Extract even pages and reverse it:pdfselect -r -e c:\a.pdf c:\b..pdf
  • (提取给定PDF的偶数页,并进行逆向排序)
  • 更多功能,自己研究吧。

PDFSelect 1.1,all right reserved!
Author:Steven Lee
HomePage:http://www.steedsoft.com
Email:steedsoft@gmail.com
There is no warranty.
Please use at your own risk.
It is free,but any donation is welcome.
If you notice any bugs please let me know
by email at steedsoft@gmail.com

http://soft.rubypdf.com/softwares/pdfselect

 

2005年07月23日

今天在检查转成的简体中文插件的时候发现modules\Activities\language\zh_cn.lang.php竟然是空的,我使用的是如下这个小程序转的

<?php
  include_once ‘ccharset.php’;
  $code=new CCharset();//
  include_once ‘gb2312.php’ ;
  $this->g2312 = new GB2312toUTF8();   
  $file=’zh_tw.lang.php’;    
  $fd=fopen($file,’r');    
  $contents = fread($fd, filesize($file));      
  $contents=iconv(‘UTF-8′,’BIG5′,$contents);
  echo $contents;//这里就显示内容为空了,说明执行上面的iconv的转换是出现了bug
  $contents=$code->Big5_Gb($contents);  
  $contents=$this->g2312->gb2utf8($contents);
  fclose($fd);
  $fd=fopen(str_replace(‘zh_tw’,'zh_cn’,$file),’w');
  fwrite($fd,$contents);
  fclose($fd); 
 ?>

再转其它的文件的时候都没有问题,于是我又试了下不使用iconv的方式(完全使用php脚本来实现的方法,改日会把整个实现类上传供大家分享)来实现上面的功能,发现可以正常转换,由此判定iconv可能有问题

我使用的php版本是4.3.11,iconv的版本是1.9.0.0

先把4.0.1版本的简体中文文件导入到CRM4.2中,然后逐个目录进行简体中文插件和英文插件逐行进行比较修改,并修改个别我认为翻译不准确和简体中文与繁体中文在用词上有差别的地方,当然肯定还是有很多仍然翻译不准确的,因为涉及到贸易词汇,我本人的英文水平也不怎么样,外贸也忘记差不多(本来也没有学多少),不恰当的地方希望朋友指出来,谢谢了!

2005-07-23:

include\language\zh_cn.lang.php

 

今天用OpenOffice Writer(以下简称OOW)作了个vtiger CRM4.2的安装帮助文档,很多内容是从安装网页上copy过来,经过调整和翻译的,自然也就把网页上的Form一并copy了过来,转出的PDF效果不错,而且还意外发现了一个很强大的功能:网页中的form转成PDF后竟然变成了PDFForm

看到这消息,你会做感想?我是觉得太酷了 ,因为做出网页的Form是很容易的事情,你可以选择很多的工具,而在网页上做好的Form copyOOW上只要做简单的修改和调整就可以输出很漂亮的PDF Form了,而PDF Form又可以用来制作报表。当然你也可以使用OOW直接制作Form并转换成PDF

如果有兴趣的话还不赶快去尝试下。

英文版Vtiger CRM4.2的安装



下面以流水帐的形式记录下CRM4.2的安装,也许和你的环境不太一样,为了直观和方便,我直接拷贝相关页面,然后进行必要的翻译和说明,如果有什么异议或者更好的建议,欢迎来信讨论或者在我Blog上留言。下面进入正题。

第一步:开始及友情提示

Kindly note vtiger CRM 4.2 is tested on mysql 4.0.x and PHP 4.3.8 and Apache 2.0.40 . Support for PHP 5 will be provided in future releases (友情提示:vtiger CRM 4.2已在如下环境下测试通过:MySql4.0.x PHP4.3.8Apache2.0.40。将来的版本将提供PHP 5的支持)

上面这段是vtiger CRM官方的提示,本人是在如下环境进行的测试:MySql 5.0.6-beta,PHP 4.3.11Apache 2.0.54Win32

第二步,配置系统信息

System Configuration(系统配置)

Please enter your database configuration information below…

请在下面输入你的数据库配置信息……

If you do not have root access to your database (for example you are installing in a virtual hosting environment), you will need to have your database created for you before you proceed. However, this installer will still be able to create the necessary database tables.

If you unsure of your database host, username or password, we suggest that you use the default values below.

如果对数据库没有root权限(例如,你安装在虚拟空间上),需要先建数据库,然后在执行安装程序。当然此安装程序可以安装数据库的相关表。

如果不确定数据库的路径,用户名和密码,建议你使用下面的默认值。(这句话改成去问你的数据库管理员还差不多,也许只有vtieger家的数据库才用这种用户名)

* Required field(打*号的为必输项)

Database Configuration配置数据库)

Host Name *

主机名

User Name *

用户名

Password *

密码

Database Name *

数据库名


Site Configuration(配置网站)

URL *

Path *

Path to Cache Directory *
(must be writable)

D:/Apache/Apache2/htdocs/crm42/

Cache路径(该目录必须可写)


Admin Configuration(配置管理员信息)

username

admin

password*

Note: The default password is ‘admin’. You can change the password if necessary now or else you can change it later in vtiger CRM

注意:默认密码是“admin”。必要的话你可以现在就修改密码或者等以后再改。




进行如上配置时的注意事项,配置数据库信息的时候会发现除了主机名外其它三项都无法修改,怎么办?只能自己手动在config.php中修改配置了

知道如下内容:

//$dbconfig['db_host_name'] = ‘$H_NAME.$sock_path’;

//$dbconfig['db_user_name'] = ‘vtigercrm’;

//$dbconfig['db_password'] = ”;

//$dbconfig['db_name'] = ‘vtigercrm’;

进行如下的修改(当然=后面的信息因人而异了):

$dbconfig['db_host_name'] = ‘localhost:3306′;

$dbconfig['db_user_name'] = ‘root’;

$dbconfig['db_password'] = ‘你自己的密码‘;

$dbconfig['db_name'] = ‘crm42′;

如果你已经安装了4.2之前的版本,如果你还想要老数据库的内容,该知道怎么做吧(数据库不要重名,以免后悔)?


第三步,信息确认

如果因为权限的原因,无法自动创建数据库的话,你将看到的是如下信息:

Database Not Found(数据库没有找到)

Error Message: The specified database crm42 is not present. Create the database or specify some other database name

(错误信息:指定的数据库crm42不存在。请创建数据库或者指定别的数据库。)

最简单的解决办法就是在MySql Command Lines下使用create database crm42;命令创建一个,然后点change按钮回到上一步,重新来过。

如果你已经创建好了数据库,或者是安装程序可以自动创建(好像不行,我用的是root用户,一样看到上面的错误提示),你将看到如下的信息:

Confirm System Configuration(确认配置信息)

Please review the configuration information below… (请检查下面的配置信息……)

如果想同时导入演示数据,请别忘了选中下面的复选框,然后点Create按钮进行下一步的config创建工作。

Also populate demo data?

Also populate demo data?

第四步,创建配置文件

Create Config File(创建配置文件)

Successfully created config file (config.php) in :

(成功创建配置文件(config.php)在(右边目录下)

D:/Apache/Apache2/htdoc/scrm42/



如果你想同时导入演示数据,估计需要漫长等待,我在本机环境下都是等待了很长时间。

第五步,创建数据表

如果你看到下面类似的信息,那么恭喜你,你配置成功了。

Create Database Tables(创建数据库表)

Tables partially created Populating seed data into crm42…done

(创建部分表并导入种子数据(初始化数据) 到crm42中……成功)

The database tables are now set up. (开始创建表)


total time: 322.372442 seconds.共用时: 322.372442 S超过5分钟,够长的吧?


Your system is now installed and configured for use. You need to log in for the first time using the "admin" user name and the password you entered in step 2.

(系统已经安装配置完毕,可以使用了。第一次登陆需要admin用户名和第二步中你输入的密码。)



大功告成,但别忘了把install.php文件删除掉,不然被谁有意无意执行一次,你的数据就都没有了。

下面附上个人信息:

Steven Lee(中文名太难听了,就不写了)

steedsoft@gmail.comMSN)

QQ:357558(很少使用了)

http://gmail.512j.com/friend/rocsky

http://blog.donews.com/rocsky

机器配置(购于20014月):

CPU:赛扬700/内存:512M/硬盘:80G/显卡:TNT32Pro/集成声卡/Windows2000 Professional/显示器:17纯平



该安装帮助文档制作于2005-07-23早上6:30,用时半个小时(边安装,边copy翻译,赶出这么个粗糙的文档,加上水平有限,不当之处,欢迎指出,方便我继续改进)。我将根据我的个人时间来决定是否推出简体中文版本,这次是没有繁体中文版本可以转换了,也许过些时间就推出了呢。

想看演示效果的,可以登陆:http://www.vtigercrm.com或者我的主机(因为配置比较差,感觉或比较慢,而且不是24小时开机,毕竟太浪费电了):

CRM 4.0.1(简体中文,繁体中文和英文,默认简体中文): http://221.137.73.50/crm

CRM 4.2(英文):http://221.137.73.50/crm42

使用的是有线通,IP地址可以在比较长的时间不会改变,如果发现无法访问,请登陆我的个人网站或者Blog以获得更新地址。

该安装帮助的Doc版本和PDF版本可以到下面地址下载

http://www.filefarmer.com/steedsoft/crm42installmenu.doc(文档使用Openoffice编写,在word2000下显示效果如何还不知道)。

http://www.filefarmer.com/steedsoft/crm42installmenu.pdf(使用Openoffice的转换功能生成的,效果不错)

用户名和密码分别admin/admin

CRM 4.2 也可以使用这个帐号:standarduser/standarduser