Pergunta

Temos um aplicativo (uma ferramenta de gerenciamento de rede personalizada para automação de construção) que suporta rótulos de impressão que você pode cortar e inserir nos monitores frontais dos dispositivos. Nas versões anteriores da ferramenta (não desenvolvidas na minha empresa), o aplicativo acabou de empurrar as seqüências de caracteres para um arquivo do Excel que o técnico de campo poderia manipular (como o texto de formatação). Não fizemos isso na nova versão porque era difícil (impossível) manter o arquivo do Excel em sincronia e evitar uma ligação a um aplicativo externo (muito menos versões diferentes do Excel).

Estamos usando Pdfsharp para renderizar os rótulos. Ele possui uma interface do tipo System.-Drawing, mas pode ser lançada para um sistema.Drawing.Graphics (Screen / Impressor), bem como para um arquivo PDF, que é um requisito.

Posteriormente, a formatação básica foi introduzida como família de fontes, estilo, tamanho, cor que se aplicaria a um rótulo (ou seja, a exatamente uma corda). Agora, o cliente deseja poder aplicar esses formatos a caracteres únicos em uma string. Eu acho que a maneira mais fácil seria apoiar um subconjunto de RichText. Não é tão fácil quanto eu pensei.

Atualmente, o editor exibe apenas uma caixa de texto para o rótulo que você deseja editar, com a fonte definida para a fonte da etiqueta. Pensei em substituí -lo pelo RichTextBox e atualizar os botões de formatação para usar as propriedades RichTextBox Formating. Bastante fácil. No entanto, preciso desenhar o texto. Eu sei que você pode fazer com que o RichTextBox desenhe para um HDC ou System.Drawing.Graphics - mas, como já foi dito, preciso que ele use o PDFSharp. Renderizar para o Bitmaps não é uma opção, pois o PDF não deve ser enorme e são muitas etiquetas. Infelizmente, eu não consegui fazer o RichTextBox para me dizer o layout do texto - estou bem em fazer a renderização real manualmente, desde que saiba onde desenhar o quê. Esta é a primeira pergunta: Como posso obter as métricas de layout adequadamente do texto rico de uma caixa richtext? Ou existe alguma maneira de converter o texto rico em um formato de gráfico vetorial que pode ser facilmente desenhado manualmente?

Eu sei sobre Nrtftree que pode ser usado para analisar e manipular o RichText. A documentação é ruim (na verdade, eu não sei, é espanhol), mas acho que posso fazê -lo funcionar. Tanto quanto eu entendi, ele também não fornecerá layouting. Por causa disso, acho que vou ter que escrever um controle de edição personalizado (lembre -se, é basicamente apenas um ou dois rótulos de linha com formatação básica de RTF, não um controle de edição completo - mais como editar uma caixa de texto no PowerPoint) e escrever lógica de layout de texto personalizada que usava pdfsharp em vez de sistemas. Existe alguma solução existente, mesmo parcial, disponível, para a edição ou para fazer o layout manualmente (ou ambos)?

Ou existe uma abordagem totalmente diferente que não estou vendo? Pontos de bônus se exportar os textos da etiqueta como RTF para um arquivo CSV e, em seguida, a importação no Excel mantém a formatação.

Para a parte de edição, preciso que funcione nos formulários do Windows. Fora isso, não se relaciona com o Windows-Forms, eu acho.

Foi útil?

Solução

Ou existe uma abordagem totalmente diferente que não estou vendo?

Para importar a RTF da área de transferência, usamos um richentryfield oculto, colá -lo inteiro nele, selecionamos o primeiro caractere e consultamos os formatos que apoiamos (fonte, tamanho, negrito, itálico, sublinhado, ...), selecione o segundo caractere e consulte os formatos ...

Não é a solução fácil que você está procurando, mas você não precisa analisar o RTF.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top