该文由小居工作室原创(:2482052910)翻译并提供解答支持,原文地址:Pdf File Writer 中文应用(PDF文件编写器C#类库):http://www.cnblogs.com/wjs5943283/p/6528853.html
首先 Pdf File Writer 是一个很好用的PDF文件生成工具,由于作者对中文编码不熟悉,涉及到中文字体的输出会发生异常,经过本人多次测试,仿宋、黑体字体的中文还比较好,不容易发生异常。宋体测试很多次都没有成功,包括咨询了作者本人也没有得到满意的答案:
这一篇主要是对 PDF-File-Writer的使用进行中文翻译,在各位使用的过程中有什么问题,可以联系我。我已经在生产环境中使用。
原文地址:https://www.codeproject.com/Articles//PDF-File-Writer-Csharp-Class-Library-Version?msg=#xxxx
下面为全文翻译:
PDF文件编写器C#类库
(版本1.19.1增强版)
已全部打包到百度云盘:链接:http://pan.baidu.com/s/1nvFKDvj 密码:apj0
示例生成的PDF文件:
PDF文件编写器C#类库允许您直接从.net应用程序创建PDF文件。库免除了您的PDF文件结构的细节。要使用库,您需要添加对附加的类库文件的引用,在使用库的每个源文件中添加一个语句,并包含与您的分发。有关更多详细信息,请转到2.23安装。或者,您可以在应用程序中包含库的源代码,并避免分发单独的数据链接库文件。最低开发要求是.NET Framework 4.0(Visual Studio 2013,在vs2012中使用也很正常)。
版本1.19.0修改说明
- 文档链接允许PDF文档用户单击链接并跳转到文档的另一部分。添加文档链接分为两部分。目标定义为位置标记。位置标记必须具有唯一的名称,范围(或)和位置(页面和位置)。第二部分是链接位置。这两个部分可以按任何顺序定义。他们被绑在一起的名字。名称区分大小写。许多链接可以指向同一位置标记。
- 命名目标是PDF文档中的目标。它们使用位置标记以与文档链接相同的方式定义。范围必须设置为NamedDest。当诸如Adobe Acrobat的PDF阅读器打开PDF文档时,它可以在查看窗口中显示目标时打开文档。有关详细信息,请参见第2.22节“ 文档链接”和“命名目标”。
- 库的以下功能已修改:Web链接,视频显示,音频播放,保存或查看嵌入文件。在库的以前版本中,Web链接由方法和类支持。从1.19.0开始,相同的支持可用于记录链接,视频,音频和嵌入文件。
- 对于代码示例,请查看OtherExample.ca和OtherExample.pdf。特别注意目录页和页码7。
- 版本1.19.1 Fix:AddLocationMarker修复具有小数分隔符而不是句点的区域。
换句话说,一个全局性的“查找和替换”从到会做的工作。
已命名目标已修改:
PDF文件编写器C#类库支持以下PDF文档的功能:
图形:绘制线条,矩形,多边形,贝塞尔曲线,前景和背景颜色,图案和阴影。第2.1节坐标系。
图像:绘图光栅(位图)图像和矢量(图元文件)图像。第2.4节。图像支持。
文本:在列中绘制文本行和文本。第2.3节语言支持。
条形码:支持条形码128,条形码39,条形码交错2,条形码EAN13和条形码UPC-A。第2.5节条码支持。
QR码:支持二维码。第2.8节QR码支持。
加密:支持AES-128加密。第2.6节加密支持。
Web链接:Web链接交互支持。第2.7节Web链接支持。
书签:支持文档大纲。第2.9节书签支持。
命名目标:支持使Acrobat在特定页面打开PDF文档。第2.22节文档链接和命名目的地。
图表:支持Microsoft Charting。第2.10图表支持。
打印到PDF:从PrintDocument过程创建PDF文档。2.11节PrintDocument支持。
显示数据表。第2.12节数据表支持
播放视频文件。2.13节播放视频文件
播放声音文件。2.14节播放声音文件
附加数据文件。第2.15节附加数据文件
重新排序页面。第2.16节重新排序页面
PDF文档输出到文件或流。第2.17节PDF文档输出。
PDF文档信息字典。PDF阅读器在文档属性的“说明”选项卡中显示此信息。信息包括:标题,作者,主题,关键字,创建的日期和时间,修改的日期和时间,生成文件的应用程序,PDF生成器。第2.18节文档信息字典。
内存控制:将已完成页面的内容信息写入输出文件,并使用垃圾回收器释放未使用的内存。第2.19节。内存控制。
绘制由System.Windows.Media.PathGeometry类定义的图形。输入参数可以是文本字符串或PathGeometry类。第2.20节Windows Presentation Foundation WPF
透明度或不透明度现在可用于绘制形状,线条,文本和图像。您的应用程序可以为所有图形和文本设置颜色的Alpha组件。第2.21节透明度,不透明度,Alpha颜色分量和混合
混合。新库支持PDF颜色混合方案。混合定义如何处理在先前项目上绘制的新项目的颜色。第2.21节透明度,不透明度,Alpha颜色分量和混合
创建PDF是一个六个步骤的过程。
步骤1:创建一个文档对象PdfDocument。
步骤2:创建资源对象,如字体或图像(ie PdfFont 或PdfImage)。
步骤3:创建页面对象PdfPage。
步骤4:创建内容对象PdfContents。
步骤5:向内容对象添加文本和图形(使用PdfContents方法)。
对其他页面重复步骤3,4和5
步骤6:通过调用CreateFile方法创建您的PDF文档文件PdfDocument。
步骤5是您的大部分编程工作将花费的地方。通过调用PdfContents类的方法来渲染图形和文本来实现添加内容。内容类具有丰富的集(大约100种)用于向文档中添加文本和图形的方法。
PdfDocument实现IDisposable接口释放非托管资源。创建PDF文件后CreateFile调用该方法Document.Dispose()。然而,为了确保资源的释放,你应该用一个语句或一个blockhttps://www.cnblogs.com/wjs/p/p> 包装PdfDocument创建和最终CreateFileusingtry/catch
本文附带的演示程序是开发用于调试库的测试程序。在TestPdfFileWriter有主屏幕上的六个按钮。五个按钮生成PDF文件的示例,一个按钮显示计算机上可用的所有字体。第一个按钮“文章示例”创建显示在本文顶部的PDF文件。第3节。
如前所述,PdfFileWriterC#类库使您免受PDF文件结构的复杂性。然而,良好的了解PDF文件总是一个优势。Adobe PDF文件规范文档可从Adobe网站获得:“PDF参考,第六版,Adobe便携式文档格式版本1.7,2006年11月”。这是一个令人恐惧的1310页的文件。我强烈建议阅读第4章图形以及文本第5章的第5.2和5.3节。
如果你想分析这个项目创建的PDF文件,或者如果你想了解一般的PDF文件结构,你可以使用我的上一篇文章“PDF文件分析器与C#解析类”附带的演示程序。本文简要介绍了PDF规范。
PDF坐标系原点在页面的左下角。X轴指向右边。Y轴指向向上的方向。
PDF计量单位是点。一英寸有72点。PDF文件编辑器允许您选择自己的计量单位。表示位置,宽度或高度的所有方法参数必须在您的度量单位中。有两个例外:字体大小和分辨率。字体大小始终为点。分辨率始终为每英寸像素数。PDF文件编写器将所有输入参数转换为点。所有内部测量值和计算均采用双精度。在创建PDF文件的最后一步,将值转换为文本字符串。转换精度为六位数。使用的转换公式为:
诸如Adobe Acrobat之类的PDF阅读器期望实数具有小数,以使用句点作为小数分隔符。一些世界地区使用其他小数分隔符,如逗号。由于PDF File Writer库的版本1.1将使用句点作为小数分隔符,而不考虑计算机的区域设置。
PDF文件编写器库支持您计算机上安装的大多数字体。唯一的例外是设备字体。支持的字体遵循OpenType字体规范。有关详细信息,请参阅Microsoft字体 - OpenType规范。要绘制的文本存储在由Unicode字符组成的字符串中。该库将接受除控制代码0到31和128到159之外的任何字符(0到65536)。每个字符都将转换为字形。字形在页面上从左到右以与存储在字符串中的顺序相同的顺序绘制。实际上,所有字体文件只支持所有可能的Unicode字符的一个子集。换句话说,您必须选择支持项目语言的字体或要尝试显示的符号。如果输入字符串包含不受支持的字形,PDF阅读器将显示“未定义字形”。通常它是一个小矩形。本文附带的测试程序有一个“字体族”按钮。如果单击它,您可以在计算机上查看所有可用的字体,并在每个字体中查看所有可用字符。如果项目的语言是从左到右的语言,每个字符被翻译成一个字形,并且字形在字体中定义,结果应该是你期望的。如果结果不是您期望的结果,以下是一些额外的注释:
Unicode控制字符。Unicode控制字符用于控制文本的解释或显示,但这些字符本身没有视觉或空间表示。PDF文件编写器不识别这些字符。库假定每个字符都是显示字符。它们将显示为未定义字符。
从右到左语言。通常,文本字符串中的字符的顺序是人们读取它们的顺序。由于库从左到右绘制,文本将被向后写。该方法颠倒字符顺序。如果文本只有从右到左的字符,这将解决问题。如果文本是从右到左,从左到右,数字和一些字符如括号()[] <> {混合,它不会产生所需的结果。另一个限制是类不能打断长到右文本到行。
在某些语言中,两个或多个字符的序列被组合在一起以显示一个字形。您的软件可以识别这些序列并将其替换为正确的字形。
虚线圆。如果你看看Glyph Metrics屏幕的Glyph列,你可以看到一些glyphs有一个小的虚线圆圈(即字符代码2364和2367)。这些字符是字符序列的一部分。不显示虚线圆圈。如果前进宽度为零,边界框在Y轴的左侧,则此字形将为drawen ok。它将显示在上一个字符的顶部。如果前进宽度不为零,则此字形应显示在上一个字符之前。你的软件可以通过颠倒这两个字符来实现。
在PDF文档中显示图像由PdfImage类和PdfImageControl类处理。图像源可以是图像文件或.NET Image派生类或用于黑白图像的布尔数组。图像以Jpeg格式保存到PDF文件,索引位图,灰色位图或黑白位图。位图格式是无损压缩。PdfImageControl控制保存图像的过程。彩色图片应以Jpeg格式保存。要控制图像数据大小,您可以降低分辨率或更改图像质量。彩色图像可以以灰色阴影保存。数据大小减少了三个,但你失去了颜色。如果图像是以图表中的编程方式创建的,并且颜色数小于256,则图像可以保存为索引位图。每个颜色由与3个字节相比的一个字节(或更少)表示。这可以导致非常重要的文件大小减少。ChartExample.pdf文件从642KB减少到72KB。如果图像是黑白的,如在PdfPrintDocument图像的文本,图像可以保存为BWImage。在PrintExample.pdf的情况下,Jpeg文件是1795KB,黑白版本是66KB。
dfFileWriter库中的其他三个类使用PdfImage支持。类是:PdfChart,PdfQRCode和PdfPrintDocument。
图片是PDF资源。创建映像资源时,软件会将映像数据直接加载到PDF输出文件中。换句话说,图像数据不驻留在存储器中,允许大量的图像而不减少程序存储器空间。PdfImage类有三个构造函数。
参数是:
- :PDF文档的对象。
- :图像文件是可以加载到.NET 派生类的任何文件。图像派生类是光栅图像或矢量图像的图像。如果输入文件名,扩展名为.emf或.wmf,则将文件加载到文件中,否则文件将加载到。
- :是位图或由应用程序在内存中创建的元文件。
- :是一个布尔二维数组。False表示黑色,true表示白色。PdfQRCode类使用此格式来表示QR图像。
- :是一个可选参数,用于保存图像创建属性。
具有以下属性。所有属性都是可选的。
- :图片另存为,,或。
- :裁剪矩形是定义要裁剪的图像区域的矩形。注意:矩形坐标是.net标准。原点在左上角,Y轴朝下。裁剪矩形可以。在这种情况下,尺寸以像素为单位。裁剪矩形必须包含在图像中。
- :如上所示裁剪矩形,但尺寸以图像宽度和高度的百分比表示。
- :图像分辨率设置图像分辨率,前提是它小于源图像的分辨率。分辨率以每英寸像素为单位指定。减小的分辨率意味着较小的PDF文件。
- :它是一个在0到100范围内的整数,表示质量差到最佳质量的图像,或(-1)表示以默认质量保存图像。较低的图像质量意味着较小的PDF文件。如果图像质量未定义,则将其视为默认质量。.net框架工作默认保存方法使用的质量因子为75.此编号不由Microsoft记录。它是通过实验和互联网搜索计算的。
- :将位图转换为黑白是两步过程。第一种是标准颜色到灰色阴影。如果灰度阴影低于截止,则第二个将像素设置为黑色,如果灰度低于截止,则将像素设置为白色。有效值为1到99。
- :在灰色或BW图像中,如果此属性为true,则颜色反转。
其他方法。
该方法返回具有适合给定区域的正确宽高比的最大矩形。
该方法返回具有适合给定区域的正确宽高比的最大矩形,并基于枚举对其进行定位。
最后将图像绘制成内容使用方法。如果您希望图像保持正确的宽高比使用或计算宽度和高度。如果宽度和高度的比率与图像不同,则图像将看起来在一个方向上拉伸。
应当指出的是,除了,,和产生PDF文档中PDF图像
下面的代码说明了如何在PDF文档中包含UPC-A条形码。
在这种情况下,类是具有12位数字输入字符串的BarcodeEAN13。结果是UPC-A条形码。
PDF文件编写器库包括基类。对于每个支持的条形码,需要一个派生类。类库包括四个子类:,,和。该生产EAN-13条码,如果输入字符串为13位数字和UPC-A如果输入字符串为12位。具有13位数字和前导零的输入字符串被认为是UPC-A。
该方法具有多个重载。您可以指定条形码左下角的位置,窄条的宽度,条形码的高度以及导出的条形码类别。有可选参数:对齐(左,中,右)颜色和字体以显示文本。条形码周围的安静区域是您的责任。可选文本显示在条形码下方。如果你选择的颜色不是黑色,你应该确保背景的对比是显着的。用法示例中给出3.7绘制条形码,和。
如果要为另一个条形码创建派生类,请使用三个包含的类的源代码作为示例。
PDF文件编写器库支持AES 128和标准128(RC4)加密。有关详细信息,请参阅PDF参考第六版(1.7版)第3.5节加密。PDF文件编写器支持两种类型的加密过滤器,AES-128和128.标准128是RC4加密。它被认为不安全。对于新项目不使用它。它不支持公钥密码编码收件人列表。
要加密PDF文档,请调用类中定义的四种方法之一:
1.设置不带参数的加密。
PDF文件编写器库将使用AES-128加密来加密PDF文档。PDF阅读器将打开文档,而无需请求密码。权限标志设置为允许所有。
2.使用一个参数设置加密。
PDF文件编写器库将使用AES-128加密来加密PDF文档。参数是权限。权限标志定义如下。你可以或者一起获得多个权限。PDF参考手册有完整的权限描述。PDF阅读器将打开文档,而无需请求密码。
3.使用两个参数设置加密。
PDF文件编写器库将使用AES-128加密来加密PDF文档。两个参数是用户密码和权限。PDF阅读器将使用用户密码打开文档。权限将根据参数设置。
4.使用四个参数设置加密。
PDF文件编写器库将使用EncryptionType.Aes128加密或EncryptionType.Standard128加密来加密PDF文档。四个参数是用户密码,所有者密码,权限和加密类型。如果用户密码为空,将采用默认密码。如果所有者密码为null,则软件会生成随机数密码。Standard128加密被认为不安全。它不应该用于新项目。
诸如Acrobat的PDF阅读器将接受用户或所有者密码。如果使用所有者密码打开文档,PDF阅读器将打开它,并将所有权限设置为允许操作。
权限标志如下:
PDF文件编写器库提供对Web链接的支持。此功能是PDF参考手册第8节交互功能中描述的PDF交互功能之一。它是注释和动作的组合。注释将Web链接与页面上的区域相关联。当用户点击该区域时,PDF阅读器将激活导航到期望的网页的默认web浏览器。
注释区域是由相对于页面左下角的绝对坐标定义的矩形区域。添加类的Web链接调用方法。
注释不是页面内容的一部分。为了让PDF文档的读者知道在哪里点击,您需要在页面上的相同区域中显示相应的文本或图形。换句话说,你需要调用两个方法。在与网页和与内容相关联的第二方法相关联的方法。第二种方法可以是图形对象,例如图像或矩形或文本。因为需要相对于页面左下角的坐标,所以图形对象的坐标必须相同。换句话说,不要使用平移,缩放或旋转。如果你这样做,你需要确保这两个区域将重合。
PDF文件编写器有几种支持文本注释的方法。
使用相关的网络链接绘制一行文本。文本将左对齐,带下划线和蓝色。文本位置相对于页面的左下角。
使用相关的网络链接绘制一行文本。文本位置相对于页面的左下角。
在其中绘制Web链接是一个两步过程。首先,使用类的一种方法将文本和Web链接字符串添加到框中。第二个你绘制的页面内容使用的方法之一。
添加网络链接。文本将显示为下划线和蓝色。
添加网络链接。文本属性由和定义。
第二步绘制文本到内容。此方法假设没有额外的行或段落间距。请注意,如果你调用无参数上有信息,将被抛出。
此方法允许您定义额外的行或段落间距。请注意,如果你调用无参数上有信息,将被抛出。
有关编码示例,请参阅3.4 Draw Frame,ArticleExample.cs和OtherExample.cs源代码。
从V1.7开始,PDF文件编写器库提供对QR码的支持。该程序支持三个字符集:数字,字母数字和8位字节。程序不支持汉字字符。QR码是图像资源。库将QR代码内容转换为图像。要在文档中显示QR码,需要定义一个资源对象,并将此对象添加到页面的内容。程序自动选择最佳字符集和最佳矩阵大小。用户必须提供数据字符串和所需的纠错级别。错误校正级别是:L低(7%),M中(15%),Q中中高(25%),H高(30%)。字符集定义为:数字数据(数字0-9)。字母数字(数字0-9,大写字母AZ和九个其他字符空格$%* + - 。/:),8位字节数据。程序将扫描数据串输入并选择最有效的字符集。如果您的数据可以分成只有数字或只是字母数字字符的段,您可以创建一个QR码对象与数据字符串数组。
使用单个数据字符串创建QR代码对象。
或者,使用数据字符串数组创建QR Code对象。如果要将数据字符串分成不同字符集的部分,请使用此形式。
默认情况下,创建的图像将具有每个QR码模块4×4像素和图像周围16个像素的安静空间。要覆盖默认使用:
绘制QR码调用方法。这是一个正方形。宽度和高度相同。
有关编码示例,请参阅3.7绘制条形码,ArticleExample.cs和OtherExample.cs源代码。
书签在PDF规范(第8.2.2节“文档大纲”)中描述如下:“PDF文档可以可选地在屏幕上显示文档大纲,允许用户以交互方式从文档的一个部分导航到另一个部分。的树结构层次结构的大纲项(有时称为书签),其作为内容的可视表以向用户显示文档的结构。用户可以通过用鼠标点击它们来交互地打开和关闭单个项。
OtherExample.cs源代码具有书签示例。在一个位置有三个层次的层次结构。您可以在OtherExample.pdf文件中查看结果。
向应用程序添加书签的第一步是:
此步骤激活文档中的书签,并返回根节点。
添加书签类似于向窗体中添加控件。第一级书签被添加到根。后续级别将添加到现有书签。至少,您必须定义页面上的标题,页面,垂直位置以及打开的条目标志。page是要去的页面的PdfPage对象。YPos是相对于页面左下角的垂直位置。如果较低级别的书签是可见的,则打开条目标志为真,如果较低级别的书签被隐藏,则为假。默认情况下,第一级始终可见。
AddBookmark()方法有四个重载变体:
类暴露一个方法。您可以通过调用一个或多个整数参数来获取任何书签。每个参数是级别中子位置的零基本参数。例如第一级的第三项。是第三个第一级项目的第四个第二级项目。
PDF规范没有特定的图表支持。PDF文件编写器库通过允许开发人员创建Microsoft Charting对象并将此对象作为图像绘制到PDF文件中来提供图表支持。有关Microsoft图表控件注释MSDN库文档Visual Studio 2012图表控件的详细信息。图表名称空间的文档在“ 数据可视化图表命名空间”中提供。附上ChartExample.cs有四个图表的例子。如果您打算使用图表,您需要添加System.Windows.Forms.Visualization对您的项目的引用。在每个源模块使用Chart你需要引用System.Windows.Forms.DataVisualization.Charting命名空间。
将图表添加到PDF文档是四个步骤的过程。
- 创建图表对象。
- 创建PdfChart对象。
- 构建图表。
- 绘制PdfChart到PdfContents。
创建图表的推荐方法是使用对象的静态方法。
你可以自己实例化类。
接下来从上面创建一个。或者,您可以覆盖分辨率。
接下来,您构建您的图表。有四个例子。构建图表的文档超出了本文的范围。互联网上有很多例子。
有一种方法来简化字体的创建。它将基于图表的分辨率计算字体大小。
最后一步是绘制图表。
本类提供了一些可选的方法来控制图像的定位。
该方法返回具有适合给定区域的正确宽高比的最大矩形。
该方法返回具有适合给定区域的正确宽高比的最大矩形,并基于枚举对其进行定位。
打印文档支持允许您以打印到打印机和生成PDF文档的相同方式打印报告。这种产生PDF文件的方法和用于产生PDF文件的方法之间的区别在于栅格图形与矢量图形之间的差异。打印文档支持每页创建一个jpeg图像。有创建三页文档的示例。
通常每个页面是页面的完整图像。如果您的页面是Letter 尺寸,分辨率为每英寸300像素,每个像素为3个字节,页面的位图将是25.245MB长。具有可以显着减小位图的大小的方法。假设使用一英寸边距,位图的活动大小将减少到15.795 MB。减少37.4%。
PrintPage方法的示例
数据表类允许您在PDF文档中显示数据表。是控制一个表的显示的主类。表由标题行和数据行组成。每行被划分为单元格。控制一个标题单元或一个数据单元的显示。如果使用头,它将显示在表的顶部。可选地,它将显示在每个附加页面的顶部。要在单元格中显示数据,请将数据加载到的属性中。数据可以是:文本字符串,基本数值,布尔,字符,图像,QR码或条形码。独立于数据,您可以加载文档链接,网络链接,视频,音频或嵌入文件的单元格。单击单元格区域内的任何位置将使PDF阅读器激活文档链接,网络链接,视频,音频或嵌入式文件。数据的显示由类控制。类包含默认单元格样式和默认标题样式。您可以覆盖其中的私有样式的默认样式。要显示表,请创建一个对象。接下来,您将初始化表,标题单元格,数据单元格和样式对象。最后,设置一个循环并加载一行的单元格值,然后绘制此行。此循环继续,直到显示所有数据。下面您将看到生成表所需的步骤顺序。
调用方法时,软件计算所需的行高。行高是最高单元格的高度。如果表中有足够的空间,将绘制该行。当底部的可用空间太小时,将调用新页面,并且可选标题和当前行显示在表格的顶部。如果所需的行高度过大,将不适合全空表,则会引发异常。为了适应长多行字符串,或软件可以灵活地处理这些情况。多行字符串由e转换为a 。本类有一个属性。如果此属性设置为零(默认值),则将其视为其他数据值。高度必须适合页面。如果设置为正整数,系统将计算单元格的高度作为高度或高度的前几行指定。系统将绘制具有适合页面的行数的行。将创建一个新页面,并绘制其余的线条。换句话说,long的第一行块将至少是长的。TableExample.cs源包含长单元格的示例。
创建对象。
page是当前的PdfPage。内容是当前的PdfContents。Font是表默认字体。FontSize是以点为单位的默认字体大小。
在页面上定义表的区域。
四个参数是表格相对于左下角和用户单位的四边。如果在第一页上,表顶部位置不在设置为开始顶部位置的页面的顶部。在后续页面上,表格将始终从顶部开始。如果未指定,库将其设置为默认页面大小减少1英寸边距。
将表宽度划分为列。
参数的数量是列数。表格宽度减去总边界线将与这些参数成比例。
一旦使用方法设置列的数量,库将创建两个数组。一个用于标题单元的数组和一个用于数据单元的数组。
数据表的行和列可以用边框线分隔。边框线属性由和定义。有四个水平边框线:,,标题行和第一个数据行之间以及数据行之间。有两组垂直边框线:用于标题行中的垂直边框线的数组,以及用于表的数据部分中的列之间的垂直边框线的数组。数组大小是列数加一。数组元素零是表的左边框。数组元素列是表的右边框。所有其他元素是分隔列的行。这些行中的每一行可以单独定义。有一些方法可以一次定义所有边界线,或定义每个单独的边界线。
定义所有边框线的方法:
可以清除或设置每个水平边界线。示例是顶部边框线:
可以清除或设置每个垂直边界线。示例是单元格的垂直边框线:
设置其他可选的表属性。下面的示例中给出的值是默认值。
表信息每次处理一行。每行由单元格组成。每列一个单元格。单元格信息的显示由类控制。有大约20个样式属性。对于完整的列表视图的源代码或帮助文件。这些样式中的一些特定于要显示的信息的类型。这里是一个例子
初始化完成后,显示数据。下面的例子是从。这是一张股票价格表。有6列。
该方法具有可选参数。默认值为。如果希望下一行打印在下一页的顶部,请将参数设置为。
交互功能示例。
对于数据表的源代码,更多的例子看看和。有关,和类的更多详细信息,请查看帮助文件。
该支持嵌入PDF文档中的视频文件。播放视频文件的完整示例在第7页。添加视频文件需要使用三个类。
首先,您需要将视频文件嵌入到PDF文档中。
第二,你需要定义如何播放视频。的类有许多方法来控制视频显示。请参考类的源代码和文档帮助文件。例如:或。如果要在浮动窗口中播放视频,您必须使 用方法。
第三,您需要在PDF页面上定义用户必须单击以激活视频的区域。如果要在注释区域可见时激活视频,请使用。
浮动窗口视频显示
该支持嵌入PDF文档中的声音文件。播放声音文件的完整示例在第7页中给出。嵌入声音文件与视频文件基本相同。唯一明显的区别是没有什么可以显示。
在支持PDF文档中嵌入数据文件。嵌入文件的完整示例在第7页中给出。用户可以保存文件或显示文件。
在追加新的网页页面列表的末尾。如果要将页面从当前位置移动到新位置,请使用以下方法。
PdfFileWriter创建PDF文档。主类PdfDocument构造函数给你两个选择来保存文档。第一种选择是将PDF文件保存到磁盘文件。在这种情况下,你提供了一个文件名。在文件创建结束时调用PdfDocument.CreateFile。
此方法将PDF写入文件并关闭文件。
第二个选择是流。您创建一个流,内存流或文件流,并将该流作为参数传递给PdfDocument构造函数。执行CreateFile方法后,您的流包含PDF文档。根据应用程序,从流中提取文档。您必须在应用程序中关闭流。
PDF文档信息字典由PDF阅读器在文档属性的“说明”选项卡中显示。信息包括:标题,作者,主题,关键字,创建的日期和时间,修改的日期和时间,生成文件的应用程序,PDF生成器。
在应用程序中包含文档信息的步骤如下:
当对象被创建,四个额外的字段被添加到词典中。您可以在代码中覆盖所有这些。
在构建文档时,PDF文件编写器会累积创建PDF文件所需的所有信息。信息保存在内存中,除了图像和嵌入文件。图像和嵌入文件在声明时会自动写入输出文件。对于非常大的文档,使用的内存不断增长。库提供方法()将内容信息写入输出文件,并调用垃圾收集器释放未使用的内存。该方法需要时间来执行。如果执行时间是问题,请每几页设置一次参数。换句话说,必须针对每个页面运行,但每几页清理一次。执行提交后,不能添加其他信息。当下一行不能容纳在当前页面的底部时自动启动新页面。该班有两个成员,并同时表被构建以控制内存的使用情况。本类生成从.NET类图的图像。该方法将执行提交。或者,您可以调用的方法。
绘制WPF图形是一个四个步骤的过程。
- 步骤1:创建对象。输入参数是路径和Y轴方向。
- 步骤2:可选择通过调用七种方法之一或调用方法添加画笔。
- 步骤3:可选择通过调用两种方法之一或调用方法添加笔。
- 步骤4:通过调用绘制图形对象。
如果引用不可用(即您的应用程序是Windows窗体),则需要向应用程序添加和程序集。
Example8 和Example8f 中给出了使用WPF图形类绘制的编程示例。
如果未定义画笔和笔,则绘制图形将作为剪辑路径。
下面你会发现更多的细节如何使用DrawWPFPath类WPF应用程序和其他应用程序。
构造函数接受两个参数:路径和Y轴方向。路径是字符串或。文本字符串在路径标记语法中定义。路径几何类在PathGeometry类中进行了描述。当为WPF环境定义路径时,Y轴方向为向下。Y轴适用于PDF环境。
注意世界任何地方的程序员使用除了句点之外的数字小数分隔符。表示路径的文本字符串输入必须完全按照路径标记语法中的定义来构造。具有分数的小数必须使用周期,而不考虑世界区域。如果在x和y值之间使用可选分隔符,它必须是逗号。如果字符串是由另一个应用程序生成的,请确保使用PathGeometry.ToString(System.Globalization.CultureInfo.InvariantCulture)调用PathGeometry ToString。换句话说,Microsoft的PathGeometry.Parse方法将无法读取意大利产生的文本字符串,例如,通过PathGeometry.ToString方法,而不将IFormatProvider设置为InvariantCulture。
有三种方法来为WPF应用程序定义画刷。所有这些方法将同时设置画笔不透明度。
- 请参阅SolidColorBrush类
- 请参阅LinearGradientBrush类
- 请参阅RadialGradientBrush类
有五种方法为所有应用程序定义画笔。所有这些方法将同时设置画笔不透明度。
- 将画笔设置为。
- 将画笔设置为
- 将画笔设置为
- 将画笔设置为
- 将画笔设置为
如果你想让类将画笔设置为当前选择的画笔,调用方法。
有一种方法为WPF应用程序定义笔。调用方法与类(请参阅 Pen类)。注意,属性必须是。笔类包含绘制线所需的所有信息,例如颜色和宽度。
有一种方法为所有应用程序定义笔。调用与参数。color参数定义了alpha,红,绿和蓝色分量。要设置其他笔特性,请设置以下任何或全部属性和方法:
如果您希望类将笔设置为当前选择的笔调用方法。
一旦类设置了绘制路径所需的所有信息,调用方法。DrawWPFPath类基于路径边界框和绘制矩形和对齐,计算将输入路径转换为绘图矩形所需的变换矩阵。对齐零(默认值)将拉伸路径以适合绘图区域。所有其他对齐值根据参数枚举值在绘图区域中定位路径。
默认情况下,PDF成像模型会将对象(形状,线条,文本和图像)不透明地绘制到页面上。每个新对象完全掩盖了它下面的图像。PDF有两种机制来改变这种行为不透明度和混合。图形状态字典具有用于描边(笔)和非描边(刷)操作的不透明度值。完全不透明的不透明度值为1.0,完全透明度为0.0。不透明度值对应于颜色结构的α分量,使得1.0为255,α为0。如果不透明度值为0.5,则在页面上绘制的新对象将是50%透明的。要设置不透明度,请调用线或方法的形状的方法。混合是将页面上的颜色与正在绘制的新项目的颜色组合的过程。要设置一个bland模式调用的方法。参数是e枚举。有关详细说明,请参阅PDF规格文档的7.2.4混合模式。例如,请参见第8页。
文档链接允许PDF文档用户单击链接并跳转到文档的另一部分。添加文档链接分为两部分。目标定义为位置标记。位置标记必须具有唯一的名称,范围(或)和文档位置(页面和位置)。范围可用于文档链接或命名目标或两者。第二部分是链接位置。这两个部分可以按任何顺序定义。他们被绑在一起的名字。名称区分大小写。许多链接可以指向同一位置标记。
命名目标是PDF文档中的目标。它们使用位置标记以与文档链接相同的方式定义。范围必须设置为。当诸如Adobe Acrobat的PDF阅读器打开PDF文档时,它可以在查看窗口中显示目标时打开文档。
要嵌入位置标记,调用的方法。注意:名称区分大小写。
添加链接位置调用PdfPage的AddLinkLocation方法。
有关命名目的地的详细信息,请参阅Adobe PDF文件规范“PDF参考,第六版,Adobe便携式文档格式版本1.7,2006年11月”。第582页的表8.2。
- (无参数):显示页面,其内容放大刚好足以适合水平和垂直窗口内的整个页面。
- (1 arg Top):显示页面,垂直坐标顶部位于窗口的顶部边缘,并且页面的内容放大刚好足以适合窗口内页面的整个宽度。
- (1 arg Left):显示页面,水平坐标左边位于窗口的左边缘,页面的内容放大刚好足以适合窗口内页面的整个高度。
- (4 args Left Bottom Right Top):显示页面,其内容被放大,刚好足以适合由水平和垂直方向的窗口内的左,右,底和坐标指定的矩形。
- (无参数):显示页面,其内容放大刚刚足以适合水平和垂直的窗口内的整个边界框。
- (1 arg Top):显示页面,垂直坐标顶部位于窗口的顶部边缘,页面的内容放大刚好足以适合窗口内边界框的整个宽度。
- (1 arg Left):显示页面,水平坐标左边位于窗口的左边缘,页面的内容放大刚好足以适合窗口内其边界框的整个高度。
PDF阅读器的调用参数在Adobe的“打开PDF文件的参数”中定义。如果PDF在台式计算机上打开,呼叫线路必须是:
“path AcroRd32.exe”/ A“nameddest = ChapterXX”“path Document.pdf”
如果PDF文档由网页中的链接指向,则目标将附加到链接:
<a href="http://example.org/Document.pdf#ChapterXX">目标说明</a>
或者:<a href="http://example.org/Document.pdf#namedsest=ChapterXX">目标说明</a>
集成到您的应用程序需要以下步骤。在开发区域中安装附加文件。启动Visual C#程序并打开您的应用程序。转到解决方案资源管理器,右键单击引用,然后选择添加引用。
选择“浏览”选项卡,并将文件系统导航到的位置。当您的应用程序发布时,必须包含代码> PdfFileWriter.dll。
源代码文档作为帮助文件提供。该文件由Sandcastle生成。结果看起来像Microsoft文档页。
如果要访问项目的源代码,请在开发区域中安装项目。该会在目录中。
使用此库将以下语句添加到所有源模块。
如果您打算使用图表,您需要添加引用:。在每个源模块使用你需要添加
本节介绍PDF文件编写器C#类库到您的应用程序的集成。测试程序程序是对自己的应用程序的模拟。当按下“文章示例”按钮时,程序将执行源文件中的代码。上图显示了生成的PDF文件。此方法演示了如何创建一个包含一些文本和图形的页面文档。通过这个例子,你应该有一个很好的了解的过程。其他示例按钮生成各种PDF文档。总的来说,实际上这个库的每个特征都通过这些实施例来证明。
调试复选框(如果选中)将创建一个PDF文件,可以使用文本编辑器查看,但无法加载到PDF阅读器。生成的文件未压缩,图像和字体文件将替换为文本占位符。调试复选框应仅用于调试。
TestPdfFileWriter程序是使用Microsoft Visual C#2012开发的。它已针对Windows XP,Vista,7和8进行了测试。
下面的测试方法演示了创建PDF文件的介绍中描述的六个步骤。当您按下演示程序的“文章示例”按钮时,将执行该方法。以下小节详细描述每个步骤。
该方法创建此示例中使用的所有字体资源。要查看可用于任何字体的所有字符,请按“字体家庭”按钮。选择一个族并查看为每个字符定义的字形。要查看单个字形按下视图或双击。
该方法为示例区域定义背景图案资源。模式是在浅蓝色背景白色的单词“PdfFileWriter”。该模式由两行重复关键字组成。这两条线偏移半字长度。
如果你想找到有趣的模式,在互联网上搜索公司的目录制作floor或wall tiles
该方法在具有背景水印图案的示例区域周围绘制框架。模式资源在前面的小节中定义。
该方法是从线和贝塞尔曲线绘制椭圆和构造路径的示例。
该方法是绘制两个条形码EAN-13和Code-128的示例
该方法在页面中心绘制两个标题线。第一行是用大纲特殊效果绘制文本。
该方法绘制具有圆角的矩形。该区域填充有砖图案。本类是一般类定义划分模式。该类有两个静态方法来创建特定模式。
绘制砖墙图案并绘制织造图案。
在我
在类加载图像和计算可以适合用户坐标给定的图像大小和保留原始宽高比最大尺寸。在绘制图像之前,我们创建一个椭圆形剪切路径以剪切图像。
该方法通过定义中心线的两端来显示心形。类的方法是绘制形成路径的两个对称贝塞尔曲线的特殊情况。
该方法是定义图表并将其绘制到PDF文档的示例。
该方法是使用类的示例。本类格式文本,以适应列中。可以使用字体的样式和大小的真实性来绘制文本。
该方法是订单输入表单或发票的示例。它是数据表支持的一个示例。它演示使用的,以及类。
本文以及任何相关的源代码和文件均已获得代码项目开放许可证(CPOL)许可。
加拿大 Uzi格兰诺 格兰 科技有限公司
该文由小居工作室原创(:2482052910) 翻译并提供解答支持,原文地址:Pdf File Writer 中文应用(PDF文件编写器C#类库):http://www.cnblogs.com/wjs5943283/p/6528853.html
版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/rfx/62537.html