uses Androidapi.JNI.GraphicsContentViewText, Androidapi.JNI.JavaTypes,
Androidapi.JNI.Net, Androidapi.Helpers, System.IOUtils,FMX.Surfaces,FMX.Helpers.Android,Androidapi.JNI.App;
procedure TFormMain.ButtonCreatePdfClick(Sender: TObject);
var
Document: JPdfDocument;
PageInfo: JPdfDocument_PageInfo;
Page: JPdfDocument_Page;
Canvas: JCanvas;
Paint: JPaint;
Rect: JRectF;
FileName: string;
OutputStream: JFileOutputStream;
Intent: JIntent;
mBitmap:JBitmap;
Surface:TBitmapSurface;
begin
// create Pdf document
Document := TJPdfDocument.JavaClass.init;
try
// create page 1
PageInfo := TJPageInfo_Builder.JavaClass.init(100, 100, 1).create;
Page := Document.startPage(PageInfo);
Canvas := Page.getCanvas;
Paint := TJPaint.JavaClass.init;
Paint.setARGB($FF, 0, 0, $FF);
Surface.Assign(Image1.Bitmap);
SurfaceToJBitmap(Surface, mBitmap);
Canvas.drawBitmap(mBitmap,0,0,Paint);
Surface.Free;
Document.finishPage(Page);
// create page 2
PageInfo := TJPageInfo_Builder.JavaClass.init(100, 100, 2).create;
Page := Document.startPage(PageInfo);
Canvas := Page.getCanvas;
Paint := TJPaint.JavaClass.init;
Paint.setARGB($FF, $FF, 0, 0);
Canvas.drawLine(10, 10, 90, 10, Paint);
Paint.setStrokeWidth(1);
Paint.setARGB($FF, 0, $FF, 0);
Canvas.drawLine(10, 20, 90, 20, Paint);
Paint.setStrokeWidth(2);
Paint.setARGB($FF, 0, 0, $FF);
Canvas.drawLine(10, 30, 90, 30, Paint);
Paint.setARGB($FF, $FF, $FF, 0);
Canvas.drawRect(10, 40, 90, 60, Paint);
Rect := TJRectF.JavaClass.init;
Rect.&set(10, 70, 90, 90);
Paint.setARGB($FF, $FF, 0, $FF);
Canvas.drawRoundRect(Rect, 5, 5, Paint);
Document.finishPage(Page);
// write PDF document to file
FileName := TPath.GetSharedDocumentsPath + PathDelim + 'demo.pdf';
OutputStream := TJFileOutputStream.JavaClass.init(StringToJString(FileName));
try
Document.writeTo(OutputStream);
finally
OutputStream.close;
end;
finally
Document.close;
end;
// start PDF viewer
Intent := TJIntent.JavaClass.init;
Intent.setAction(TJIntent.JavaClass.ACTION_VIEW);
Intent.setDataAndType(FileNameToUri(FileName), StringToJString('application/pdf'));
Intent.setFlags(TJIntent.JavaClass.FLAG_ACTIVITY_NO_HISTORY or TJIntent.JavaClass.FLAG_ACTIVITY_CLEAR_TOP);
SharedActivity.StartActivity(Intent);
end;