使用图元文件

图元文件(WMF和EMF)是两种由微软设计的矢量图形文件格式,PDFCreator对这两种文件格式提供了完美的支持。

很多专业设计软件都能导出为WMF和EMF格式,这样我们就能完成一些用PDFCreator实现起来比较繁琐的设计任务。

你可能会觉得用PNG、JPG和BMP等格式不也可以吗? 确实是可以的,但是使用图元文件的好处是:

1、支持无损缩放,因为PDFCReator读取的不是位图,而是图元文件中的绘图命令,然后执行这些命令绘图。

2、正因为如此,PDFCreator可以识别图元文件中的文字,将其作为普通文字而不是图形进行绘制,这样图片中的文字可以和普通文字一样进行复制编辑。

示例

请先打开CaseStyudy目录下的文件"PDFCreator示例.Table",选择"传真"表后,再运行下面的代码。

本实例任务是根据传真表的当前行生成一个传真,我已经实现设计好了这个传真的格式,保存在Images子目录中,文件名为"faxcover.emf"。

参考代码如下:

Dim file As String = "c:\temp\test.pdf"
Dim
dr As Row = Tables("传真").Current
Dim
fnt As New Font("Courier New", 10, fontstyle.Bold)
Dim
pdc As New PDFCreator()
Dim
rect As RectangleF = pdc.PageRectangle
Dim
img As Image = GetImage("faxcover.emf") '读取图元文件
pdc.DrawImage(img, rect, ContentAlignment.MiddleCenter, Pdf.ImageSizeModeEnum.Clip)
'绘制图元文件
Dim
sf As StringFormat = New StringFormat()
sf.LineAlignment = StringAlignment.Center
sf.Alignment = StringAlignment.Near

' date

rect =
New RectangleF(2.2 * 72, 2.7 * 72, 2 * 72, 0.4 * 72)
pdc.DrawString(
Date.Today, fnt, Brushes.Black, rect, sf)
' subject

rect.X = 5.7 * 72
pdc.DrawString(dr(
"subject"), fnt, Brushes.Black, rect, sf)
rect.X = 2.2 * 72

' to

rect.Y = rect.Y + 0.6 * 72
rect.Height = 0.8 * 72
pdc.DrawString(dr(
"to"), fnt, Brushes.Black, rect, sf)
' phone

rect.Y = rect.Y + 0.8 * 72
pdc.DrawString(dr(
"phone"), fnt, Brushes.Black, rect, sf)
' memo

rect.X = 1 * 72
rect.Y = 6 * 72
rect.Height = 4 * 72
rect.Width = 6 * 72
pdc.DrawString(dr(
"Memo"), fnt, Brushes.Black, rect)
pdc.Save(file)
Process.Start(file)
'打开文件

代码以72为单位进行内容的定位,这样以后需要缩放图元文件时,只需按比例缩放72这个数字,然后批量替换即可。

生成的文档为如下,原来图表中的文字,不仅可以像普通文字一样进行复制,如果你使用的软件允许的话(例如WPS),你甚至可以编辑这些文字:


本页地址:http://www.foxtable.com/webhelp/topics/6098.htm