我正在使用Delphi XE8开发应用程序,我需要打印报告。
报告包含更多页面,因此无法创建简单图像并进行共享。
想法是使用FMX.Printer。
但TPrintDialog仅适用于Windows而不适用于Android。 如何从云打印列表中选择打印机?
你有什么建议吗?
由于
答案 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
的示例代码