Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从Delphi打印基于注释图像(TPicture)的文档的最佳工具[实践]_Delphi_Printing_Components_Delphi 2010 - Fatal编程技术网

从Delphi打印基于注释图像(TPicture)的文档的最佳工具[实践]

从Delphi打印基于注释图像(TPicture)的文档的最佳工具[实践],delphi,printing,components,delphi-2010,Delphi,Printing,Components,Delphi 2010,大多数Delphi应用程序似乎分为两类:以数据库为中心的应用程序,它们使用报表系统满足所有打印需求,以及不需要打印的应用程序 对于那些被排除在外的中间群体(非数据库打印、非报告系统),有一些组件可以提供帮助。例如,从产品生命周期的早期起,我就一直是Developer Express“Express Printing System”的客户。用于打印出任何组件(网格、电子表格等),该组件也是帮助我解决问题的Developer Express打印系统组件 到目前为止还不错。我要寻找的是另一种方法(在D

大多数Delphi应用程序似乎分为两类:以数据库为中心的应用程序,它们使用报表系统满足所有打印需求,以及不需要打印的应用程序

对于那些被排除在外的中间群体(非数据库打印、非报告系统),有一些组件可以提供帮助。例如,从产品生命周期的早期起,我就一直是Developer Express“Express Printing System”的客户。用于打印出任何组件(网格、电子表格等),该组件也是帮助我解决问题的Developer Express打印系统组件

到目前为止还不错。我要寻找的是另一种方法(在Delphi 2010中)来生成一个或两个页面的打印输出,通常包含:

  • 标题和标题
  • 页眉和页脚
  • 能够包含一张大图片,这是页面上的主要内容。在本例中,图片(位图)是我自定义绘制的图表
  • 100%防弹输出质量,适用于人类已知的每种windows版本,以及人类已知的每种打印机
[更新:我以前在彩色激光打印机上使用Developer Express打印组件时遇到了一些奇怪的问题,我现在非常希望我能解决这些问题。]。。。尽管如此,我仍然认为,看看其他打印组件是明智的,这样我的“工具箱”就可以为我当前和未来的项目提供可能的解决方案,包括一种生成打印机页面的简单可靠的方法

所以我真的需要一些建议。我对报告系统有偏见,即使是基于代码的报告系统,但我正在考虑快速报告,尽管我对它的使用与典型的用例场景相去甚远。打印页面中没有涉及行和列数据集

更新/最终:看起来FastReports很棒。它可以轻松地将应用程序内存中的任何数据(如图像)传输到当前报告页面,如下所示:

procedure TForm2.Button1Click(Sender: TObject);
var
  pic:TfrxPictureView;
begin
  pic := frxReport1.FindObject('Picture1') as TfrxPictureView;
  pic.Picture.Assign(Image1.Picture);

  frxReport1.ShowReport;

  frxReport1.Print;
end;

我在所有的打印解决方案中都使用了来自的HtmlViewer组件

当然,您必须创建一个html页面(或两个pagews),但一旦可以创建,您就可以做任何您喜欢的事情(或者至少可以做html标准提供的事情)。HtmlViewer有一个预览窗口,可以用作通用的“报告”查看器,并可以立即打印输出

你会惊讶于你能用html做什么,而且很容易改变“报告”,因为它只是简单的html


如果你这样做的话,我很乐意为你解答任何问题。该组件从几年前开始是免费的。因此,这可能是解决您问题的一个简单而廉价的方法。

快速报告非常适合我的需要。他们甚至有一个脚本系统。如果对你来说足够好,你可以试试


不幸的是,虽然该产品深受用户喜爱,但它是“以数据库为中心的”,因此不适合我的需要。我真的很感激这个建议,下次我有一个需要打印的表格时,我会考虑它。我不会说它是“以数据库为中心”的,它确实支持数据库,但这是意料之中的事。你可以很容易地显示任何数据,我用它来打印我的非数据库相关对象很好,给它一个更好的外观…好吧,我一定是误解了。这对任何通用打印需求也很有效。如果您不需要最新版本中的某些高级功能,免费报告组件()甚至可以正常工作。PrintArray和PrintStringList演示使用TfrxUserDataSet。至于pictureView,您可以使用:(frxReport1.FindObject('Picture1')作为TfrxPictureView)加载PictureFromStream(…这是一个有趣的想法。代码似乎是在unicode之前(Delphi 2006),但对我来说,移植它可能并不难。你已经将它移植到Delphi 2009/2010了吗?不过,我认为既然我的东西99%都是图像,我就只能用一组小故障来换另一组。我必须输出.html和.png(或其他图像格式)文件到磁盘,作为一个中间步骤,我现在不需要。它现在100%在内存中。不过这真的很有趣,我很感激被人指着它。它已经被其他人移植到2010年了(如果你需要的话,我可以指给你看)。如果愿意,您可以在资源中使用图像。如果在html语法中找不到图像,则组件使用事件请求图像(例如,在磁盘上)。这很容易设置(如我所说,我很乐意为您提供帮助)到目前为止,它确实对我起了很好的作用。到目前为止,我还不需要任何我的软件的报告工具(以DB为中心或其他方式)。如果你发现HTML有吸引力,我也会考虑BSSASA的嵌入式Web浏览器,它在D2010中工作,并且要求IE6+它看起来像文件中间转储到磁盘。(磁盘上的html)将是这种方法所必需的,这使我不太可能这样做。我永远不会推荐在哪个版本中使用IE的组件。您正在创建依赖关系(更不用说版本之间的呈现差异).HtmlViewer最吸引人的地方是它是用Delphi编写的。它可能无法实现所有标准,但至少你知道在使用之前会发生什么(虽然它的功能实现得很好,但它实现了大多数html和css标准。足够了。当然,您可以将html放入资源中。