THotPDF.BuildLoadedPageSVG Method
선택한 로드된 PDF 페이지에서 독립적인 SVG 문서를 작성합니다
선언
function BuildLoadedPageSVG(PageIndex: Integer): AnsiString; overload;
function BuildLoadedPageSVG(PageIndex: Integer;
EmbedFonts: boolean): AnsiString; overload;
유닛
HPDFDoc
매개변수
| 이름 | 용도 |
|---|---|
PageIndex | 로드된 페이지의 0 기반 인덱스 |
EmbedFonts | True는 임베드 폰트의 글리프를 SVG에 아웃라인으로 기록하므로 해당 폰트가 설치되지 않은 환경에서도 페이지가 똑같이 보입니다. False, 그리고 이 매개변수 없는 오버로드는 텍스트를 viewer에 설치된 폰트에 맡깁니다 |
반환 값
완전한 SVG 문서를 반환하고, 페이지를 export할 수 없으면 빈 문자열을 반환합니다
사용 참고 사항
- path, 디코딩된 텍스트, image XObject, inline image, 재귀 Form XObject는 공유 content-device 인터프리터를 통해 출력됩니다. Form XObject는 그려지는 지점에서 유효한 색으로 시작합니다
- canvas는
/CropBox가/MediaBox로 클리핑된 페이지의 가시 부분을 (GetLoadedPageVisibleBox참조)/Rotate로 회전해 덮습니다. box가 원점에서 시작하지 않아도 box의 왼쪽 아래 모서리가 canvas 모서리에 대응합니다 - 텍스트는 문자마다
x위치 하나와xml:space="preserve"를 붙여 UTF-8로 기록되므로 공백이 유지됩니다. 합자 글리프는 나타내는 모든 문자로 펼쳐지고, XML 1.0이 허용하지 않는 코드는 U+FFFD가 됩니다 - 텍스트 배치는 character·word spacing, horizontal scaling, rise,
TJ조정을 포함한 전체 text matrix를 따릅니다. render mode 0~2는 칠하거나 선을 긋거나 둘 다 하고, mode 3은 아무것도 그리지 않으며, mode 4~7로 표시되는 텍스트의 글리프는 텍스트 객체 끝(ET)부터 graphics state 끝까지 클리핑 path에도 들어갑니다 - 기본값으로 텍스트는 설치된 폰트를 사용합니다. 표준 14개 패밀리와 그 TrueType 짝은 Helvetica 또는 Arial, Times New Roman, Courier New로 대응되고, 다른 폰트는 패밀리 이름, 즉 단어 사이 공백을 넣은 이름(
MyriadPro, Myriad Pro)으로 불린 뒤 폰트 디스크립터 flag나 이름에서 가져온 generic 패밀리가 붙습니다. 굵은 글씨와 이탤릭은 폰트 이름의 스타일 부분(Arial-BoldMT,Helvetica-Oblique,MinionPro-It)과 폰트 디스크립터의 weight, flag, italic 각도에서font-weight와font-style을 얻습니다 EmbedFonts를True로 설정하면 TrueType이나 CFF 프로그램이 PDF에 임베드된 폰트의 텍스트를 그 프로그램의 글리프 아웃라인에서 그립니다. 각 글리프는<defs>안에<path>로 한 번만 정의되고 나타나는 자리마다<use>로 놓이므로 반복 문자가 아웃라인을 반복하지 않습니다. 채우기·선 모드, 선 폭, 텍스트 클리핑은 SVG 텍스트에서와 똑같이 텍스트를 따릅니다. 텍스트 자체는 아웃라인 위에 투명한 SVG 텍스트로 남으므로 여전히 선택, 검색, 보조 기술로 읽기가 가능합니다- 임베드되지 않은 폰트, Type 1 폰트 프로그램(
/FontFile), 세로 쓰기 CJK, 임베드된 프로그램에 글리프가 없는 코드가 포함된 구간은EmbedFonts를 설정해도 SVG 텍스트로 남습니다. 아웃라인은 파일을 키우는데, 텍스트가 많은 페이지에서는 흔히 두세 배가 됩니다 - 어떤 color space(
DeviceGray,DeviceRGB,DeviceCMYK, ICCBased, calibrated, Lab, Indexed, Separation, DeviceN)에서 설정한 채우기·선 색도 페이지 렌더러와 같은 방식으로 sRGB로 변환됩니다 - tiling pattern으로 채워진 path는 매
XStep,YStep마다 pattern 셀을 반복하는 SVG<pattern>으로 채워지며, pattern의/BBox로 클리핑됩니다. 무색 pattern은 pattern과 함께 주어진 색으로 셀을 칠합니다. shading pattern으로 채워진 path는 그 shading의 gradient나 mesh를 path로 클리핑해 얻습니다. pattern 행렬은 페이지의 공간, 또는 그 pattern을 쓰는 form의 공간에서 적용됩니다. pattern을 쓰는 선은 그 색을 따르고, 컬러 pattern은 검정을 씁니다 - Type 2 axial과 Type 3 radial shading은 한도가 있는 샘플링 stop을 쓰는 SVG gradient로 처리합니다.
Extend가 확장하지 않는 끝은 PDF에서와 마찬가지로 칠하지 않습니다 - Type 4부터 Type 7까지 mesh shading은 최대 1,600만 픽셀로 한도가 정해진 투명 PNG data URI를 사용합니다
- inline image는 동일한 로드 문서 이미지 경로로 디코딩되어 PNG data URI로 삽입됩니다
- image mask(inline 포함)는 현재 채우기 색의 PNG 이미지가 되며, 칠해지지 않은 부분은 투명합니다.
/SMask와/Maskstencil은 이미지에 알파 채널을 부여하고, 마스크 해상도가 이미지보다 좋으면 그 해상도를 따릅니다. color-key/Mask배열은 Flate, LZW, 무필터 이미지에서 일치하는 픽셀을 투명하게 만듭니다 W와W*클리핑 path는 자신이 설정된 graphics state에서 끝나는 SVG<clipPath>요소가 됩니다. Form XObject는 자기/BBox로 클리핑되고, axial·radial shading도 제각각의 BBox로 클리핑됩니다- Type 3 글꼴의 텍스트는 SVG 텍스트 대신 그 글꼴의 글리프 절차로,
/FontMatrix를 통해 놓여 그려집니다.d1으로 시작하는 글리프는 현재 채우기 색으로 칠합니다. Type 3 글리프는 render mode 4~7의 클리핑 path에 더해지지 않습니다 - shading의
Background색은 shading보다 먼저 shading pattern 영역을 채우므로 shading이 칠하지 않는 곳에서 보입니다. PDF에서와 마찬가지로 shading이sh로 그려질 때는 무시됩니다 - Type 1 function 기반 shading은 자신의
Domain위에서 샘플링되어 최대 256x256 샘플의 PNG data URI가 되고 shading의Matrix로 놓입니다. 확대·축소할 때 viewer가 부드럽게 다듬습니다