Antes o método pra gerar o PDF era Execute(), mas cada documento tinha uma ordem diferente.
A fim de evitar problemas, foi gerado um novo método, igual pra todos, e na mesma ordem.
Adicionalmente, tudo foi centralizado em DaGeral.
O uso agora é assim:
LOCAL oDanfe, cLogoFile, cXmlEmissao, cFilePDF, cXmlCancelamento
cLogoFile := "JPEGLogotipo" // pode ser arquivo.jpg ou MemoRead( "arquivo.jpg" ) ou equivalente
cXmlEmissao := "XMLEmissao" // pode ser arquivo.xml ou MemoRead( "emissao.xml" ) ou equivalente
cXmlCancelamento := "XMLCancelamento" // pode ser arquivo.xml ou MemoRead( "cancelamento.xml" ) ou equivalente
cFilePdf := "arquivo.pdf" // aqui é nome mesmo
oDanfe := hbNFeDaGeral():New()
oDanfe:cLogoFile := cLogoFile
oDanfe:cDesenvolvedor := "JoseQuintas"
oDanfe:ToPDF( cXmlEmissao, cFilePDF, cXmlCancelamento )
o primeiro parâmetro é sempre o documento que será gerado PDF: pode ser NFE, CTE, MDFE ou um xml de evento
O segundo parâmetro é o nome do PDF
o terceiro parâmetro é opcional, será usado pra complementar informações.
- Se é uma emissão, o complemento poderá ser um xml de cancelamento, pra imprimir a tarja de cancelamento
- Se é um evento, o complemento será o XML de emissão, pra poder pegar as informações da nota e preencher todo PDF de evento
Nota:
Poderá ser usada a chamada direta de cada tipo de documento auxiliar, mas neste caso não vai haver a opção de usar nome de arquivo para XMLs.
É só pra informação. Mas pra que usar diferente, se dá pra usar sempre a mesma coisa?
oDanfe := hbNfeDaNfe():New()
oDanfe := hbNfeDaCte():New()
oDanfe := hbNFeDaMDFe():New()
oDanfe := hbNfeDaEvento():New()
// não precisa mais usar as classes acima, basta usar:
oDanfe := hbNFeDaGeral():New()
O opcional de arquivo ou conteúdo é pra atender quem usa MySQL ou base de dados pra guardar os XMLs, assim não precisa criar arquivo temporário.
Esta foi a forma inicial criada, mas como muitos ainda usam arquivos em disco, passou a permitir os dois tipos de uso.
Será considerado arquivo quando o tamanho do texto for inferior a 100 caracteres.
Acho difÃcil alguém usar um nome de arquivo ( incluindo diretório + nome ) com 100 caracteres.
E também nenhum XML é menor que 100 caracteres.
Então acredito que desta forma seja suficiente pra detectar nome de arquivo ou texto.