0

Ich muss PDF-Dokument mit Daten aus der Datenbank generieren. Ich habe eine Menge Beispiele gesehen, aber ich konnte diese Daten nicht aus der Datenbank in ein PDF bekommen.Android - So erstellen Sie PDF-Dokument oder printDocument mit Daten aus der Datenbank

Ich habe zwei Modelle Empfang und Logs (Eingang has_many Logs). Ich möchte Daten vom Empfang in pdf und dann alle Protokolle erhalten, die in diesem pdf zu Eingang gehören. Danach muss ich das PDF-Dokument Formular Android-Gerät drucken.

Hier ist mein Belegmodell.

@Table(name = "Receipt") 
public class Receipt extends Model { 
    @Column(name="Place") 
    String place; 
    @Column(name="ShippingNumber") 
    String shippingNumber; 
    @Column(name="Warehouse") 
    String warehouse; 
    @Column(name="Carrier") 
    String carrier; 
    @Column(name="LicencePlate") 
    String licencePlate; 
    @Column(name = "Driver") 
    String driver; 
    @Column(name = "Customer") 
    String customer; 
    @Column(name= "DestWarehouse") 
    String destWarehouse; 
    @Column(name = "Employee") 
    String employee; 
    @Column(name = "PriceType") 
    String priceType; 
    @Column(name = "PriceCorrection") 
    Integer priceCorrection; 
    @Column(name = "CreatedAt") 
    Date createdAt; 
    public List<Logs> getLogs(){ 
     return getMany(Logs.class,"Receipt"); 
    } 

Und hier ist mein Logs-Modell.

@Table(name = "Logs") 
public class Logs extends Model { 
     @Column(name="PlateNumber") 
     String plate_number; 
     @Column(name="SortID") 
     String sort_id; 
     @Column(name="Grade") 
     String grade; 
     @Column(name = "Diametar") 
     double diameter; 
     @Column(name="Length") 
     double length; 
     @Column(name="CreatedAt") 
     Date createdAt; 
     @Column(name="Receipt") 
     Receipt receipt; 
    } 

Ich werde auch Code einfügen, damit Sie sehen können, wie ich Receipts und Logs anzeigen.
So zeige ich Protokolle an.

public LogsArrayAdapter(List<Logs> logsList) { 
      inflater = LayoutInflater.from(DisplayLogs.this); 
      this.logsList = logsList; 
     } 
     @Override 
     public int getCount() { 
      return logsList.size(); 
     } 
     @Override 
     public Object getItem(int position) { 
      return logsList.get(position); 
     } 
     @Override 
     public long getItemId(int position) { 
      return logsList.get(position).getId(); 
     } 
     @Override 
     public View getView(final int position, View convertView, ViewGroup parent) { 
      if (convertView == null) { 
       convertView = inflater.inflate(R.layout.activity_display_logs, parent, false); 
      } 
      Logs log = logsList.get(position); 
      ((TextView) convertView.findViewById(R.id.textNumber)).setText(log.plate_number); 
      ((TextView) convertView.findViewById(R.id.textSort)).setText(log.sort_id); 
      ((TextView) convertView.findViewById(R.id.textGrade)).setText(log.grade); 
      ((TextView) convertView.findViewById(R.id.textDiameter)).setText(log.diameter + "cm"); 
      ((TextView) convertView.findViewById(R.id.textLength)).setText(log.length + "cm"); 
      Log.d("Value", log.createdAt.toString()); 
      ((TextView) convertView.findViewById(R.id.textAmount)).setText(String.format("%.2f m3", log.getM3())); 
      return convertView; 
    } 

Und das ist, wie ich meine Quittungen anzeigen.

public ReceiptAdapter(List<Receipt> receiptList) { 
      inflater = LayoutInflater.from(DisplayRecepit.this); 
      this.receiptList = receiptList; 
     } 
     @Override 
     public int getCount() { 
      return receiptList.size(); 
     } 
     @Override 
     public Object getItem(int position) { 
      return receiptList.get(position); 
     } 
     @Override 
     public long getItemId(int position) { 
      return receiptList.get(position).getId(); 
     } 
     @Override 
     public View getView(int position, View convertView, ViewGroup parent) { 
      if (convertView == null) { 
       convertView = inflater.inflate(R.layout.activity_display_recepit, parent, false); 
      } 
      Receipt receipt = receiptList.get(position); 
       ((TextView) convertView.findViewById(R.id.rPlace)).setText(receipt.place); 
      ((TextView) convertView.findViewById(R.id.rShipNumb)).setText(receipt.shippingNumber); 
      ((TextView) convertView.findViewById(R.id.rEmployee)).setText(receipt.employee); 
      ((TextView) convertView.findViewById(R.id.rWarehouse)).setText(receipt.warehouse); 
      ((TextView) convertView.findViewById(R.id.rCarrier)).setText(receipt.carrier); 
      ((TextView) convertView.findViewById(R.id.rLicence)).setText(receipt.licencePlate); 
      ((TextView) convertView.findViewById(R.id.rDriver)).setText(receipt.driver); 
      ((TextView) convertView.findViewById(R.id.rCustomer)).setText(receipt.customer); 
      ((TextView) convertView.findViewById(R.id.rDestWareh)).setText(receipt.destWarehouse); 
       ((TextView) convertView.findViewById(R.id.rCreatedAt)).setText(new SimpleDateFormat("dd.MM.yyyy HH:mm").format(receipt.createdAt)); 
      return convertView; 
} 

Jeder Rat und jede Hilfe ist mehr als willkommen. Ich bin wirklich dabei und brauche Hilfe.

FRAGEN: Ist es besser und einfacher, PDF-Dokument mit Daten aus der Datenbank zu generieren und dann drucken oder verwenden Sie Android printDocument() und direkt mit der Datenbank arbeiten?
Wie übergeben Sie Variablen aus der Datenbank in pdfDocument oder printDocument?

Antwort

0

Sie müssen zunächst eine Klasse erstellen, die SQLiteOpenHelper erweitert, und dann Ihre Datenbank erstellen. Sobald Sie alle Ihre Daten dort haben, müssen Sie zunächst mit einem Cursor extrahieren und dann die Daten halten. Mit dieser folgenden Klasse können Sie ein PDF-Dokument erstellen: http://developer.android.com/reference/android/graphics/pdf/PdfDocument.html

Das Modell, das Sie hier gezeigt haben, muss zuerst in SQL-Anweisungen übersetzt werden, die Android verstehen kann. Das aktuelle Modell kann von Android nicht direkt verstanden werden.

Verwandte Themen