USER-20230908AJ\Administrator il y a 1 an
Parent
commit
7496643915
1 fichiers modifiés avec 179 ajouts et 0 suppressions
  1. 179 0
      app/Servers/Wps/PdfServer.php

+ 179 - 0
app/Servers/Wps/PdfServer.php

@@ -0,0 +1,179 @@
+<?php
+
+
+namespace App\Servers\Wps;
+
+
+
+use App\Models\FactoringContract;
+use App\Models\FactoringContractFile;
+use App\Models\FileManager;
+use App\Servers\System\CommonServer;
+
+use Illuminate\Support\Facades\DB;
+use PhpOffice\PhpWord\IOFactory;
+
+
+class PdfServer
+{
+    static private $server = null;
+
+
+
+
+
+    function __construct()
+    {
+
+    }
+
+    /**
+     * 创建对象
+     * @return PdfServer
+     */
+    static function creatServer()
+    {
+        if (empty(self::$server)) self::$server = new PdfServer();
+        return self::$server;
+    }
+
+
+
+
+    /**
+     * word转pdf
+     * @param $wordUrl
+     * @param $id
+     * @param $type
+     * @return string
+     */
+    function wordToPdf($wordUrl){
+        $path=public_path('/storage/pdf/'.date('Ymd'));
+        $file='/home/www/4.8.docx';
+        $command = "libreoffice --headless --convert-to pdf  --outdir {$path}  {$file}";
+        exec($command);
+//        $fileName=CommonServer::creatServer()->getFileName($wordUrl);
+//        return WpsServer::creatServer()->fileConvertPdf($wordUrl,$fileName);
+//        $storageUrl='storage/pdf/'.date('Ymd').'/';
+//        $path=public_path($storageUrl);
+//        $fileUrl=$path.time().$fileName;
+//        if(!is_dir($path)){
+//            mkdir($path,0777,true);
+//        }
+//        $extension = pathinfo($fileName);
+////        file_put_contents($fileUrl ,file_get_contents($wordUrl));
+//////        $content = file_get_contents('https://wealfavor-1257406827.cos.ap-beijing.myqcloud.com/git.docx');
+//////        dd($content);
+////        dd($fileUrl);
+////        $phpWord = IOFactory::load($fileUrl);
+////        $wordHtml = IOFactory::createWriter($phpWord,'HTML');
+////        $fileHtml=$path.$fileName.'.html';
+////        $wordHtml->save($fileHtml);
+////        $html=file_get_contents($fileHtml);
+////        // 设置Dompdf选项
+////        $dompdf = new Dompdf();
+////        $dompdf->loadHtml($html,'UTF-8');
+////        $dompdf->setPaper('A4', 'portrait');
+////        $dompdf->render();
+////        $pdf = $dompdf->output();
+////
+////// 将PDF写入文件
+////        file_put_contents($path.$fileName.'.pdf', $pdf);
+//        // 创建一个新的Word文档实例
+//        file_put_contents($fileUrl ,file_get_contents($wordUrl));
+//        $phpWord = IOFactory::load($fileUrl);
+//
+//        // 创建一个新的FPDF实例
+////        $pdf = new \FPDF();
+//        $pdf = new \PDF_Chinese();
+//        $pdf->AddGBFont('simhei','黑体');
+//        $pdf->AddGBFont('simkai','楷体_GB2312');
+//
+//        // 遍历Word文档中的所有部分并转换为PDF
+//        foreach ($phpWord->getSections() as $section) {
+//            // 添加一页PDF
+//             $pdf->AddPage();
+////             $pdf->setFont('freeserif');
+//            $pdf->SetFont('simhei','',16);
+////            $pdf->AddFont('GB','', 'song.cng.php');
+////            $pdf->AddFont('GB','B', 'song.cnb.php');
+//            // 遍历文档部分中的所有元素
+//            foreach ($section->getElements() as $element) {
+//                // 处理文本元素
+//
+//                if (method_exists($element, 'getText')) {
+//                    $text = $element->getText();
+//                    $text = mb_convert_encoding($text, 'GBK', 'UTF-8');
+//                    $pdf->Cell(0, 5, $text, 0, 1, 'L');
+//                }
+//
+//                // 处理图像元素
+//                if (method_exists($element, 'getImage')) {
+//                    $image = $element->getImage(0);
+//                    $pdf->Image($image->getSource(), $pdf->GetX(), $pdf->GetY(), $image->getWidth(), $image->getHeight());
+//                }
+//
+//                // 处理其他元素类型...
+//            }
+//        }
+//        $fileName=str_replace($extension['extension'],'',$fileName);
+//        // 保存PDF到文件
+//        $pdf->Output($path.$fileName.'pdf', 'F');
+//        return 'http://'.env('APP_ADMIN_HOST').'/'.$storageUrl.$fileName.'pdf';
+    }
+
+
+    /**
+     * 图片转pdf
+     * @param $imgUrl
+     * @return string
+     */
+    function imgToPdf($imgUrl){
+        $fileName=CommonServer::creatServer()->getFileName($imgUrl);
+        $storageUrl='storage/pdf/'.date('Ymd').'/';
+        $path=public_path($storageUrl);
+        if(!is_dir($path)){
+            mkdir($path,0777,true);
+        }
+//        $base64Img=base64_encode(file_get_contents($imgUrl));
+//        $extension = pathinfo($fileName);
+//        $htmlContent = '<html><body><img src="data:image/'.$extension['extension'].';base64,'.$base64Img.'" /></body></html>';
+//        dd($htmlContent);
+//        $dompdf = new Dompdf();
+//        $dompdf->loadHtml($htmlContent,'UTF-8');
+//        $dompdf->setPaper('A4', 'portrait');
+//        $dompdf->render();
+//        $pdf = $dompdf->output();
+//        // 将PDF写入文件
+//        $fileName=str_replace($extension['extension'],'',$fileName);
+//        file_put_contents($path.$fileName.'pdf', $pdf);
+        $pdf = new \FPDF();
+        $pdf->AddPage();
+        // 获取图片尺寸
+        list($width, $height) = getimagesize($imgUrl);
+        $extension = pathinfo($fileName);
+        // 获取PDF页面宽度
+        $pageWidth = $pdf->getPageWidth()-10;
+        $pageHeight = $pdf->GetPageHeight()-10;
+        // 计算图片缩放比例,使其宽度与页面宽度相匹配
+        $scale = $pageWidth / $width;
+        // 计算缩放后的高度
+        $newHeight = $height * $scale;
+        if($pageHeight<$newHeight){
+            $newHeight=$pageHeight;
+            $scale = $newHeight / $height;
+            $newWidth=$width * $scale;
+        }else{
+            $newWidth=$pageWidth;
+        }
+
+        // 将图片添加到PDF,并设置缩放比例
+        $pdf->Image($imgUrl, 5, 5, $newWidth, $newHeight, strtoupper($extension['extension']));
+
+        $fileName=str_replace($extension['extension'],'',$fileName);
+        $pdf->Output('F', $path.$fileName.'pdf');
+        return 'https://'.env('APP_ADMIN_HOST').'/'.$storageUrl.$fileName.'pdf';
+    }
+
+
+}