Показать сообщение отдельно
  #5  
Старый 29.09.2016, 18:17
P.Makal P.Makal вне форума
Прохожий
 
Регистрация: 28.09.2016
Сообщения: 3
Версия Delphi: Delphi xe10
Репутация: 10
По умолчанию

Смирился с тем и загрузил приложение на телефон, но вот такая ошибка:
java.lang.lllegal.StateException:Current page not finished!
Как я понимаю изображение не влезло в лист а4, но вроде оно не таких больших размеров.
Вот код конечный:
Код:
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;
Вот это целый код.
Вторую страницу я накидал заранее для проверки. Она нормально идет
В чем ошибка. По вашему вопросу:Искал на форумах, чтобы можно было без компонентов, вот и нашёл на java
Ответить с цитированием