$documento->assunto_complementar = $ocr; $documento->interessado = $interessado; $documento->assinatura = NULL; $documento->cargo = NULL; $documento->procedencia = "E"; $documento->data_entrada = date('d/m/Y'); $documento->recibo = Zend_Auth::getInstance()->getIdentity()->NOME; $documento->diretoria = $_POST['id_unidade_destino']; $out = DaoDocumento::salvarDocumento($documento)->toArray(); if ($out['success'] == 'true') { // Documento cadastrado com sucesso, criar imagem // Primeiro gera um pdf e pega o texto dele $pdf = geraPdfSic($documento); $name = $pdf . '.tif'; shell_exec("gs -SDEVICE=tiffg4 -r300x300 -sPAPERSIZE=a4 -sOutputFile={$name} -dNOPAUSE -dBATCH {$pdf}"); $pasta = gerarRaiz($documento->digital, __CAM_UPLOAD__); $repositorio = __CAM_UPLOAD__ . "/" . $pasta . "/" . $documento->digital; mkdir($repositorio, 0777); shell_exec("gs -q -dNOPAUSE -dBATCH -sDEVICE=png16m -r300 -dEPSCrop -sOutputFile={$repositorio}/00000000000000000000000000000011_%04d.png {$pdf}"); unlink($pdf); unlink($name); // Imagens criadas, existem arquivos a anexar? if (count($_FILES) > 0) { // Existe ao menos um, criar folha de rosto $preffix = 1; $end_folha = "/tmp/folha_" . aleatorio() . ".pdf"; $folha = new FPDF(); $folha->AddPage(); $folha->SetFont('Arial', 'B', 40); $folha->Cell(0, 150, "ANEXOS", 0, 0, "C"); $folha->Output($end_folha, "F");
/** * */ public static function persisteLote($digital, $ocr) { try { Controlador::getInstance()->getConnection()->connection->beginTransaction(); $sttm = Controlador::getInstance()->getConnection()->connection->prepare("SELECT (max(ORDEM)+1) as next FROM TB_DOCUMENTOS_IMAGEM WHERE DIGITAL = ? LIMIT 1"); $sttm->bindParam(1, $digital, PDO::PARAM_STR); $sttm->execute(); $next = $sttm->fetch(PDO::FETCH_ASSOC); if (is_null($next['next'])) { $next['next'] = 0; } $caminhoLOTE = __CAM_UPLOAD__ . '/' . gerarRaiz($digital, __CAM_UPLOAD__) . '/' . $digital; $arquivos = glob("{$caminhoLOTE}/*.png"); $imagem = array(); $imagem['public'] = 1; $imagem['next'] = (int) $next['next']; $query = "INSERT INTO SGDOC.TB_DOCUMENTOS_IMAGEM (DIGITAL,FLG_PUBLICO,MD5,DES_HASH_FILE,IMG_WIDTH,IMG_HEIGHT,IMG_TYPE,ORDEM,IMG_BYTES,ID_USUARIO,ID_UNIDADE) VALUES "; foreach ($arquivos as $arquivo) { $query .= "(?,?,?,?,?,?,?,?,?,?,?),"; } $query = rtrim($query, ','); // remove a vírgula extra $stmt = Controlador::getInstance()->getConnection()->connection->prepare($query); $valores = array(); foreach ($arquivos as $filename) { $filename = str_replace("{$caminhoLOTE}/", '', $filename); // Percorre a pasta // Se o arquivo ainda não foi salvo, salvar $imagem['md5'] = (string) aleatorio(); $imagem['old_name'] = $filename; $imagem['hash'] = (string) hash_file('md5', $caminhoLOTE . '/' . $filename); $new_filename = "{$caminhoLOTE}/{$imagem['md5']}.png"; rename($caminhoLOTE . '/' . $filename, $new_filename); $information = getimagesize($new_filename); $imagem['width'] = $information[0]; $imagem['height'] = $information[1]; $imagem['codeType'] = 8; $imagem['size'] = filesize($new_filename); // Fim da etapa de pegar os dados, jogar na base $valores[] = $digital; $valores[] = $imagem['public']; $valores[] = $imagem['md5']; $valores[] = $imagem['hash']; $valores[] = $imagem['width']; $valores[] = $imagem['height']; $valores[] = $imagem['codeType']; $valores[] = $imagem['next']; $valores[] = $imagem['size']; $valores[] = Controlador::getInstance()->usuario->ID; $valores[] = Controlador::getInstance()->usuario->ID_UNIDADE; $imagem['next']++; } $stmt->execute($valores); // Se chegou aqui com segurança, pode commitar a sequencia Controlador::getInstance()->getConnection()->connection->commit(); return new Output(array('success' => 'true')); } catch (Exception $e) { Controlador::getInstance()->getConnection()->connection->rollback(); return new Output(array('success' => 'false', 'error' => $e->getMessage())); } }