0 レビュー
1 回答
drupal-PHP Imagickは、一部のpdfに白黒を、一部のpdfに色を提供します
ランダムであるか、1MBよりも大きいサイズのPDFだと思います。サムネイルをカラーで出力することもあれば、白黒で出力することもあります。
これが私のコードです
public function convertPdfToImage($_pdf) {
if(file_prepare_directory($this->thumbnailDirectory, FILE_CREATE_DIRECTORY)) {
try {
$date = new \DateTime();
$thumbFileName = $date->getTimestamp() . '.png';
$imagick = new Imagick();
$imagick->setResolution(50,50);
$imagick->readImage($_pdf);
$imagick->setIteratorIndex(0);
$imagick->setImageFormat('png');
$thumbFile = \Drupal::service('file_system')->realpath($this->thumbnailDirectory . '/' . $thumbFileName);
if($imagick->writeImage($thumbFile)) {
return $this->thumbnailDirectory . '/' . $thumbFileName;
}else{
\Drupal::logger('dtm_misc')->error('Error Saving PDF Thumbnail');
}
}catch (\Exception $e) {
$imagick->destroy();
\Drupal::logger('dtm_misc')->error('PDF To Image Exception: ' . $e->getMessage());
}
}
}
どんな助けでも大歓迎です..ありがとう
わからない
0
レビュー
答え :
解決:
上記の議論に対する実用的な解決策は次のとおりです。
public function convertPdfToImage($_pdf) {
if (file_prepare_directory($this->thumbnailDirectory, FILE_CREATE_DIRECTORY)) {
try {
$date = new \DateTime();
$thumbFileName = $date->getTimestamp() . '.png';
$imagick = new Imagick();
$imagick->setResolution(50, 50);
$imagick->setColorspace(Imagick::COLORSPACE_SRGB); // SOLUTION
$imagick->readImage($_pdf);
$imagick->setIteratorIndex(0);
$imagick->setImageFormat('png');
$thumbFile = \Drupal::service('file_system')->realpath($this->thumbnailDirectory . '/' . $thumbFileName);
if ($imagick->writeImage($thumbFile)) {
return $this->thumbnailDirectory . '/' . $thumbFileName;
} else {
\Drupal::logger('dtm_misc')->error('Error Saving PDF Thumbnail');
}
} catch (\Exception $e) {
$imagick->destroy();
\Drupal::logger('dtm_misc')->error('PDF To Image Exception: ' . $e->getMessage());
}
}
}
わからない
同様の質問
私たちのウェブサイトで同様の質問で答えを見つけてください。