Skip to content

Commit

Permalink
Keyword extraction failing if the asset was not a PDF
Browse files Browse the repository at this point in the history
  • Loading branch information
bymayo committed Feb 4, 2025
1 parent a6f567d commit 632ebe2
Show file tree
Hide file tree
Showing 3 changed files with 58 additions and 36 deletions.
5 changes: 5 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
# PDF Transform Changelog

## 1.0.11 - 2025-01-06

### Fixed
- Keyword extraction failing if the asset was not a PDF

## 1.0.10 - 2025-01-06

### Added
Expand Down
2 changes: 1 addition & 1 deletion composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"name": "bymayo/pdf-transform",
"description": "Transform a PDF page to an image (JPEG, PNG)",
"type": "craft-plugin",
"version": "1.0.10",
"version": "1.0.11",
"keywords": [
"craft",
"cms",
Expand Down
87 changes: 52 additions & 35 deletions src/services/PdfTransformService.php
Original file line number Diff line number Diff line change
Expand Up @@ -113,57 +113,74 @@ public function render($asset)
public function pdfToImage($asset, $indexKeywords = false)
{

if ($asset->kind != 'pdf') {
return false;
}

$filename = $this->getFileName($asset);
$volume = $this->getImageVolume();

// @TODO: Check if file exists in volume here, and check to see if if the dates match

try {

$pathService = Craft::$app->getPath();
$tempPath = $pathService->getTempPath(true) . '/' . mt_rand(0, 9999999) . '.png';
file_put_contents($tempPath, file_get_contents($asset->url));
$assetTransformed = Asset::find()
->volumeId($volume->id)
->filename($filename)
->one();

if (!$assetTransformed) {

$pathService = Craft::$app->getPath();
$tempPath = $pathService->getTempPath(true) . '/' . mt_rand(0, 9999999) . '.' . $this->settings->imageFormat;
file_put_contents($tempPath, file_get_contents($asset->url));

$tempPathTransform = $pathService->getTempPath(true) . '/' . $filename;

$folder = Craft::$app->getAssets()->getRootFolderByVolumeId($volume->id);

$tempPathTransform = $pathService->getTempPath(true) . '/' . $filename;
$pdf = new Pdf($tempPath);

$folder = Craft::$app->getAssets()->getRootFolderByVolumeId($volume->id);

$pdf = new Pdf($tempPath);

$pdf
->setPage($this->settings->page)
->setResolution($this->settings->imageResolution)
->setCompressionQuality($this->settings->imageQuality)
->saveImage($tempPathTransform);

$assetTransformed = new Asset();
$assetTransformed->tempFilePath = $tempPathTransform;
$assetTransformed->filename = $filename;
$assetTransformed->folderId = $folder->id;
$assetTransformed->newFolderId = $folder->id;
$assetTransformed->kind = 'Image';
$assetTransformed->title = $asset->title;
$assetTransformed->avoidFilenameConflicts = true;
$assetTransformed->setVolumeId($volume->id);
$assetTransformed->setScenario(Asset::SCENARIO_CREATE);

$assetTransformed->validate();

if (Craft::$app->getElements()->saveElement($assetTransformed, false))
{

if ($indexKeywords)
$pdf
->setPage($this->settings->page)
->setResolution($this->settings->imageResolution)
->setCompressionQuality($this->settings->imageQuality)
->saveImage($tempPathTransform);

$assetTransformed = new Asset();
$assetTransformed->tempFilePath = $tempPathTransform;
$assetTransformed->filename = $filename;
$assetTransformed->folderId = $folder->id;
$assetTransformed->newFolderId = $folder->id;
$assetTransformed->kind = 'Image';
$assetTransformed->title = $asset->title;
$assetTransformed->avoidFilenameConflicts = true;
$assetTransformed->setVolumeId($volume->id);
$assetTransformed->setScenario(Asset::SCENARIO_CREATE);

$assetTransformed->validate();

if (!Craft::$app->getElements()->saveElement($assetTransformed, false))
{
$this->indexKeywords($asset, $assetTransformed);

PdfTransform::log($e->getMessage());
throw new Exception('PDF Transform: Could not transform PDF to image');

}

return $assetTransformed;
}

if ($indexKeywords)
{
$this->indexKeywords($asset, $assetTransformed);
}

return $assetTransformed;

}
catch (Exception $e) {

PdfTransform::log($e->getMessage());
throw new Exception('PDF Transform: Could not transform PDF to image');

}

}
Expand Down

0 comments on commit 632ebe2

Please sign in to comment.