я получаю эту ошибку [2019-07-12 00:15:02] production.ERROR: Undefined index: {"userId":**,"email":"***********","exception":"[object] (ErrorException(code: 0): Undefined index: at /storage/ssd5/387/10173387/vendor/dompdf/dompdf/lib/Cpdf.php:3923)
[stacktrace]
на моем живом сайте.Поэтому я проверяю Cpdf.php и перехожу к строке 3923, она находится внутри public function getFontHeight
, а ошибка в $font=$this->fonts[$this->currentFont];
, как решить эту проблему?нет форума, ответов или обсуждения этой ошибки, так что я все равно застрял
, у меня есть 4 html для рендеринга dompdf, 1 для счета и 3 для отчетов.Нет проблем с загрузкой или потоковым инвойсом, но другие 3 отчета - это ошибка 3923
, вот мой контроллер инвойса
public function print_pemesanan($id)
{
set_time_limit(300);
$idp = $id;
$datap = \App\Pemesanan::where('id_pemesanan',$id)->first();
$result = \App\DPemesanan::where('id_pemesanan', $id)->get();
$result2 = \App\TPemesanan::join('t_dpemesanan','t_tpemesanan.id_dpemesanan','=','t_dpemesanan.id_dpemesanan')->join('t_stock','t_dpemesanan.id_stock','=','t_stock.id_stock')->where('t_tpemesanan.id_pemesanan',$id)->get();
$sum = \App\DPemesanan::select(DB::raw('sum(harga_pemesanan) as harga_total'))->where('id_pemesanan', $id)->groupBy('id_pemesanan')->get();
$sum2 = \App\TPemesanan::where('id_pemesanan',$id)->whereIn('status_tpemesanan',[1,2])->select(DB::raw('sum(harga_tpemesanan) as harga_total'))->groupBy('id_pemesanan')->first();
$pdf = PDF::loadview('mitra/pemesanan/faktur', compact('idp','datap','result','result2','sum','sum2'));
return $pdf->download('faktur_'.$id,'.pdf');
}
вот мой html-инвойс, представленный dompdf (успех)
<html>
<head>
<link rel="stylesheet" href="{{ asset('assets') }}/bower_components/bootstrap/dist/css/bootstrap.min.css">
<!-- Font Awesome -->
<link rel="stylesheet" href="{{ asset('assets') }}/bower_components/font-awesome/css/font-awesome.min.css">
<!-- Ionicons -->
<link rel="stylesheet" href="{{ asset('assets') }}/bower_components/Ionicons/css/ionicons.min.css">
<!-- Theme style -->
<link rel="stylesheet" href="{{ asset('assets') }}/dist/css/AdminLTE.min.css">
<!-- AdminLTE Skins. Choose a skin from the css/skins
folder instead of downloading all of them to reduce the load. -->
<link rel="stylesheet" href="{{ asset('assets') }}/dist/css/skins/_all-skins.min.css">
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,600,700,300italic,400italic,600italic">
<style>
.no-gutters {
margin-right: 0;
margin-left: 0;
> .col,
> [class*="col-"] {
padding-right: 0;
padding-left: 0;
}
}
</style>
</head>
<body>
<div class="content-header row text-center">
<img src="{{ asset('uploads') }}/logo.jpg" width="120" height="120"><br>
</div>
<section class="content">
<div class="box box-warning box-solid">
<div class="box-header with-border">
Pesanan dari Mitra : {{ $datap->mitra->nama_mitra }} ({{ $datap->mitra->email_mitra }}),
{{ date("d-M-Y",strtotime($datap->tgl_pemesanan)) }}
</div>
<div class="box-body">
<table class="table">
<thead>
<tr>
<th>No</th>
<th>Nama Pesanan</th>
<th>Harga Satuan</th>
<th>Jumlah Pesanan</th>
<th>Harga Pesanan</th>
</tr>
</thead>
<tbody>
@foreach($result as $row)
<tr>
<td>{{ !empty($i) ? ++$i : $i = 1}}</td>
<td>{{ $row->stock->nama_stock }}</td>
<td>Rp.{{ number_format($row->stock->harga_satuan,0,',','.') }},-/{{ $row->stock->satuan }}</td>
<td>{{ $row->jumlah_pemesanan }}{{ $row->stock->satuan }}</td>
<td>Rp.{{ number_format($row->harga_pemesanan,0,',','.') }},-</td>
</tr>
@endforeach
</tbody>
</table>
</div>
<!-- /.box-body -->
<div class="box-footer">
@foreach($sum as $row)
<div class="col-sm-3 pull-right">
<label class="control-label col-sm-6">Total Harga</label>
<div class="col-sm-3">
Rp.{{ number_format($row->harga_total,0,',','.') }},-
</div>
</div>
@endforeach
</div>
<!-- /.box-footer-->
</div>
<!-- /.box -->
<div class="box box-success box-solid">
<div class="box-header with-border">
Faktur Pesanan {{ $datap->id_pemesanan }}
</div>
<div class="box-body">
<table class="table">
<thead>
<tr>
<th>No</th>
<th>Waktu Proses</th>
<th>Nama Barang Pesanan</th>
<th>Jumlah Pesanan</th>
<th>Harga Pesanan</th>
<th>Status Pesanan</th>
<th>Keterangan</th>
</tr>
</thead>
<tbody>
@foreach($result2 as $row)
<tr>
<td>{{ !empty($u) ? ++$u : $u = 1}}</td>
<td>{{ date('d-M-Y H:i:s', strtotime($row->waktu_tpemesanan)) }}</td>
<td>{{ $row->nama_stock }}</td>
<td>{{ $row->jumlah_tpemesanan }}{{ $row->satuan }}</td>
<td>Rp.{{ number_format($row->harga_tpemesanan,0,',','.') }},-</td>
@if($row->status_tpemesanan==1)
<td>Dikirim Semua</td>
@elseif($row->status_tpemesanan==2)
<td>Dikirim Sebagian</td>
@elseif($row->status_tpemesanan==3)
<td>Ditolak</td>
@endif
<td>
@if(empty($row->keterangan))
---
@else
{{ $row->keterangan }}
@endif
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
<!-- /.box-body -->
<div class="box-footer">
<div class="col-sm-3 pull-right">
<label class="control-label col-sm-6">Total Bayar</label>
<div class="col-sm-3">
Rp.{{ number_format($sum2->harga_total,0,',','.') }},-
</div>
</div>
</div>
<!-- /.box-footer-->
</div>
</section>
<!-- jQuery 3 -->
<script src="{{ asset('assets') }}/bower_components/jquery/dist/jquery.min.js"></script>
<!-- Bootstrap 3.3.7 -->
<script src="{{ asset('assets') }}/bower_components/bootstrap/dist/js/bootstrap.min.js"></script>
<!-- SlimScroll -->
<script src="{{ asset('assets') }}/bower_components/jquery-slimscroll/jquery.slimscroll.min.js"></script>
<!-- FastClick -->
<script src="{{ asset('assets') }}/bower_components/fastclick/lib/fastclick.js"></script>
<!-- AdminLTE App -->
<script src="{{ asset('assets') }}/dist/js/adminlte.min.js"></script>
<!-- AdminLTE for demo purposes -->
<script src="{{ asset('assets') }}/dist/js/demo.js"></script>
<script>
$(document).ready(function () {
$('.sidebar-menu').tree()
})
</script>
это 1 из 3 моих контроллеров отчетов
public function pemesanan_preport(Request $request)
{
set_time_limit(2000);
$tgl1 = date('Y-m-d', strtotime($request->input('tanggal_mulai')));
$tgl2 = date('Y-m-d', strtotime($request->input('sampai_tanggal')));
if($tgl1 > date('Y-m-d') || $tgl2 > date('Y-m-d')){
return redirect('upper/laporan/pemesanan')->with('error','Tanggal yang diinput tidak bisa lebih besar dari '.date('d M Y').' (hari ini)');
}elseif($tgl2 != '1970-01-01' && $tgl1 > $tgl2){
return redirect('upper/laporan/pemesanan')->with('error','Tanggal mulai tidak bisa lebih besar dari inputan tanggal sampai');
}elseif($tgl1 == '1970-01-01' && $tgl2 == '1970-01-01'){
return redirect('upper/laporan/pemesanan')->with('error','Salah satu dari kedua tanggal harus diisi');
}elseif($tgl1 == '1970-01-01'){
$p = \App\Pemesanan::whereDate('tgl_pemesanan',$tgl2)->orderBy('tgl_pemesanan','desc')->get();
//$tp = \App\TPemesanan::whereDate('waktu_tpemesanan',$tgl2)->get();
$pdf = PDF::loadview('pimpinan/laporan/pemesanan/report', compact('p','tgl1','tgl2'))->setPaper('a4','landscape');
return $pdf->download('laporan pemesanan tanggal '.date('d-M-Y', strtotime($tgl2)).'.pdf');
}elseif($tgl2 == '1970-01-01'){
$p = \App\Pemesanan::whereBetween('tgl_pemesanan',[$tgl1, date('Y-m-d')])->orderBy('tgl_pemesanan','desc')->get();
//$tp = \App\TPemesanan::whereBetween(DB::raw('date(waktu_tpemesanan)'),[$tgl1, date('Y-m-d')])->get();
$pdf = PDF::loadview('pimpinan/laporan/pemesanan/report',compact('p','tgl1','tgl2'))->setPaper('a4','landscape');
return $pdf->download('laporan pemesanan tanggal '.date('d-M-Y', strtotime($tgl1)).' sampai tanggal '.date('d-M-Y').'.pdf');
}else{
$p = \App\Pemesanan::whereBetween('tgl_pemesanan',[$tgl1,$tgl2])->orderBy('tgl_pemesanan','desc')->get();
//$tp = \App\TPemesanan::whereBetween(DB::raw('date(waktu_tpemesanan)'),[$tgl1, $tgl2])->get();
$pdf = PDF::loadview('pimpinan/laporan/pemesanan/report', compact('p','tgl1','tgl2'))->setPaper('a4','landscape');
return $pdf->download('laporan pemesanan tanggal '.date('d-M-Y', strtotime($tgl1)).' sampai tanggal '.date('d-M-Y', strtotime($tgl2)).'.pdf');
}
}
и это 1 из 3 моих html отчетов, представленных dompdf (2 других получают ту же ошибку)
<html>
<head>
<link rel="stylesheet" href="{{ asset('assets') }}/bower_components/bootstrap/dist/css/bootstrap.min.css">
<!-- Font Awesome -->
<link rel="stylesheet" href="{{ asset('assets') }}/bower_components/font-awesome/css/font-awesome.min.css">
<!-- Ionicons -->
<link rel="stylesheet" href="{{ asset('assets') }}/bower_components/Ionicons/css/ionicons.min.css">
<!-- Theme style -->
<link rel="stylesheet" href="{{ asset('assets') }}/dist/css/AdminLTE.min.css">
<!-- AdminLTE Skins. Choose a skin from the css/skins
folder instead of downloading all of them to reduce the load. -->
<link rel="stylesheet" href="{{ asset('assets') }}/dist/css/skins/_all-skins.min.css">
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,600,700,300italic,400italic,600italic">
<style>
.no-gutters {
margin-right: 0;
margin-left: 0;
> .col,
> [class*="col-"] {
padding-right: 0;
padding-left: 0;
}
}
table, td, th, tr {
border: 1px solid black !important;
}
</style>
</head>
<body>
<div class="content-header row text-center">
<img src="{{ asset('uploads') }}/logo.jpg" width="120" height="120"><br>
</div>
<section class="content">
<div class="box box-warning box-solid">
<div class="box-header">
Laporan Pemesanan
@if($tgl1 == '1970-01-01')
Tanggal <strong>{{ date('d-M-Y', strtotime($tgl2)) }}</strong>
@elseif($tgl2 == '1970-01-01')
Tanggal <strong>{{ date('d-M-Y', strtotime($tgl1)) }}</strong> Sampai <strong>{{ date('d-M-Y') }}</strong>
@else
Tanggal <strong>{{ date('d-M-Y', strtotime($tgl1)) }}</strong> Sampai <strong>{{ date('d-M-Y', strtotime($tgl2)) }}</strong>
@endif
<div class="pull-right">Dicetak pada tanggal <strong>{{ date('d-M-Y') }}</strong></div>
</div>
<div class="box-body">
<table class="table text-center">
<thead>
<tr>
<th>No</th>
<th>ID Pemesanan</th>
<th>Tanggal Pemesanan</th>
<th>Nama Mitra</th>
<th>Harga Total</th>
<th>Barang Pesanan</th>
<th>Harga Satuan</th>
<th>Jumlah Pesanan</th>
<th>Status Pesanan</th>
<th>Harga Pesanan</th>
</tr>
</thead>
<tbody>
@foreach ($p as $row)
<tr>
<td rowspan='{{ \App\TPemesanan::where("id_pemesanan",$row->id_pemesanan)->count() }}'>{{ !empty($i) ? ++$i : $i = 1}}</td>
<td rowspan='{{ \App\TPemesanan::where("id_pemesanan",$row->id_pemesanan)->count() }}'>{{ $row->id_pemesanan }}</td>
<td rowspan='{{ \App\TPemesanan::where("id_pemesanan",$row->id_pemesanan)->count() }}'>{{ date('d-M-Y', strtotime($row->tgl_pemesanan)) }}</td>
<td rowspan='{{ \App\TPemesanan::where("id_pemesanan",$row->id_pemesanan)->count() }}'>{{ $row->mitra->nama_mitra }}</td>
<td rowspan='{{ \App\TPemesanan::where("id_pemesanan",$row->id_pemesanan)->count() }}'>Rp. {{ number_format($row->harga_total,0,',','.') }},-</td>
@foreach(\App\TPemesanan::where("id_pemesanan",$row->id_pemesanan)->limit(1)->get() as $row2)
<td>{{ \App\DPemesanan::where("id_dpemesanan",$row2->id_dpemesanan)->first()->stock->nama_stock }}</td>
<td>Rp. {{ number_format(\App\DPemesanan::where("id_dpemesanan",$row2->id_dpemesanan)->first()->stock->harga_satuan,0,',','.') }},-/{{ \App\DPemesanan::where("id_dpemesanan",$row2->id_dpemesanan)->first()->stock->satuan }}</td>
<td>{{ \App\DPemesanan::where("id_dpemesanan",$row2->id_dpemesanan)->first()->jumlah_pemesanan }}{{ \App\DPemesanan::where("id_dpemesanan",$row2->id_dpemesanan)->first()->stock->satuan }}</td>
<td>
@if(\App\TPemesanan::where("id_tpemesanan",$row2->id_tpemesanan)->first()->status_tpemesanan == 1)
{{ \App\TPemesanan::where("id_tpemesanan",$row2->id_tpemesanan)->first()->jumlah_tpemesanan }}{{ \App\DPemesanan::where("id_dpemesanan",$row2->id_dpemesanan)->first()->stock->satuan }}
(Dikirim Semua)
@elseif(\App\TPemesanan::where("id_tpemesanan",$row2->id_tpemesanan)->first()->status_tpemesanan == 2)
{{ \App\TPemesanan::where("id_tpemesanan",$row2->id_tpemesanan)->first()->jumlah_tpemesanan }}{{ \App\DPemesanan::where("id_dpemesanan",$row2->id_dpemesanan)->first()->stock->satuan }}
(Dikirim Sebagian)
@elseif(\App\TPemesanan::where("id_tpemesanan",$row2->id_tpemesanan)->first()->status_tpemesanan == 3)
{{ \App\TPemesanan::where("id_tpemesanan",$row2->id_tpemesanan)->first()->jumlah_tpemesanan }}{{ \App\DPemesanan::where("id_dpemesanan",$row2->id_dpemesanan)->first()->stock->satuan }}
(Ditolak)
@endif
</td>
<td>Rp. {{ number_format(\App\TPemesanan::where("id_tpemesanan",$row2->id_tpemesanan)->first()->harga_tpemesanan,0,',','.') }},-</td>
</tr>
@foreach(\App\TPemesanan::where("id_pemesanan",$row->id_pemesanan)->get() as $row3)
@if(\App\DPemesanan::where("id_dpemesanan",$row3->id_dpemesanan)->first() != \App\DPemesanan::where("id_dpemesanan",$row2->id_dpemesanan)->first() && \App\TPemesanan::where("id_tpemesanan",$row3->id_tpemesanan)->first() != \App\TPemesanan::where("id_tpemesanan",$row2->id_tpemesanan)->first())
<tr>
<td>{{ \App\DPemesanan::where("id_dpemesanan",$row3->id_dpemesanan)->first()->stock->nama_stock }}</td>
<td>Rp. {{ number_format(\App\DPemesanan::where("id_dpemesanan",$row3->id_dpemesanan)->first()->stock->harga_satuan,0,',','.') }},-/{{ \App\DPemesanan::where("id_dpemesanan",$row3->id_dpemesanan)->first()->stock->satuan }}</td>
<td>{{ \App\DPemesanan::where("id_dpemesanan",$row3->id_dpemesanan)->first()->jumlah_pemesanan }}{{ \App\DPemesanan::where("id_dpemesanan",$row3->id_dpemesanan)->first()->stock->satuan }}</td>
<td>
@if(\App\TPemesanan::where("id_tpemesanan",$row3->id_tpemesanan)->first()->status_tpemesanan == 1)
{{ \App\TPemesanan::where("id_tpemesanan",$row3->id_tpemesanan)->first()->jumlah_tpemesanan }}{{ \App\DPemesanan::where("id_dpemesanan",$row3->id_dpemesanan)->first()->stock->satuan }}
(Dikirim Semua)
@elseif(\App\TPemesanan::where("id_tpemesanan",$row3->id_tpemesanan)->first()->status_tpemesanan == 2)
{{ \App\TPemesanan::where("id_tpemesanan",$row3->id_tpemesanan)->first()->jumlah_tpemesanan }}{{ \App\DPemesanan::where("id_dpemesanan",$row3->id_dpemesanan)->first()->stock->satuan }}
(Dikirim Sebagian)
@elseif(\App\TPemesanan::where("id_tpemesanan",$row3->id_tpemesanan)->first()->status_tpemesanan == 3)
{{ \App\TPemesanan::where("id_tpemesanan",$row3->id_tpemesanan)->first()->jumlah_tpemesanan }}{{ \App\DPemesanan::where("id_dpemesanan",$row3->id_dpemesanan)->first()->stock->satuan }}
(Ditolak)
@endif
</td>
<td>Rp. {{ number_format(\App\TPemesanan::where("id_tpemesanan",$row3->id_tpemesanan)->first()->harga_tpemesanan,0,',','.') }},-</td>
</tr>
@endif
@endforeach
@endforeach
@endforeach
</tbody>
</table>
</div>
<!-- /.box-body -->
<div class="box-footer">
Some System
<div class="pull-right">
</div>
</div>
<!-- /.box-footer-->
</div>
<!-- /.box -->
</section>
<!-- jQuery 3 -->
<script src="{{ asset('assets') }}/bower_components/jquery/dist/jquery.min.js"></script>
<!-- Bootstrap 3.3.7 -->
<script src="{{ asset('assets') }}/bower_components/bootstrap/dist/js/bootstrap.min.js"></script>
<!-- SlimScroll -->
<script src="{{ asset('assets') }}/bower_components/jquery-slimscroll/jquery.slimscroll.min.js"></script>
<!-- FastClick -->
<script src="{{ asset('assets') }}/bower_components/fastclick/lib/fastclick.js"></script>
<!-- AdminLTE App -->
<script src="{{ asset('assets') }}/dist/js/adminlte.min.js"></script>
<!-- AdminLTE for demo purposes -->
<script src="{{ asset('assets') }}/dist/js/demo.js"></script>
<script>
$(document).ready(function () {
$('.sidebar-menu').tree()
})
</script>
это происходит только на живом сервере, я использую бесплатный сервер 000webhost, это причина моей ошибки?бесплатная версия?или что-нибудь еще?пожалуйста, помогите мне