作者 刘锟

update

@@ -37,6 +37,37 @@ protected function error($message = 'error', $status = 400, $data = []) @@ -37,6 +37,37 @@ protected function error($message = 'error', $status = 400, $data = [])
37 } 37 }
38 38
39 /** 39 /**
  40 + * 生成二维码
  41 + * @param Request $request
  42 + * @return string
  43 + * @author Akun
  44 + * @date 2026/03/05 10:28
  45 + */
  46 + public function createQr(Request $request)
  47 + {
  48 + $qrText = $request->input('qr_text');
  49 + if (empty($qrText)) {
  50 + return $this->error('二维码内容未知');
  51 + }
  52 +
  53 + // 生成二维码图片
  54 + try {
  55 + $qrImage = 'www/wwwroot/qrcode/qrcode_' . time() . '.png';
  56 + $renderer = new ImageRenderer(
  57 + new RendererStyle(300, 0),
  58 + new GdImageBackEnd() // 使用 GD 后端
  59 + );
  60 + $writer = new Writer($renderer);
  61 +
  62 + $writer->writeFile($qrText, $qrImage);
  63 +
  64 + return $this->success(['qr_image' => $qrImage]);
  65 + } catch (\Exception $e) {
  66 + return $this->error($e->getMessage());
  67 + }
  68 + }
  69 +
  70 + /**
40 * pdf文件添加二维码 71 * pdf文件添加二维码
41 * @param Request $request 72 * @param Request $request
42 * @return string 73 * @return string
@@ -52,27 +83,20 @@ public function addQrToPdf(Request $request) @@ -52,27 +83,20 @@ public function addQrToPdf(Request $request)
52 { 83 {
53 $sourceFile = $request->input('original_pdf'); 84 $sourceFile = $request->input('original_pdf');
54 if (empty($sourceFile)) { 85 if (empty($sourceFile)) {
55 - return $this->error('原始pdf地址未知'); 86 + return $this->error('pdf地址未知');
56 } 87 }
57 if (!file_exists($sourceFile)) { 88 if (!file_exists($sourceFile)) {
58 - return $this->error('原始pdf文件不存在'); 89 + return $this->error('pdf文件不存在');
59 } 90 }
60 - $qrText = $request->input('qr_text');  
61 - if (empty($qrText)) {  
62 - return $this->error('二维码内容未知'); 91 + $qrImage = $request->input('qr_image');
  92 + if (empty($qrImage)) {
  93 + return $this->error('二维码地址未知');
  94 + }
  95 + if (!file_exists($qrImage)) {
  96 + return $this->error('二维码文件不存在');
63 } 97 }
64 98
65 - // 生成二维码图片  
66 - $qrImage = public_path('qrcode_temp.png');  
67 - $renderer = new ImageRenderer(  
68 - new RendererStyle(300, 0),  
69 - new GdImageBackEnd() // 使用 GD 后端  
70 - );  
71 - $writer = new Writer($renderer);  
72 -  
73 - // 生成 PNG 图片数据  
74 - $writer->writeFile($qrText, $qrImage);  
75 - 99 + try {
76 $pdf = new Fpdi(); 100 $pdf = new Fpdi();
77 101
78 $pageCount = $pdf->setSourceFile($sourceFile); 102 $pageCount = $pdf->setSourceFile($sourceFile);
@@ -116,9 +140,9 @@ public function addQrToPdf(Request $request) @@ -116,9 +140,9 @@ public function addQrToPdf(Request $request)
116 $outputFile = substr($sourceFile, 0, -4) . '_' . time() . '.pdf'; 140 $outputFile = substr($sourceFile, 0, -4) . '_' . time() . '.pdf';
117 $pdf->Output('F', $outputFile); 141 $pdf->Output('F', $outputFile);
118 142
119 - // 删除临时二维码图片  
120 - unlink($qrImage);  
121 -  
122 - return $this->success(['pdf_file' => $outputFile]); 143 + return $this->success(['target_pdf' => $outputFile]);
  144 + } catch (\Exception $e) {
  145 + return $this->error($e->getMessage());
  146 + }
123 } 147 }
124 } 148 }
@@ -38,5 +38,6 @@ @@ -38,5 +38,6 @@
38 Route::get('/update_robots', [NoticeController::class, 'updateRobots']); 38 Route::get('/update_robots', [NoticeController::class, 'updateRobots']);
39 }); 39 });
40 40
  41 +Route::any('/create_qr',[\App\Http\Controllers\Api\ToolController::class,'createQr']);
41 Route::any('/qr_pdf',[\App\Http\Controllers\Api\ToolController::class,'addQrToPdf']); 42 Route::any('/qr_pdf',[\App\Http\Controllers\Api\ToolController::class,'addQrToPdf']);
42 43