RichEdit 및 RTF 페이지 매김 가져오기

THotPDF.ImportRTF는 RTF를 Windows RichEdit에 로드하고, THotPDF.ImportRichEdit는 기존 컨트롤을 PDF 페이지로 페이지 매깁니다

렌더링 모델

페이지 매김은 바운딩된 페이지 사각형으로 EM_FORMATRANGE을 사용하고, 각 페이지를 향상된 메타파일로 전송합니다

RichEdit 및 EMF 파이프라인이 노출하는 방식에 따라 텍스트, 글꼴 변경, 단락 서식, 벡터 규칙 및 기타 GDI 작업은 PDF 텍스트 또는 벡터 연산자로 유지됩니다

RTF pict 데이터와 RichEdit 지원 정적 OLE 프레젠테이션은 동일한 EMF 경로로 전달되므로, 전체 페이지 래스터화가 필요하지 않습니다

스레딩 및 수명 주기

보안 및 예산

THPDFRTFImportOptions.Default는 입력을 16 MiB, 텍스트를 4,000,000자, 출력을 1,000페이지, 누적 EMF 데이터를 256 MiB로 제한합니다

내장 OLE는 기본적으로 비활성화되며 AllowOLE=True가 필요합니다. Windows RichEdit가 설치된 OLE 핸들러 표면을 소유하므로, 이를 활성화하는 것은 신뢰할 수 있는 RTF로 제한해야 합니다

CancellationToken은 페이지 사이에서 확인되고, 추가 페이지를 렌더링하지 않고 risCancelled을 반환합니다

결과 보고

THPDFRTFImportStatistics는 입력 바이트, 문자 범위, 렌더링 및 추가된 페이지, 누적 메타파일 바이트, OLE 존재, 잘림 및 안정적인 THPDFRTFImportStatus를 보고합니다

예산 소진, 잘못된 페이지 지오메트리, 잘못된 스레드 호출, 진행 없는 페이지 매김 및 렌더링 실패는 특정 상태와 함께 False를 반환합니다

예제

Options := THPDFRTFImportOptions.Default;
Options.PageWidth := 612;
Options.PageHeight := 792;
Options.MarginLeft := 54;
Options.MarginRight := 54;

Document.BeginDoc;
RTFStream.Position := 0;
if not Document.ImportRTF(RTFStream, Options, Statistics) then
  raise Exception.CreateFmt(
    'RTF import failed with status %d',
    [Ord(Statistics.Status)]
  );

추가 정보: THotPDF.ImportRTF, THotPDF.ImportRichEdit, SVG Form XObject 가져오기