怎么把内容打印/输出到图形 ( 积分: 100 )

  • 主题发起人 主题发起人 LaMer
  • 开始时间 开始时间
L

LaMer

Unregistered / Unconfirmed
GUEST, unregistred user!
比如一个A4幅面的内容,包括表格和文字,打印到一个A4幅面的JPG文件中。
换句话说就是,不打印到打印机,而是输出到一个JPG图形文件中。
 
比如一个A4幅面的内容,包括表格和文字,打印到一个A4幅面的JPG文件中。
换句话说就是,不打印到打印机,而是输出到一个JPG图形文件中。
 
原始的东西是什么,在Canvas上面吗?
有个打印网页的例子,可以参考一下
http://www.2ccc.com/article.asp?articleid=1423
procedure TForm1.Button1Click(Sender: TObject);
var
do
c: IHTMLDocument2;
ViewObject: IViewObject;
sourceDrawRect: TRect;
a, getjpg: TBitMap;
i, m: integer;
pdest, psour: hbitmap;
jpg: tjpegimage;
begin
do
c := WebBrowser.Document as IHTMLDocument2;
if Webbrowser.Document <> nil then
try
webbrowser.Document.QueryInterface(IViewObject, ViewObject);
if ViewObject <> nil then
try
do
c.Get_ParentWindow.Scroll(0, 0);
//跳到网页头
getjpg := TBitMap.Create();
getjpg.PixelFormat := pf24bit;
getjpg.Height :=do
c.Body.getAttribute('scrollHeight', 0);
getjpg.Width :=do
c.Body.getAttribute('scrollwidth', 0);
pdest := getjpg.Canvas.Handle;
m := Trunc(doc.Body.getAttribute('ScrollHeight', 0) / (doc.Body.getAttribute('offsetHeight', 0) - 20));
i := Trunc(doc.Body.getAttribute('Scrollwidth', 0) / (doc.Body.getAttribute('offsetwidth', 0) - 20));
for i := 0 to ido
begin
for m := 0 to m + 1do
begin
a := TBitMap.Create();
a.Height :=do
c.Body.getAttribute('offsetHeight', 0);
a.Width :=do
c.Body.getAttribute('offsetwidth', 0);
psour := a.Canvas.handle;
sourceDrawRect := Rect(0, 0, a.Width, a.Height);
ViewObject.Draw(DVASPECT_CONTENT, 1, nil, nil, Self.Handle, a.Canvas.Handle, @sourceDrawRect, nil, nil, 0);
bitblt(pdest,do
c.Body.getAttribute('scrollLeft', 0),do
c.Body.getAttribute('Scrolltop', 0), a.Width, a.Height, psour, 2, 2, srccopy);
do
c.Get_ParentWindow.Scroll(doc.Body.getAttribute('scrollLeft', 0),do
c.Body.getAttribute('offsetHeight', 0) +do
c.Body.getAttribute('Scrolltop', 0) - GetSystemMetrics(SM_CXVSCROLL) - 24);
a.Free;
end;
do
c.Get_ParentWindow.Scroll(doc.Body.getAttribute('offsetwidth', 0) +do
c.Body.getAttribute('scrollLeft', 0) - GetSystemMetrics(SM_CXVSCROLL) - 24, 0);
end;
jpg := tjpegimage.Create;
jpg.Assign(getjpg);
getjpg.Free;
jpg.SaveToFile('c:/test.jpg');
jpg.Free;
finally
ViewObject._Release;
end;
except
end;
end;
 
WORD转换为图片怎么样????
var
Clipboard : TClipboard;
bmp : TBitmap;
begin
wordapplication.ActiveDocument.Content.SetRange(0,Wordapplication.Selection.StoryLength);
wordapplication.ActiveDocument.Content.Select;
wordapplication.ActiveDocument.Content.Copy;
//全选word内容并且复制
Clipboard := TClipboard.Create;
image1.Picture.Assign(Clipboard);
bmp := TBitmap.Create;
with Bmpdo

begin
Height:=image1.Picture.Metafile.Height;
Width:=image1.Picture.Metafile.Width;
Canvas.Draw(0,0,image1.Picture.Metafile);
SaveToFile('d:/test.bmp');
Free;
end;
Clipboard.Free;
end;

想要分页的
procedure TForm1.Button1Click(Sender: TObject);
var
what,which,count,name : olevariant;
begin
what := wdGoToPage;
which := wdGoToNext;
count := 0;
name := '10';
Wordapplication.Selection.GoTo_(what,which,count,name);//转到第10页
Wordapplication.Selection.SelectCurrentIndent;//选择此页
Wordapplication.Selection.Copy;//复制
// 其他操作和上一个帖子方法一样了
end;
var
rg : Range;
begin
rg := Wordapplication.Selection.GoTo_(what,which,count,name);
end;
rg.start 每次都不同,如果出现一样的,那就是超出了页的范围
就不用再转化了
 
谢谢二位,不是WORD或者CONVAS,而是把报表(比如Fast report)中设计好的内容,不送到打印机,但输出到JPG文件。
 
这个问题非常简单,如果你是用Fast report,只需额外添加一个frJPEGExport控件,
什么都不用设置,这个控件是安装Fast report时自动安装的,在Fastreport exports页里
添加后运行程序,你在打印预览窗口时按工具条上的保存,会发现多了一个导出JPG的类型
 
FastReport里面有个控件frxJPEGExport1
看看Demo
 
奇怪,我回贴时间比楼上的早,为什么我的帖子还在后面呢[:D][:D]
 
是不是2张图像和在一起阿
 
真的非常感谢,这个导出按钮在哪个版本里有啊?我用的是2.47,找来找去找不到这个控件。不知道这个控件的命令行怎么写。
 
去下一个3的版本,旧的版本没有
http://www.2ccc.com/search.asp?KeyWord=fastreport
 
后退
顶部