使用Delphi从Android设备打印报告

时间:2015-09-11 07:10:16

标签: android delphi firemonkey

我正在使用Delphi XE8开发应用程序,我需要打印报告。

报告包含更多页面,因此无法创建简单图像并进行共享。

想法是使用FMX.Printer。

但TPrintDialog仅适用于Windows而不适用于Android。 如何从云打印列表中选择打印机?

你有什么建议吗?

由于

2 个答案:

答案 0 :(得分:0)

如果设备上安装了官方Google Cloud Print应用,那么您应该能够按照此问题的答案中所述使用Intent访问它:Print Intent for Google Cloud Print App

Intent printIntent = new Intent(Intent.ACTION_SEND);
printIntent.setType("text/html");
printIntent.putExtra(Intent.EXTRA_TITLE, "some cool title for your document");
printIntent.putExtra(Intent.EXTRA_STREAM, uri);

startActivity(printIntent);

我猜Android会显示一个包含可用选项的对话框,包括Cloud Print打印机。

Google云打印文档:https://developers.google.com/cloud-print/docs/android

用于检索打印机列表的API:https://developers.google.com/cloud-print/docs/proxyinterfaces#list

答案 1 :(得分:0)

将它放入Delphi应该看起来像:

uses
...
  FMX.Platform.Android,
  Androidapi.Helpers,
  Androidapi.JNI.GraphicsContentViewText,
  Androidapi.JNI.Embarcadero,
...

var
  printIntent: JIntent;
begin
  printIntent := TJIntent.Create;
  printIntent.setAction(TJIntent.JavaClass.ACTION_SEND);
  printIntent.setType(StringToJString('text/html'));
  printIntent.putExtra(TJIntent.JavaClass.EXTRA_TITLE, StringToJString('Testing print from Android'));
  printIntent.putExtra(TJIntent.JavaClass.EXTRA_STREAM, StringToJString(uri));
  if MainActivity.getPackageManager.queryIntentActivities(printIntent, TJPackageManager.JavaClass.MATCH_DEFAULT_ONLY).size > 0 then //Checks if there is at least one application capable of receiving the intent.
    MainActivity.startActivity(printIntent) //Calls startActivity() to send the intent to the system.
  else
    ShowMessage('Receiver not found');

基于http://docwiki.embarcadero.com/CodeExamples/Seattle/en/FMX.Android_Intents_Sample

的示例代码