Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

vitorsilmor

Exportar DataTable para PDF.

Recommended Posts

Bom dia,

 

estou tentando exportar um DATA TABLE para PDF, porém não estou conseguindo.
Primeiro eu montei o grid buscando as informações que preciso na tabela.O
Joguei esse em uma variavel do tipo GridView e iniciei a tentativa de exportar para PDF, porém recebo uma mensagem de que "O Thread estava sendo anulado".

Segue o código:

 

DataTable dt = objBL.MontaGridRelatorioCartao("", "", 6777, "", Arquivo, ""); //Os dados que quero estão em DT!

GridView GridView1 = new GridView();

GridView1.AllowPaging = false;
GridView1.DataSource = dt;
GridView1.DataBind();

O problema vem aqui:

try
 {
                   
 	Response.ContentType = "application/pdf";
	Response.AddHeader("content-disposition",
	"attachment;filename=DataTable.pdf");
	Response.Cache.SetCacheability(HttpCacheability.NoCache);
	StringWriter sw = new StringWriter();
	HtmlTextWriter hw = new HtmlTextWriter(sw);
	GridView1.RenderControl(hw);
	StringReader sr = new StringReader(sw.ToString());
	Document pdfDoc = new Document(PageSize.A4.Rotate(), 10f, 10f, 100f, 0f);
	HTMLWorker htmlparser = new HTMLWorker(pdfDoc);
	PdfWriter.GetInstance(pdfDoc, Response.OutputStream);
	pdfDoc.Open();
	htmlparser.Parse(sr);
	pdfDoc.Close();
	Response.Write(pdfDoc);
	Response.End();
}
catch (Exception e)
{
	throw e;
}

Alguém já passou por isso e pode dar uma dica?

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por Alvaro_php
      Pessoal boa noite
      Tenho um sistema em Visual Basic 6 que utiliza um documento do Word que é enviado para as empresas, onde tenho algumas flags que são utilizadas para colocar no nome da empresa e endereço e que são enviadas via email

      Estou conseguindo converter esse documento do WORD em PDF sem problemas
      Private Sub ConverterWordParaPDF()

          On Error GoTo TrataErro
          Dim ObjWord2 As Word.Application
          Dim ObjWordDoc2 As Word.Document
          
          Set ObjWord2 = CreateObject('Word.Application')
          ObjWord2.Visible = False
          ObjWord2.DisplayAlerts = wdAlertsNone

          Set ObjWordDoc2 = ObjWord2.Documents.Open(App.Path + '\Documento.doc', True, True, False, Replace(Replace(Replace(Replace(Rs(1), '/', ''), '-', ''), '.', ''), '_', ''))

          ObjWordDoc2.ExportAsFixedFormat OutputFileName:= _
          App.Path + '\Documento.pdf', ExportFormat:=wdExportFormatPDF, _
          OpenAfterExport:=False, OptimizeFor:=wdExportOptimizeForPrint, Range:= _
          wdExportAllDocument, from:=1, To:=1, Item:=wdExportDocumentContent, _
          IncludeDocProps:=True, KeepIRM:=True, CreateBookmarks:= _
          wdExportCreateNoBookmarks, DocStructureTags:=True, BitmapMissingFonts:= _
          True, UseISO19005_1:=False
              
          ObjWord2.Visible = False
          ObjWord2.Quit (False)
          Set ObjWord2 = Nothing
      Exit Sub
      TrataErro:
        msgbox 'Erro ao converter o documento'
      End Sub

      Porém a senha que coloquei no word, não está ficando no arquivo pdf após a conversão, e também não achei nenhuma opção para incluir uma senha nesse novo arquivo

      Não estou usando o Crystal e o documento do word é um documento qualquer que o cliente usa, por isso que não da para utilizar o crystal

      Alguém sabe como que eu poderia fazer essa conversão e colocar a senha nesse novo arquivo ou teria alguma outra forma de converter esse documento para pdf que desse para colocar a senha

      Desde já agradeço a todos
    • Por Jack Oliveira
      Ola pessoal tarde ou boa noite 
       
      É o seguinte tenho mais de 10 mil registro no banco de dados, no DATATABLE esta demorando um pouco para fazer o carregamento destas informações
      o tempo varia entre 16 á 20, 25 segundos para obter uma resposta.
       
      Queria que esta resposta pudessem ser mais rápida, se teria como claro ela ser mais rápida possível...
       
      Fiz um novo teste quantidade de arquivos 1mil arquivos a resposta é bem rapida não demora nem 3 segundo 
       
      Estou usando via ajax e json
       
      <script type="text/javascript"> $(function () { $("#DataTableAjaxDT").DataTable({ "pageLength": 20, "paging": true, "lengthChange": true, "ajax": "ajax/registros.php", "searching": true, "aLengthMenu": [ [5, 10, 15, 20, 25, 30, 35, -1], [5, 10, 15, 20, 25, 30, 35, "Todos"] ], "ordering": true, "info": true, "autoWidth": true, "columnDefs": [{ "targets": 'no-sort', "orderable": false, }], "language": { "sEmptyTable": "Nenhum registro encontrado", "sInfo": "Mostrando de _START_ até _END_ de _TOTAL_ registros", "sInfoEmpty": "Mostrando 0 até 0 de 0 registros", "sInfoFiltered": "(Filtrados de _MAX_ registros)", "sInfoPostFix": "", "sInfoThousands": ".", "sLengthMenu": "Mostrar _MENU_ resultados por página", "sLoadingRecords": "Carregando...", "sProcessing": "Processando...", "sZeroRecords": "Nenhum registro encontrado", "sSearch": "Pesquisar", "oPaginate": { "sNext": "Próximo", "sPrevious": "Anterior", "sFirst": "Primeiro", "sLast": "Último" }, "oAria": { "sSortAscending": ": Ordenar colunas de forma ascendente", "sSortDescending": ": Ordenar colunas de forma descendente" } } }); }); </script>  
       
       
       
    • Por DuduBacteria
      Olá,
      table = $('.dataTable').DataTable({ 'destroy':true, 'ajax':{ 'url':DIRPAGE + '/painel/exibir-brinde/todos', 'method':'GET', 'dataSrc':'' }, 'columns':[ {'data':'nome'}, {'data':'doc'}, {'data':'brinde'}, {'data':'data'}, {'data':'empresa'}, {'defaultContent':'<td class="id"><button class="btn btn-success btn-resgatar" value="id_usuario" id_brinde="id_brinde"><i class="fas fa-plus-circle"></i> Resgatar </button></td>'} ] });  
    • Por Kefatif
      Prezados, boa tarde!
       
      Em uma tela faço o envio de arquivos PDF para uma pasta reservada para isso.
       
      Estou tendo dificuldade para criar um botão de download na tela de consultas, quando abro a página de consulta ele está me mostrando a seguinte mensagem: "Notice: Undefined variable: row in C:\xampp\htdocs\plataforma\indicadores\consultar.php on line 126"
       
      Podem me ajudar?
       
      <?php include_once 'autenticacao.php'; include_once'../conexao.php'; ?> <!DOCTYPE html> <html lang="pt-br"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="description" content=""> <meta name="author" content=""> <title>Envio de Ata</title> <link href="../css/estilo.css" rel="stylesheet"> <!-- Bootstrap Core CSS --> <link href="../css/bootstrap.css" rel="stylesheet"> <!-- Custom CSS --> <link href="../css/modern-business.css" rel="stylesheet"> <!-- Custom Fonts --> <link href="../font-awesome/css/font-awesome.min.css" rel="stylesheet" type="text/css"> <script src="../js/jquery.min.js"></script> </head> <body> <?php include_once 'nav-menu1.php'; ?> <!-- Page Content --> <div class="container" style="width: 90%"> <?php include_once 'cabecalho.php'; ?> <div class="row"> <?php include_once 'barra-lateral.php'; ?> <!-- Content Column --> <div class="col-md-9" style="width: 80%"> <h4><b>CONSULTAR UNIDADE</b></h4> <form class="form-inline" action="consultar.php" autocomplete="off" method="get"> <div id="form-callcenter"> <label style="width: 30%"> <input type="text" name="nome" class="form-control" placeholder="Digite o nome da unidade" style="width: 100%"> </label> <input type="submit" readonly value="Pesquisar" class="btn btn-primary"> </div> </form> <?php if (isset($_GET["nome"]) ) { $nome = $_GET["nome"]; include_once '../funcoes.php'; $sql = "select A.dt_envio, A.unidade, A.responsavel, A.observacao, A.anexo from controle_ata A where A.unidade like '%".$nome."%' order by A.dt_envio desc"; $result = mysqli_query($con, $sql); if (mysqli_num_rows($result) > 0) { ?> <table class="table table-hover table-bordered" id="tabela-dispensacao2"> <tr> <th>Unidade</th> <th>Data do envio</th> <th>Responsável</th> <th>Observação</th> <th>Ata</th> <th>Download</th> </tr> <?php if($row["anexo"] == ''){ $cor = "red"; }else{ $cor = "blue"; } while ($row = mysqli_fetch_array($result)){ foreach($row as $key => $values){ $row[$key]= utf8_encode($values); } ?> <tr> <td><?php echo $row["unidade"]?></td> <td><?php echo dataTela($row["dt_envio"]); ?></td> <td><?php echo $row["responsavel"]; ?></td> <td><?php echo $row["observacao"] ?></td> <td><?php echo $row["anexo"] ?></td> <td><a class="<?php if($row["ANEXO"] == ''){echo "link-nao-ativo";}?>" href='anexos/<?php echo $row["ANEXO"] ?>' target="_blank"> <i style="color:<?php echo $cor ?>" class="glyphicon glyphicon-download-alt"></i> </a> </td> </tr> <?php }//ENCERRANDO O WHILE ?> </table> <?php }else{ echo "Nenhuma unidade encontrada!<br>"; } } ?> <?php mysqli_close($con); ?> </div> </div> <!-- /.row --> </div> <!-- /.container --> <!-- jQuery --> <script src="../js/jquery.js"></script> <!-- Bootstrap Core JavaScript --> <script src="../js/bootstrap.min.js"></script> </body> </html>  
       
      Agradeço a ajuda desde já!
    • Por Mauricio Molina
      Ola pessoal,
       
      Estou com probleminha, preciso gerar um PDF de alguns dados do BD, até consegui gerar o PDF (quando especifico o id), mas preciso que ao clicar no botão corresponde de uma lista de ordem de serviço, o PDF seja gerado de acordo com o ID da ordem de serviço.
       

       
      Botão:
      <a type="button" class="btn btn-sm btn-info" href="gerar_pdf.php?id=<?php echo $rows_cursos['id']; ?>" target="_blank" >PDF</a> Gerar PDF:
      <?php include ('pdf/mpdf.php'); include_once("../conexao/conexao.php"); //Criar a conexão $conn = mysqli_connect($servidor, $usuario, $senha, $dbname); if(!$conn){ die("Falha na conexao: " . mysqli_connect_error()); }else{ //echo "Conexao realizada com sucesso"; } $id = '17'; //***Aqui seria onde busca o ID da Ordem de Serviço*** $result_usuario = "SELECT * FROM ordem_servico WHERE id = '$id' LIMIT 1"; $resultado_usuario = mysqli_query($conn, $result_usuario); $row_usuario = mysqli_fetch_assoc($resultado_usuario); $pagina = "<html> <body> <h2>Ordem de Serviço Eletrobrastec</h2><p></p> <strong>Empresa:</strong> Eletrobrastec                                          <strong>Data:</strong> ".$row_usuario['date']."              <strong>Número OS:</strong> ".$row_usuario['id']." <p></p> <strong>Edereço:</strong> Rua Santo Agostinho, 860            <strong>Bairro:</strong> Caiçara        <strong>Cidade:</strong> Praia Grande       <strong>UF:</strong> SP <p></p> <strong>CNPJ:</strong> 288.880.270/0018-1         <strong>DD:</strong> 13         <strong>Telefone:</strong> 99757-6400 <hr> <h2>Dados do Cliente</h2> <p></p> <strong>Nome:</strong> ".$row_usuario['nome']."                                          <strong>Data Execução:</strong> _______________________ <p></p> <strong>DD:</strong> ".$row_usuario['dd']."                       <strong>Telefone:</strong> ".$row_usuario['telefone']."               <strong>E-mail:</strong> ".$row_usuario['email']." <p></p> <strong>CPF:</strong> ".$row_usuario['cpf']."               <strong>CNPJ:</strong> ".$row_usuario['cnpj']." <p></p> <strong>Aparelho:</strong> ".$row_usuario['aparelho']."                 <strong>Modelo:</strong> ".$row_usuario['modelo']."                  <strong>Defeito:</strong> ".$row_usuario['defeito']." <p></p> <strong>Taxa:</strong> _______________________                       <strong>Valor Total:</strong> ".$row_usuario['v_total']." <p></p> <strong>Descrição Serviço:</strong> ".$row_usuario['desc_servico']." <p></p><p></p><p></p><p></p><p></p><p></p><p></p> <strong>Observações:</strong> _____________________________________________________________________________________________________ _____________________________________________________________________________________________________ _____________________________________________________________________________________________________ _____________________________________________________________________________________________________ _____________________________________________________________________________________________________ _____________________________________________________________________________________________________ <p></p><p></p><p></p><p></p> <label>*A taxa de visita apenas será cobrada caso o cliente não realize o serviço, caso não queira e posteriormente venha realizar, a mesma será descontada.<label> </body> </html> "; $arquivo = "ordemservico.pdf"; $mpdf = new mPDF(); $mpdf->WriteHTML($pagina); $mpdf->Output($arquivo, 'I'); // I - Abre no navegador // F - Salva o arquivo no servido // D - Salva o arquivo no computador do usuário ?> Neste caso percebem que esta sendo gerado um PDF com a ordem de serviço de ID 17, tudo correto, porem gostaria que neste item, fosse gerado de acordo com o botão clicado.
       
      $id = '17'; //***Aqui seria onde busca o ID da Ordem de Serviço*** $result_usuario = "SELECT * FROM ordem_servico WHERE id = '$id' LIMIT 1"; $resultado_usuario = mysqli_query($conn, $result_usuario); $row_usuario = mysqli_fetch_assoc($resultado_usuario);  
      Alguém pra dar uma força?
       
      Obrigado!
       
       
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.