【发布时间】:2019-06-13 14:42:34
【问题描述】:
我正在下载一个文件,将其保存在本地,然后打开它以获取文件中的页数。我收到一个错误:Unable to find "startxref" keyword. 我已经进行了搜索,但没有找到任何可能与我的问题相关的内容。
public function getPageCountPDF($jobid) {
$this->load->library('Awss3', null, 'S3');
require_once 'application/libraries/fpdi/fpdf.php';
require_once 'application/libraries/fpdi/fpdi.php';
$PdfTranscriptInfo = $this->MJob->getDOCCSPdfTranscript($jobid);
$filename = $PdfTranscriptInfo['origfilename'];
$PdfFilename = 'uploads/' . $jobid . '/' . $filename;
$pdfdata = $this->S3->readfile($PdfFilename, false, 'bucket');
$localfilename = FCPATH . 'tmp/local.pdf';
fopen($localfilename, 'a');
$pdf = new FPDI();
$pageCount = $pdf->setSourceFile($localfilename);
unlink($localfilename);
return $pageCount;
}
当我回显 $pdfdata 时,我看到了 startxref 关键字,为什么找不到它?
有人吗?有什么想法吗?
编辑:我检查了文件是否已压缩,但不是。
第二次编辑:我看到我的 PDF 是 1.3 版,这与它有什么关系吗?
【问题讨论】:
-
在不知道您使用的是哪个 S3 库的情况下很难进行调试。例如,我无法准确说出
$this->S3->readfile的作用。 -
@SamTolton,它从存储文件的 S3 读取文件。如果我回显 $pdfdata,它会显示以下内容:
%PDF-1.3 %���� 1 0 obj << /Title (��0322Byer Frantz) /Producer (Amyuni PDF Converter version 4.5.0.5) /CreationDate (D:20180507112129-04'00') >> endobj 7 0 obj << /Length 8 0 R /Filter /FlateDecode >> stream x��Z�r�6��g:�q; K��o�L�jmɕ����EUWm"���N��,@KcO_2>�b�rq��I%�_�E\����d��dI�ET�*.�(Mb�Le\Uѱ� ��v��"�?�(/cYEE����x�#*��@��F{/�"GX��{�N����TDQ�����yۏ�$Nd �6����������M��5i��/j�21A��2� tH��D� d�>5B��]�p�����y�q)zY' "����U2��,B�k���Y�NjH�8�S��C{�� ��� -
那么我认为您在从
FCPATH . 'tmp/local.pdf';加载 PDF 时可能会遗漏一个步骤,但我看不到您将$pdfdata输出到该文件的位置。从 S3 读取文件后,您可能需要file_put_contents (FCPATH . 'tmp/local.pdf'; $pdfdata);。 -
@SamTolton,好的,谢谢。我会尝试一下,让你知道它是否有效。
-
@SamTolton,我现在正在取消链接(C:\wamp64\www\companyname\tmp/local.pdf):权限被拒绝错误。我感谢你到目前为止的帮助。明天将继续努力。