RE:Grabar dw a pdf automaticamente
Hola
Te paso un Scrip que Publico hace un tiempo Celso Cortes
Gerando um PDF sem caixa de dialogo no Win 9x, ME, NT, 2000 e XP
Verifiquei que esta é uma dúvida de muitos desenvolvedores, não só em PB, mas este espaço se destina ao PowerBuilder então os exemplos de script só valem para o PB, mas as dicas servem para qualquer desenvolvedor.
Primeiro :
Para se gerar um PDF, você deve ter um utilitário para isto, exitem muitos, não só os da Adobe®, embora todos utilizem os drives do Adobe Acrobat®, proprietária da tecnologia PDF(Portable Documment Format).
Aqui na PowerBuilder você pode baixar o GERAPDF para Win 9x ou baixar o PDF995 para todos os sistemas MS Windows®
O "X" desta questão é que ao se gerar um PDF, um "prompt" da impressão aparece pedindo o nome do arquivo PDF e o seu diretório destino, o que se torna muito deselegante para um sistema corporativo e confuso para um usuário leigo, além de provocar erros por atribuição de nomes impróprios para o aplicativo.
Para solucionar este problema, uma solução simples existe, mas não é divulgada pela Adobe® nem por desenvolvedores dos pacotes de configuração e geração de PDF.
O fim do mistério, são duas soluções uma para Win9x e ME e outra para NT, 2000 e XP.
Para Win9x e ME
Basta escrever no arquivo pdfwritr.ini que se encontra na windows/system os parâmetros de impressão, toda vez que o drive do PDF acha o nome do arquivo a ser gerado nos parâmetros do pdfwritr.ini a caixa de dialogo é suprimida.
Os parâmetros são :
[Acrobat PDFWriter]
PDFFILENAME="PATH_COMPLETA_ONDE_SERA_GERADO_O_PDF.PDF"
Apenas esta linha é o suficiente para suprimir a caixa de dialogo da impressão, existem outros parâmetros de configuração como tamanho da página, autor, nome do produto, nome do documeto etc, em breve todos os parâmetros estaram disponiveis aqui na PowerBuilder.
Para o NT, 2000 e XP.
No NT, 2000 e XP, deve-se escrever nos REGISTROS, pôs este sistemas se configuram pelos registros e não por arquivos tipo .INI .
Você terá que escrever na HKCUSoftwareAdobeAcrobat PDFWriter onde ( HKCU = HKEY_CURRENT_USER ).
Escreva : HKCUSoftwareAdobeAcrobat PDFWriterPDFFileName
Para ficar mais fácil, segue uma rotina genérica para todos os sistemas.
[ PowerScript]
Crie uma função e coloque este código, passe como parâmetro a path completa do arquivo a ser gerado tipo : C:SISTEMAPAGAMENTOFOLHA.PDF, aqui vamos chamar de path_pdf.
///////////////////////////////////////////////////////////////////////////////////////////////
//Rotina para geração de PDF
// Entrada : path_pdf Caminho completo aonde será criado o PDF
// Saída : Return THRU se tudo ocorreu bem / False caso erro
///////////////////////////////////////////////////////////////////////////////////////////////
environment wk_sis
GetEnvironment (wk_sis)
CHOOSE CASE wk_sis.OsType
CASE WindowsNT!
IF RegistrySet("HKEY_CURRENT_USERSoftwareAdobeAcrobat PDFWriter",
"PDFFileName", RegString!, path_pdf) = -1 THEN
RETURN FALSE
END IF
IF RegistrySet("HKEY_CURRENT_USERSoftwareAdobeAcrobat PDFWriter",
"bExecViewer", RegString!, "0") = -1 THEN
RETURN FALSE
END IF
IF RegistrySet("HKEY_CURRENT_USERSoftwareAdobeAcrobat PDFWriter",
"bDocInfo", RegString!, "0") = -1 THEN
RETURN FALSE
END IF
CASE Windows!
IF SetProfileString("PDFWRITR.INI", "Acrobat PDFWriter", "PDFFileName",
path_pdf) <> 1 THEN
RETURN FALSE
END IF
IF SetProfileString("PDFWRITR.INI", "Acrobat PDFWriter", "bExecViewer",
"0") <> 1 THEN
RETURN FALSE
END IF
IF SetProfileString("PDFWRITR.INI", "Acrobat PDFWriter", "bDocInfo", "0")
<> 1 THEN
RETURN FALSE
END IF
CASE ELSE
RETURN FALSE
END CHOOSE
RETURN TRUE
/////////////////////////////////////////////////////////////
SUERTE !!!!!!!!!