首页 > 解决方案 > pdf2text转换后无法将字符串写入数据库

问题描述

我正在使用 spatie 的 pdf2text,实际上它工作正常。问题:当我尝试从转换后的 pdf 写入文本(pdf2text 函数的返回值)时,它总是给我一个错误Illuminate\Database\QueryException。分析问题后发现它是由插入查询引起的。我不能直接将转换后的字符串插入数据库。当我dd();输出并将其手动复制到变量并将其插入数据库时​​,它工作正常。pdftotext 函数的返回类型也是字符串。我试图再次将其转换为字符串,但正如预期的那样,这是一个多余的步骤。当我尝试将文本传递给视图时,它也没有给我任何东西。仅不输出屏幕dd();和 `print_r();' 给我一个输出。

好吧,这就是我的代码:

控制器:

public function TextFromPdf(Request $pdfFile)
{


    if (isset($pdfFile)) {

        $file = $pdfFile->file('pdfFile');
        $fileName =  'PDF File '.time() . '-' . $file->getClientOriginalName();
        $file->storeAs('',$fileName);
        $filePath =  Storage::disk('local')->path($fileName);

        $text = (new Pdf('C:\CV-Test\xpdf-tools-win-4.03\bin64\pdftotext.exe'))
       ->setPdf($filePath)->text();


        DB::table('fulltexts')->insert([

            'text' => $text
        ]);
    
    return view('CV_test.pdf', compact('text'));
}
        

截图 dd($text);

dd($text) 的截图;

我究竟做错了什么?

标签: phpmysqllaravel

解决方案


好的,我发现了它是什么,花了一些时间。字符串引号前的字符b表示它是二进制字符串。当我尝试将其插入数据库时​​,它无法正常工作,因为我的数据库无法管理二进制字符串。我只需要将其转换为utf8 by utf8_encode($binary_string),然后我就可以将其写入数据库而没有任何问题


推荐阅读