使用图元文件
图元文件(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),你甚至可以编辑这些文字: