Ir para conteúdo

POWERED BY:

Arquivado

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

Aviss

[Resolvido] VDOPrint

Recommended Posts

Eu estou criando um documento pra imprimir direto pra impressora utilizando o VDOPrint, está quase pronto, mas não sei como colocar alinhamento justificado, ou quebra de linha (se realmente for possível fazer as duas coisas) para ficar como uma formatação de documento do word.

Alguém sabe?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso você mesmo terá de programar seu algoritmo para fazer, terá de calcular o número de caracteres por linha e então fazer a justificação.

Marcio,

o que eu fiz foi:

 

var 
I, X   : integer;
texto : string;
...
I := 1;
X := 56;
while I < length(texto) do begin
	 print(03, copy(texto,I, X), true);
	 I := I + 56;
end;

O texto fica justificado, mas o que quero é que ao chegar no fim da linha, ela seja quebrada certinha como acontece no word, sem que parte da palavra fique na linha de cima e outra parte na próxima linha. Por exemplo:

texto := 'O rato roeu a roupa do rei de roma';

Se eu quebrar a linha na palavra roupa, ou roupa fica na mesma linha ou ela vai toda para a linha seguinte, não sendo dividida.

Alguma dica?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entrei em contato com o Vinicius e ele me disse que realmente não tem como colocar alinhamento justificado com o VDOPrint.

Eu queria testar inicialmente em impressora laser, mas o objetivo mesmo é imprimir o texto numa matricial, a solução que encontrei foi essa que segue abaixo (caso alguém precise), que ainda to testando se pode ser adaptada às minhas necessidades:

 

{ A impressora Epson LX-300 dispõe de um comando que justifica o texto. Este recurso é interessante, pois com ele podemos continuar a enviar os comandos de formatação de caracteres como condensado, negrito, italico, expandido, etc.

 

Para o exemplo abaixo:

- Coloque um botão no form;

- Altere o evento OnClick deste botão como abaixo: }

 

procedure TForm1.Button1Click(Sender: TObject);
const
cJustif = #27#97#51;
cEject = #12;
 
{ Tamanho da fonte }
c10cpi = #18;
c12cpi = #27#77;
c17cpi = #15;
cIExpandido = #14;
cFExpandido = #20;

{ Formatação da fonte }
cINegrito = #27#71;
cFNegrito = #27#72;
cIItalico = #27#52;
cFItalico = #27#53;

var
Texto: string;
F: TextFile;

begin
  Texto := c10cpi +
  'Este e um teste para impressora Epson LX 300. ' +
  'O objetivo e imprimir texto justificado sem deixar ' +
  'de usar formatacao, tais como: ' +
  cINegrito + 'Negrito, ' + cFNegrito +
  cIItalico + 'Italico, ' + cFItalico +
  c17cpi + 'Condensado (17cpi), ' + c10cpi +
  c12cpi + '12 cpi, ' + c10cpi +
  cIExpandido + 'Expandido.' + cFExpandido +
  ' Este e apenas um exemplo, mas voce podera adapta-lo ' +
  'a sua realidade conforme a necessidade.';

  AssignFile(F, 'LPT1');
  Rewrite(F);
  try
	 Writeln(F, cJustif, Texto); 
	 Writeln(F, cEject);
  finally
	 CloseFile(F);
  end;
end;

 

Agradeço ao Marcio pelas dicas http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

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