0

我正在使用 PdfLib PHP 扩展生成一个 PDF 文件。我开始一个新文件,将图像加载到其中,然后调用 end_document 来完成文件。

一切正常,文件生成正确,但我试图在生成文件后立即将文件上传到 Amazon S3 云(在生成文件的同一函数中)。该文件已上传但不完整,似乎上传了一个空的pdf。

// get a PDFLib object
$p = new PDFlib();

// determine filename
$pageFileName = $page->getPageNr() . '_' . sha1(microtime()) . '.pdf';

// determine local file path and S3 file path
$filePath = $this->fs->getPath(
    Dt_Util_FileStorage_Path::FILETYPE_SOURCEFILE,
    $pageFileName,
    $job
);

// start the document
if ($p->begin_document($filePath->getTmpPath(), "") == 0) {
    throw new Dt_Exception_DtException($p->get_errmsg(), 3, null);
}

// begin a new page inside the new document
$p->begin_page_ext($widthScreenResPixels, $heightScreenResPixels, "");

// load an image resource
$image = $p->load_image("auto", $imgfile, "");
if ($image == -1){
    throw new Exception("Error: " + $p->get_errmsg());
}

// load the image into the current page
$p->fit_image($image, 0, 0, "boxsize={" . $widthScreenResPixels . " " . $heightScreenResPixels . "} fitmethod=entire");

// end the page
$p->end_page_ext("");

// release the image
$p->close_image($image);

//write PDF file
$p->end_document("");

// sleep(5);

// upload the file to S3
$this->fs->putFile($filePath);

我在本地保存文件的位置包含应有的文件:图像已加载到其中,文件大小约为 600KB。上传的文件就像一个空骨架,当我调用 PdfLib->begin_document 时生成的文件,但在实际放入任何内容之前,我无法打开它,它的大小为 104 字节。

我尝试在 end_document 之后和上传之前睡几秒钟,因为我认为 PdfLib 可能需要一些时间才能完成,但这没有效果,结果完全一样。

有没有人对如何解决这个问题有任何想法,什么会导致这个,在哪里寻找解决方案?

更新 问题似乎是我正在使用的 S3 api 类。我正在使用这个。使用官方 SDK 上传成功如预期。我将继续使用官方 SDK。最初的问题,为什么它使用其他 API 类失败,仍然存在。

4

0 回答 0