用C#制作PDF文件全攻略(上)

发表于:2009-6-25 10:16

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:未知    来源:网络转载

  打开document前要做的事:

  你只能在Open方法调用之前添加摘要,这是iText开发工具提供的一个选择。

  在HTML中,报头信息被放在文档前面报头标识中间,调用Open方法将导致报头信息写入流,因而在Document被打开后无法更改这些数据。

  PDF报头信息不包括摘要,看起来有类似于:

  %PDF-1.2

  该行显示生成的文档是一个版本为1.2的PDF格式的文件,在PDF中,摘要保存在PdfInfo对象中,当文档关闭时已经写入PdfWriter中了,因此,没有关于为什么不能修改库来满足任何时候添加或更改摘要的技术原因

  u 页面初始化

  Open方法在不同的Witer中同时会产生初始化事件,举例来说,如果你需要一个水印或者页眉页角对象出现在文档第一页的开始处,你需要在打开文档前添加这些,同样的用于设置该文档其他页水印、页眉、页角、页数和尺寸。

  当调用下列方法:

  public bool setPageSize(Rectangle pageSize)

  public bool Add(Watermark watermark)

  public void removeWatermark()

  setting Header property

  public void resetHeader()

  setting Footer property

  public void resetFooter()

  public void resetPageCount()

  setting PageCount property

  产生的结果只能在下一个新页中看到(当在本页调用初始化方法时),代码见示例代码0107,你必须要准备一张名为watermark.jpg的图片,如下图:

  u 阅读器参数:

  你可以通过下面的办法为PDF文件指定一些阅读器 (如Adobe Reader) 参数:

  public void setViewerPreferences(int preferences)

  在示例代码0108中,指定了下面一些参数:

  writerA.setViewerPreferences(PdfWriter.PageLayoutTwoColumnLeft);

  writerB.setViewerPreferences(PdfWriter.HideMenubar | PdfWriter.HideToolbar);

  writerC.setViewerPreferences(PdfWriter.PageLayoutTwoColumnLeft | PdfWriter.PageModeFullScreen | PdfWriter.NonFullScreenPageModeUseThumbs);

  正如你所看到的,参数可以使用以下一些常量:

  文件被打开时,页面布局用到下面的其中一个 :

  PdfWriter.PageLayoutSinglePage – 同时只显示一个页面

  PdfWriter.PageLayoutOneColumn –单列显示

  PdfWriter.PageLayoutTwoColumnLeft –双列显示,奇数页在左

  PdfWriter.PageLayoutTwoColumnRight -双列显示,奇数页在右

  文件打开时,页面模式用到下面其中之一:

  PdfWriter.PageModeUseNone – 既不显示大钢也不显示缩略图

  PdfWriter.PageModeUseOutlines – 显示大纲

  PdfWriter.PageModeUseThumbs – 显示缩略图

  PdfWriter.PageModeFullScreen – 全屏模式,没有菜单、windows控件或者其他任何windows可见控件

  PdfWriter.HideToolbar – 当文档激活时,是否隐藏阅读程序(如Adobe Reader)的工具条

  PdfWriter.HideMenubar -当文档激活时,是否隐藏阅读程序的菜单.

  PdfWriter.HideWindowUI -当文档激活时,是否隐藏阅读程序的界面元素,如滚动条、导航条等,而仅仅保留文档显示

  PdfWriter.FitWindow – 是否调整文档窗口尺寸以适合显示第一页。

  PdfWriter.CenterWindow – 是否将文档窗口放到屏幕中央

  在全屏模式下,指定如何显示界面元素(选择一个)

  PdfWriter.NonFullScreenPageModeUseNone -既不显示大钢也不显示缩略图

  PdfWriter.NonFullScreenPageModeUseOutlines – 显示大钢

  PdfWriter.NonFullScreenPageModeUseThumbs – 显示缩略图

  说明:你只能在类PdfWriter中调用这些方法。

  u 加密

  打开文档之前还要做的一件事情就是加密(如果你希望该文档加密),要达到这个目的,你可以使用下面的方法:

  public void setEncryption(boolean strength, String userPassword, String ownerPassword, int permissions);

  strength 是下面两个常量之一:

  PdfWriter.STRENGTH40BITS: 40 位

  PdfWriter.STRENGTH128BITS: 128位 (Acrobat Reader 5.0及以上版本支持)

  UserPassword和ownerPassword 可以为空或零长度, 这种情况下, ownerPassword 将被随机的字符串代替

  Permissions 为下列常量之一:

  PdfWriter.AllowPrinting

  PdfWriter.AllowModifyContents

  PdfWriter.AllowCopy

  PdfWriter.AllowModifyAnnotations

  PdfWriter.AllowFillIn

  PdfWriter.AllowScreenReaders

  PdfWriter.AllowAssembly

  PdfWriter.AllowDegradedPrinting

  该功能参见示例代码0109和示例代码0110。

  writer.setEncryption(PdfWriter.STRENGTH40BITS, null, null, PdfWriter.AllowCopy);

  示例代码0109产生的文件能够被打开而无须密码,但用户不能打印、修改本文档。

  writer.setEncryption(PdfWriter.STRENGTH128BITS, "userpass", "ownerpass", PdfWriter.AllowCopy | PdfWriter.AllowPrinting);

  打你试图打开示例代码0110产生的文件时,将要求输入密码('userpass'),因为添加了AllowPrinting参数,你可以打印该文档而不会发生任何问题。

  第四步 添加内容

  在解释第一步到第三步的不同示例中,你可能已经遇到了一些对象如Phrase, Paragraph等 在接下来的几章中,所有这些问题都将得到详细解释。

  有时你可能想一个writer故意忽略document产生的行为,如示例代码0111:

  当我们创建了两个writer: writerA 和 writerB:

  PdfWriter writerA = PdfWriter.getInstance(document, new FileStream("Chap0111a.pdf", FileMode.Create));

  PdfWriter writerB = PdfWriter.getInstance(document, new FileStream("Chap0111b.pdf", FileMode.Create));

  我们可以创建两个有细微差别的文档:

  writerA.Pause();

  document.add(new Paragraph("This paragraph will only be added to Chap0111b.pdf, not to Chap0111a.pdf"));

  writerA.resume();

  你可以比较文件: Chap0111a.pdf和Chap0111b.pdf的区别

  第五步,关闭 document

  关闭 document 非常重要, 因为它将关闭正在运行的Writer并将内容写入文件,该方法在最后被调用,你应该总是要关闭文档。

  高级话题:阅读PDF文件

  该部分内容介绍了iText只能产生PDF格式的文件而不能解析PDF格式文件,不再翻译。

相关阅读:

用C#制作PDF文件全攻略(下)

 

33/3<123
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号