2010-03-19 6 views
0

우리는 잘라내어 장치의 전면 디스플레이에 삽입 할 수있는 레이블 인쇄를 지원하는 응용 프로그램 (건물 자동화 용 사용자 지정 네트워크 관리 도구)을 가지고 있습니다. 이전 버전의 도구 (회사에서 개발되지 않은)에서 응용 프로그램은 문자열을 필드 기술자가 조작 할 수있는 Excel 파일로 밀어 넣었습니다 (텍스트 서식 지정과 같음). Excel 파일을 동기화 된 상태로 유지하고 외부 응용 프로그램 (다른 Excel 버전 제외)에 바인딩하는 것을 어렵게하는 것은 불가능하기 때문에 새 버전에서는이 작업을 수행하지 않았습니다.RichText 편집 및 렌더링

라벨을 렌더링하는 데 PDFSharp을 사용하고 있습니다. 그것은 System.Drawing과 같은 인터페이스를 가지고 있지만, System.Drawing.Graphics (스크린/프린터)와 PDF 파일로 출력 할 수 있습니다.

나중에 한 라벨 (즉 정확히 한 문자열)에 적용되는 글꼴 모음, 스타일, 크기, 색상과 같은 기본 서식이 도입되었습니다. 이제 고객은이 형식을 문자열의 단일 문자에 적용 할 수 있기를 원합니다. RichText의 하위 집합을 지원하는 것이 가장 쉬운 방법이라고 생각합니다. 생각만큼 쉽지는 않습니다.

현재 편집자는 편집하려는 레이블의 TextBox를 레이블의 글꼴로 설정된 글꼴로 표시합니다. RichTextBox로 바꾸고 서식 지정 단추를 업데이트하여 RichTextBox 서식 지정 속성을 사용한다고 생각했습니다. 꽤 쉬운. 그러나 텍스트를 그려야합니다. RichTextBox를 HDC 또는 System.Drawing.Graphics로 그릴 수 있다는 것을 알고 있습니다. 그러나 이미 말했듯이 PDFSharp를 사용해야합니다. 비트 맵으로의 렌더링은 옵션이 아닙니다. PDF가 거대하지 않아야하고 레이블이 많기 때문입니다. 불행히도 RichTextBox를 사용하여 텍스트의 레이아웃을 알 수 없었습니다. 실제로 무엇을 그려야하는지 알고있는 한 손으로 직접 렌더링하는 것이 좋습니다. 이것은 첫 번째 질문입니다. 서식있는 텍스트의 메트릭스를 RichTextBox에서 올바르게 가져올 수있는 방법은 무엇입니까? 또는 서식있는 텍스트를 벡터 그래픽 형식으로 변환 할 수있는 방법이 있습니까 은 수동으로 쉽게 그릴 수 있습니다?

나는 약 NRTFTree을 알고 있으며 리치 텍스트를 구문 분석하고 조작하는 데 사용할 수 있습니다. 문서가 좋지 않습니다 (사실 저는 스페인어로되어 있습니다.),하지만 제대로 작동 할 수 있다고 생각합니다. 늘어나는만큼 내가 이해, 그것은뿐만 아니라 레이아웃을 제공하지 않습니다. 이 때문에 저는 사용자 지정 편집 컨트롤을 작성해야 할 것입니다 (기본적으로 기본 RTF 서식이있는 하나 또는 두 개의 줄 레이블로 완전한 편집 컨트롤이 아니라 PowerPoint에서 텍스트 상자 편집과 같음). 드로잉을 위해 System.Drawing 대신 PDFSharp를 사용하는 사용자 정의 텍스트 레이아웃 로직. 레이아웃을 수동으로 (또는 둘 다) 편집하거나 레이아웃을 수행 할 때 사용할 수있는 부분 솔루션이 있습니까?

아니면 전혀 다른 접근 방식이 있습니까? 보너스는 레이블 텍스트를 RTF 형식으로 CSV 파일로 내보내고 Excel에서 가져 오는 경우 형식을 유지합니다.

편집 부분은 Windows Forms에서 작동해야합니다. 그 외에도 Windows-Forms과 관련이 없습니다.

답변

1

아니면 전혀 다른 접근 방식이 있습니까?

, 우리는 숨겨진 RichEntryField를 사용하여 클립 보드에서 RTF를 가져 그것으로 전체 텍스트를 붙여, 첫 번째 문자를 선택하고 우리가 지원하는 형식을 조회하려면 (글꼴, 크기, 굵게, 기울임 꼴, 밑줄 ...) 두 번째 문자를 선택하고 형식을 쿼리하십시오 ...

당신이 찾고있는 쉬운 해결책은 아니지만 직접 RTF를 구문 분석 할 필요는 없습니다.

+0

입력 해 주셔서 감사합니다. 실용적인 솔루션처럼 들립니다. 수동 레이아웃에 대한 필요성을 해결하지 못하고 PDFSharp로 가져 오는 방법도 아닙니다 :) – OregonGhost

+0

나는 이것을 받아들입니다. 레이아웃 알고리즘을 수동으로 구현했는데 PDFsharp와 GDI +가 약간 다르게 렌더링되는 것처럼 보이지만 실제로는 레이아웃 알고리즘이 매우 만족 스럽습니다. 우리의 테스트는 우리가 지원하고자하는 모든 경우에 적용됩니다. – OregonGhost