Função similar ao imagecreatefrom para .doc/docx e pdf no PHP

Tenho procurado algo parecido para com a função imagecreatefrom, para documentos diferentes de imagens, como o doc e pdf, porém parece que não há algo do tipo. Atualmente eu subo os meus arquivos da seguinte forma:

$  doc = $  _FILES['arquivos'];     $  docs = $  doc["name"];      for ($  i = 0; $  i < count($  docs); $  i++) {         $  tiposPermitidos = array('image/gif', 'image/jpeg', 'image/pjpeg', 'image/png', 'doc', 'docx', 'pdf');     $  tamanhoPermitido = 1024 * 1024;     $  arqType = $  doc['type'][$  i];     $  arqSize = $  doc['size'][$  i];     $  arqError = $  doc['error'][$  i];     if ($  arqError == 0) {         if (array_search($  arqType, $  tiposPermitidos) === false) {             ?>             <div class="fundo">O tipo de arquivo enviado é inválido! Arquivos permitidos: JPG, PNG, GIF, doc, docx, pdf</div>         <?php } else if ($  arqSize > $  tamanhoPermitido) { ?>             <div class="fundo">O tamanho do arquivo enviado é maior que o limite!</div>             <?php         } else {              function create_ufilename($  name, $  path = '.') {                 $  ext = pathinfo($  name, PATHINFO_EXTENSION);                 $  id = uniqid(rand(1, 100));                 $  path .= '/' . $  id . '.' . $  ext;                 return is_file($  path) ? create_ufilename($  name, $  path) : $  path;             }              $  img = $  docs[$  i];             $  diretorio = "../doc/";             $  tmp = $  doc['tmp_name'][$  i];             $  salvar = create_ufilename($  img, $  diretorio);             $  image = substr($  salvar, 8);              switch ($  doc['type'][$  i]):                 case 'image/jpeg':                 case 'image/pjpeg':                      $  largura = 500;                     $  altura = 300;                      $  imagem_temporaria = imagecreatefromjpeg($  tmp);                      $  largura_original = imagesx($  imagem_temporaria);                      $  altura_original = imagesy($  imagem_temporaria);                      $  nova_largura = $  largura ?? floor(($  largura_original / $  altura_original) * $  altura);                      $  nova_altura = $  altura ?? floor(($  altura_original / $  largura_original) * $  largura);                      $  imagem_redimensionada = imagecreatetruecolor($  nova_largura, $  nova_altura);                      imagecopyresampled($  imagem_redimensionada, $  imagem_temporaria, 0, 0, 0, 0, $  nova_largura, $  nova_altura, $  largura_original, $  altura_original);                      imagejpeg($  imagem_redimensionada, $  diretorio . $  image);                      break;                  case 'image/png':                 case 'image/x-png':                      $  largura = 500;                     $  altura = 300;                      $  imagem_temporaria = imagecreatefrompng($  tmp);                      $  largura_original = imagesx($  imagem_temporaria);                      $  altura_original = imagesy($  imagem_temporaria);                      $  nova_largura = $  largura ?? floor(($  largura_original / $  altura_original) * $  altura);                      $  nova_altura = $  altura ?? floor(($  altura_original / $  largura_original) * $  largura);                      $  imagem_redimensionada = imagecreatetruecolor($  nova_largura, $  nova_altura);                      imagealphablending($  imagem_redimensionada, false);                      imagesavealpha($  imagem_redimensionada, true);                      imagecopyresampled($  imagem_redimensionada, $  imagem_temporaria, 0, 0, 0, 0, $  nova_largura, $  nova_altura, $  largura_original, $  altura_original);                      imagepng($  imagem_redimensionada, $  diretorio . $  image);                      break;                  case 'image/gif':                      $  largura = 500;                     $  altura = 300;                      $  imagem_temporaria = imagecreatefromgif($  tmp);                      $  largura_original = imagesx($  imagem_temporaria);                      $  altura_original = imagesy($  imagem_temporaria);                      $  nova_largura = $  largura ?? floor(($  largura_original / $  altura_original) * $  altura);                      $  nova_altura = $  altura ?? floor(($  altura_original / $  largura_original) * $  largura);                      $  imagem_redimensionada = imagecreatetruecolor($  nova_largura, $  nova_altura);                      imagecopyresampled($  imagem_redimensionada, $  imagem_temporaria, 0, 0, 0, 0, $  nova_largura, $  nova_altura, $  largura_original, $  altura_original);                      imagegif($  imagem_redimensionada, $  diretorio . $  image);                      break;                  default :                     move_uploaded_file($  doc['tmp_name'][$  i], $  diretorio . $  image);              endswitch;         }              $  sql_doc = 'INSERT INTO doc (docs)';             $  sql_doc .= 'VALUES (:docs)';               $  query_doc = $  conexao->prepare($  sql_doc);             $  query_doc->bindValue(':docs', $  image, PDO::PARAM_STR);             $  query_doc->execute();          } else {         ?>         <p>Ocorreu algum problema ao enviar a imagem <?php echo $  docs[$  i]?>.</p>         <?php     }    } 

Essa função “imagecreatefrom()” cria uma nova imagem, limpando algum malware, caso exista, na imagem, certo? Tem como fazer algo parecido com isso em outros arquivos que não sejam imagens por questões de segurança? Afinal é possível o usuário injetar um malware em um arquivo pdf, doc e etc… e infectar o servidor, certo?