Back-End

3 nov, 2008

Gerando PDF a partir de uma página HTML com ASP

Publicidade

Neste artigo você verá que é fácil gerar PDF a partir de uma URL usando o ASP e o Componente Persits.Pdf.

Para começar, você encontra o Componente Persits.Pdf nesse link. Efetue o download, que tem uma licença para teste, instale e vamos lá!

Crie uma página de exemplo chamada GeradorPDF.asp e coloque o seguinte código:

<!--METADATA TYPE="TypeLib" UUID="{414FEE4B-2879-4090-957E-423567FFCFC6}"-->
<%
    Dim Pdf, Doc, Page
    Set Pdf = Server.CreateObject("Persits.Pdf")
    Set Doc = Pdf.CreateDocument

        Doc.ImportFromUrl "http://www.terra.com.br"
        Doc.Encrypt "7658tedk4784584754747584484584854484545", "", 40, PdfFull And (Not PDFModify) And (Not PDFCopy)

        For Each Page In Doc.Pages
            Page.Canvas.DrawText "Pág."Page.Index"/"Doc.Pages.Count"", "x=15, y=20", Doc.Fonts("Arial")
        Next

    Doc.SaveHttp("attachment; filename=GerarPDF.pdf")
%>

Na sétima linha:

Doc.ImportFromUrl “http://www.terra.com.br”

Colocamos o Link, que pode ser definitivo como ´http://teste.com.br/default.asp´ ou default.html, para ser gerado o nosso PDF.

Qual server será utilizado para identificar os parâmetros de bloqueio do seu PDF a ser gerado, como por exemplo, não copiar, não imprimir, dentre outros que estão nesse link (http://www.asppdf.com/manual_08.html), são referências do Componente.

E é com essa linha de comando, Doc.Encrypt “7658tedk4784584754747584484584854484545”, “”, 40, PdfFull And (Not PDFModify) And (Not PDFCopy), que colocamos os comandos de Encrypt. Inseri uma seqüência de números qualquer e você, caso queira, pode criar sua própria (acesse o manual para mais informações).

Atenção a esta linha de código:

PdfFull And (Not PDFModify) And (Not PDFCopy)

É nela que você vai colocar os parâmetros que define o que o usuário vai mexer no PDF, exemplo: eu deixei um default que é o PdfFull e bloqueei para ele não modificar e para não copiar. Veja a tabela do que você pode colocar a mais e o peso em Bit aqui:

pdfFull = HFFFFFFFC (all significant bits)

pdfPrint = H04 (Bit 3)

pdfModify = H08 (Bit 4)

pdfCopy = H10 (Bit 5)

pdfAnnotations = H20 (Bit 6)

pdfForm = H0100 (Bit 9)

pdfExtract = H0200 (Bit 10)

pdfAssemble = H0400 (Bit 11)

pdfPrintHigh = H0800 (Bit 12)

For Each Page In Doc.Pages

Page.Canvas.DrawText “Pág.”Page.Index”/”Doc.Pages.Count””, “x=15, y=20”, Doc.Fonts(“Arial”)

Next

Aqui coloco a quantidade de páginas que existem no meu arquivo, da seguinte forma: ´Pág. 1/5´, com fonte Arial; o x e y são só espaçamentos, veja no manual.

E por fim:

Doc.SaveHttp(“attachment; filename=GerarPDF.pdf”)

Salvo no Computador do usuário. Simples, simples!

Abraços, amigos!