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?