페이지 레이아웃 만들기

페이지 레이아웃을 만드는 것은 속도와 메모리 측면에서 모두 비용이 많이 드는 절차가 될 수 있습니다. 이것은 여러 가지 이유 때문 입니다.:

  • 문서에는 많은 양의 콘텐츠가 있을 수 있으며,수천 페이지에 표시해야 할 수도 있습니다. 모든 페이지의 모든 객체의 기하학은 설명되어야 하며,메모리 자원을 소비해야 합니다.
  • 문서에는 기하학에 제약을 가하는 많은 규칙이있을 수 있습니다. 모든 제약이 충족되도록 상당한 계산 시간이 소요될 수 있습니다.
  • 일부 문서 기능(예: NUMPAGES 필드,계산 시 사용할 수 없는 미래의 속성 값에 대한 재귀 종속성을 만듭니다. 이것은 반복적인 계산으로 이어지고 계산 시간에 추가됩니다.

앞서 언급한 이유 때문에, Aspose.Words 필요한 경우에만 페이지 레이아웃을 만듭니다. 일반적인 이유는 문서 페이지를 렌더링하거나 페이지 레이아웃에서 사용할 수 있는 정보에 따라 달라지는 필드 값을 얻기 위한 요청입니다. 덜 분명한 이유는 문서를 다음과 같이 내보낼 수 있습니다 HTML. 비록 HTML 고정 페이지 형식이 아니며 콘텐츠 객체의 형상을 설명하지 않으며 여전히 이미지를 지원합니다. 이러한 이미지는 Microsoft Word 그 안에 텍스트가 있습니다. 예를 들어 축 레이블이 있는 차트를 다음과 같이 내보낼 수 있습니다 HTML 이미지로,하지만 전에 수행 할 수 있습니다 Aspose.Words 그 이미지를 렌더링해야하므로 레이블을 표시 할 위치를 알아야합니다. 아래 차트 예를 참조하십시오:

converting-to-fixed-page-format-aspose-words-cpp-1

비 기하학적 특성

기하학적 정보를 처리하는 것 외에도 페이지 레이아웃은 색상 및 테두리 스타일을 계산하는 데도 책임이 있습니다. 그 안에 Microsoft Word,텍스트 색상은 자동으로 지정될 수 있는데,이는 색상 선택이 셀이나 단락의 그림자 색상을 기반으로 하거나 텍스트가 나타나는 페이지의 색상을 기반으로 해야 한다는 것을 암시합니다.

페이지 레이아웃은 텍스트가 나타나는 위치와 그 뒤에 어떤 콘텐츠가 렌더링될지를 계산하여 색상 계산을 가능하게 합니다. 페이지 레이아웃에 의해 수행되는 다른 특정 계산이 있습니다. 예를 들어,테이블의 가로 테두리는 테이블 행이 텍스트 열의 마지막인지 여부와 열에 걸쳐 분할되어 있는지에 따라 달라집니다. 행이 열에서 마지막으로 렌더링되면 가로 대신 아래쪽 테두리가 사용됩니다.

converting-to-fixed-page-format-aspose-words-cpp-2

그 안에 Aspose.Words,사용자는 새로운 페이지 레이아웃을 구축하거나 기존 레이아웃을 업데이트할지 여부를 요청할 수 있습니다. 이 두 가지 모두 UpdatePageLayout 에 의해 제공되는 방법 Document 수업 페이지 레이아웃이 존재하지 않지만 필요한 경우(예:문서를 고정 페이지 형식으로 내보낼 때), Aspose.Words 이 메서드를 자동으로 호출합니다. 그러나 페이지 레이아웃이 이미 존재하는 경우, Aspose.Words 업데이트하는 데 필요한 자원을 사용하지 않기 위해 기존의 것을 사용할 것입니다. 이 경우 사용자는 UpdatePageLayout 페이지 레이아웃이 문서 모델과 최신 상태인지 확인하기 위한 방법입니다.

동적 구조

페이지 레이아웃 생성 과정은 다음 단계로 구성됩니다:

  • Conversion -문서 모델의 내용을 열거하고 해당 레이아웃 개체를 준비합니다.
  • Build -페이지에 문서의 내용을 나타내는 레이아웃 개체를 정렬.
  • Reflow -지오메트리 제약 조건을 만족시키기 위해 객체 배열을 업데이트합니다.
  • Projecting layout objects into fixed page presentation and finalizing color information.
  • Building and reflowing of shape content -문서에 중첩 된 텍스트 내용이있는 모양이 포함 된 경우 필요한 단계입니다.

페이지 레이아웃은 동적 구조이며 부분적으로 다시 작성할 수 있습니다. 이것은 특히 문서 레이아웃 구조를 다시 작성하지 않고 필드 값을 계산할 수 없는 경우에 필요합니다. 이 필드는 페이지에서 개체의 위치를 참조할 수 있으며,동시에 필드 값 자체도 페이지에 렌더링되어 참조된 개체의 위치에 영향을 줍니다. 페이지 레이아웃은 한 번에 만들 수 없습니다.페이지에 위치할 때 필드 값을 아직 사용할 수 없기 때문입니다.

일반적인 시나리오를 생각해 봅시다. NUMPAGES 필드가 문서의 첫 페이지 바닥글에 나타납니다. 이 필드의 값은 총 페이지 수입니다. 페이지에 필드를 배치하려면 해당 값을 알아야 합니다. 첫 페이지만 현재 작성 중인 경우 전체 페이지 수는 아직 알려져 있지 않습니다. 이 경우 페이지 레이아웃은 기본값을 사용하고 나중에 해당 필드로 돌아와 실제 계산에 따라 값을 변경해야합니다. 그러나 필드 값을 변경하면 페이지의 다른 문서 내용에 영향을 미치고 궁극적으로 새 페이지가 추가되거나 기존 페이지가 제거되어 계산된 값이 오래 될 수 있습니다. 이 문제는 기존 페이지 레이아웃을 업데이트 할 수있게하여 해결할 수 있습니다.

레이아웃을 만들 때,그것은 또한 설정할 수 있습니다 LayoutOptions 페이지의 문서 출력에 영향을 주는 속성입니다.