Просмотр исходного кода

feat: 新增2个pdf在线调试地址

gwd 3 дней назад
Родитель
Сommit
1bd8f65263
2 измененных файлов с 39 добавлено и 0 удалено
  1. 35 0
      app/Http/Controllers/ExamPdfController.php
  2. 4 0
      routes/web.php

+ 35 - 0
app/Http/Controllers/ExamPdfController.php

@@ -1057,6 +1057,41 @@ class ExamPdfController extends Controller
         ]);
     }
 
+    /**
+     * 服务端渲染预览 - 试卷(与 PDF 生成效果一致,用于调试)
+     */
+    public function showServerRendered(Request $request, $paper_id)
+    {
+        // 强制不显示答案(试卷模式)
+        $request->merge(['answer' => 'false']);
+
+        // 复用 show() 获取 HTML
+        $view = $this->show($request, $paper_id);
+        $html = $view->render();
+
+        // 使用 KatexRenderer 服务端渲染公式
+        $katexRenderer = new \App\Services\KatexRenderer();
+        $rendered = $katexRenderer->disableCache()->renderHtml($html);
+
+        return response($rendered);
+    }
+
+    /**
+     * 服务端渲染预览 - 判卷(与 PDF 生成效果一致,用于调试)
+     */
+    public function showGradingServerRendered(Request $request, $paper_id)
+    {
+        // 复用 showGrading() 获取 HTML
+        $view = $this->showGrading($request, $paper_id);
+        $html = $view->render();
+
+        // 使用 KatexRenderer 服务端渲染公式
+        $katexRenderer = new \App\Services\KatexRenderer();
+        $rendered = $katexRenderer->disableCache()->renderHtml($html);
+
+        return response($rendered);
+    }
+
     /**
      * 重新生成 PDF(统一生成卷子和判卷)
      *

+ 4 - 0
routes/web.php

@@ -20,6 +20,10 @@ Route::get('/admin/intelligent-exam/pdf/{paper_id}', [\App\Http\Controllers\Exam
 Route::get('/admin/intelligent-exam/grading/{paper_id}', [\App\Http\Controllers\ExamPdfController::class, 'showGrading'])->name('filament.admin.auth.intelligent-exam.grading');
 Route::get('/admin/intelligent-exam/knowledge-explanation/{paper_id}', [\App\Http\Controllers\ExamPdfController::class, 'showKnowledgeExplanation'])->name('filament.admin.auth.intelligent-exam.knowledge-explanation');
 
+// 服务端渲染预览(与 PDF 生成效果一致,用于调试)
+Route::get('/preview/exam/pdf-server/{paper_id}', [\App\Http\Controllers\ExamPdfController::class, 'showServerRendered'])->name('preview.exam.pdf-server');
+Route::get('/preview/exam/grading-server/{paper_id}', [\App\Http\Controllers\ExamPdfController::class, 'showGradingServerRendered'])->name('preview.exam.grading-server');
+
 Route::get('/admin/exam-analysis/pdf', [\App\Http\Controllers\ExamAnalysisPdfController::class, 'show'])->name('filament.admin.auth.exam-analysis.pdf');
 
 // 检查通知的路由