KR100840863B1 - 문서 처리 장치 및 문서 처리 방법 - Google Patents

문서 처리 장치 및 문서 처리 방법 Download PDF

Info

Publication number
KR100840863B1
KR100840863B1 KR1020060018739A KR20060018739A KR100840863B1 KR 100840863 B1 KR100840863 B1 KR 100840863B1 KR 1020060018739 A KR1020060018739 A KR 1020060018739A KR 20060018739 A KR20060018739 A KR 20060018739A KR 100840863 B1 KR100840863 B1 KR 100840863B1
Authority
KR
South Korea
Prior art keywords
layout
template
sub
data
content data
Prior art date
Application number
KR1020060018739A
Other languages
English (en)
Other versions
KR20060095505A (ko
Inventor
히또시 오사까
사또시 오따
Original Assignee
캐논 가부시끼가이샤
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 캐논 가부시끼가이샤 filed Critical 캐논 가부시끼가이샤
Publication of KR20060095505A publication Critical patent/KR20060095505A/ko
Application granted granted Critical
Publication of KR100840863B1 publication Critical patent/KR100840863B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/103Formatting, i.e. changing of presentation of documents
    • AHUMAN NECESSITIES
    • A47FURNITURE; DOMESTIC ARTICLES OR APPLIANCES; COFFEE MILLS; SPICE MILLS; SUCTION CLEANERS IN GENERAL
    • A47DFURNITURE SPECIALLY ADAPTED FOR CHILDREN
    • A47D13/00Other nursery furniture
    • A47D13/04Apparatus for helping babies to walk; Baby walkers
    • A47D13/043Baby walkers with a seat
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B62LAND VEHICLES FOR TRAVELLING OTHERWISE THAN ON RAILS
    • B62BHAND-PROPELLED VEHICLES, e.g. HAND CARTS OR PERAMBULATORS; SLEDGES
    • B62B7/00Carriages for children; Perambulators, e.g. dolls' perambulators
    • B62B7/04Carriages for children; Perambulators, e.g. dolls' perambulators having more than one wheel axis; Steering devices therefor
    • B62B7/042Steering devices
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B62LAND VEHICLES FOR TRAVELLING OTHERWISE THAN ON RAILS
    • B62BHAND-PROPELLED VEHICLES, e.g. HAND CARTS OR PERAMBULATORS; SLEDGES
    • B62B2301/00Wheel arrangements; Steering; Stability; Wheel suspension
    • B62B2301/08Wheel arrangements; Steering; Stability; Wheel suspension comprising additional wheels to increase stability

Abstract

레코드마다 레이아웃을 변경하는 것이 가능한 멀티레코드 대응의 자동 레이아웃 기능을 갖는 문서 처리 장치 및 방법을 제공한다. 템플릿에 설정된 플로우 영역에 정의되어 있는 조건식에 기초하여, 콘텐츠 데이터를 유입시킬 서브템플릿을 결정한다. 해당 콘텐츠 데이터가 유입되어 있는 서브템플릿을 플로우 영역내에 레이아웃할 수 없는 경우, 미리 정해진 플로우 영역을 갖는 페이지를 복제한다.
가변 프린트, 템플릿, 플로우 영역, 레이아웃 편집, DTP

Description

문서 처리 장치 및 문서 처리 방법{DOCUMENT PROCESSING APPARATUS AND DOCUMENT PROCESSING METHOD}
도 1a는 본 발명의 실시예에 따른 컴퓨터 시스템의 구성을 도시하는 도면.
도 1b는 본 발명의 실시예에 따른 컴퓨터 시스템의 구성을 도시하는 도면.
도 2는 본 발명의 실시예에 따른 컴퓨터 모듈을 개략적으로 도시한 도면.
도 3은 메뉴바, 툴바, 작업 영역, 플로팅 팔레트를 갖는 전형적인 애플리케이션의 메인 윈도우와, 컨테이너 사이의 링크를 갖는 전형적인 컨테이너의 일례를 도시하는 도면.
도 4는 본 발명의 실시예에 따른 인터페이스의 일례에 기초한 컨테이너의 16개 표현 패턴의 일례를 도시하는 도면.
도 5a는 본 발명의 실시예에 따른 전형적인 컨테이너 룰의 일례를 도시하는 도면.
도 5b는 본 발명의 실시예에 따른 전형적인 컨테이너 룰의 일례를 도시하는 도면.
도 5c는 본 발명의 실시예에 따른 전형적인 컨테이너 룰의 일례를 도시하는 도면.
도 6a는 본 발명의 실시예에 따른 링크를 작성하기 위한 UI의 일례를 도시하 는 도면.
도 6b는 본 발명의 실시예에 따른 링크를 작성하기 위한 UI의 일례를 도시하는 도면.
도 6c는 본 발명의 실시예에 따른 링크를 작성하기 위한 UI의 일례를 도시하는 도면.
도 7a는 본 발명의 실시예에 따른 레이아웃 계산의 플로우의 일례를 도시하는 도면.
도 7b는 본 발명의 실시예에 따른 레이아웃 계산의 플로우의 일례를 도시하는 도면.
도 8a는 본 발명의 실시예에 따른 도 7의 플로우에 대응하기 위한 UI의 일례를 도시하는 도면.
도 8b는 본 발명의 실시예에 따른 도 7의 플로우에 대응하기 위한 UI의 일례를 도시하는 도면.
도 8c는 본 발명의 실시예에 따른 도 7의 플로우에 대응하기 위한 UI의 일례를 도시하는 도면.
도 9는 본 발명의 실시예에 따른 멀티레코드의 아웃라인을 도시하는 도면.
도 10은 본 발명의 제1 실시예에서의 전체 플로우의 일례를 도시하는 도면.
도 11은 본 발명의 제1 실시예에서의 도 10의 UI의 일례를 도시하는 도면.
도 12는 본 발명의 제1 실시예에서의 플로우 영역의 설정 다이얼로그의 UI의 일례를 도시하는 도면.
도 13은 본 발명의 제1 실시예에서의 서브템플릿의 레이아웃의 일례를 도시하는 도면.
도 14는 본 발명의 제1 실시예에서의 서브템플릿의 레이아웃 플로우의 일례를 도시하는 도면.
도 15는 본 발명의 제1 실시예에서의 조건식의 설정을 위한 UI의 일례를 도시하는 도면.
도 16a는 본 발명의 제1 실시예에서의 조건식에 의한 판정 플로우의 일례를 도시하는 도면.
도 16b는 본 발명의 제1 실시예에서의 조건식에 의한 판정 플로우의 일례를 도시하는 도면.
도 17은 본 발명의 제1 실시예에서의 플로우 영역내의 레이아웃 계산 플로우의 일례를 도시하는 도면.
도 18a는 본 발명의 제1 실시예에서의 서브템플릿의 레이아웃의 일례를 도시하는 도면.
도 18b는 본 발명의 제1 실시예에서의 서브템플릿의 레이아웃의 일례를 도시하는 도면.
도 19는 복수 페이지에 걸치는 플로우 영역을 설정하기 위한 UI의 일례를 도시하는 도면.
도 20은 플로우 영역의 위치와 사이즈를 변경하기 위한 UI의 일례를 도시하는 도면.
도 21a는 반복되는 플로우 영역과 그 플로우 영역에 데이터가 삽입된 상태를 개략적으로 도시하는 도면.
도 21b는 반복되는 플로우 영역과 그 플로우 영역에 데이터가 삽입된 상태를 개략적으로 도시하는 도면.
도 22a 및 도 22b는 복수 페이지에 걸치는 플로우 영역에 서브템플릿을 레이아웃하는 플로우의 일례를 도시하는 도면.
도 23은 템플릿 데이터의 구성의 일례를 도시하는 도면.
도 24는 멀티레코드의 템플릿 데이터의 구성의 일례를 도시하는 도면.
도 25a는 본 발명의 제1 실시예에서의 레이아웃 편집 시스템의 동작을 설명하는 도면.
도 25b는 본 발명의 제1 실시예에서의 레이아웃 편집 시스템의 동작을 설명하는 도면.
도 25c는 본 발명의 제1 실시예에서의 레이아웃 편집 시스템의 동작을 설명하는 도면.
도 26은 본 발명의 제3 실시예에서의 조건식의 설정을 위한 UI의 일례를 도시하는 도면.
도 27a는 본 발명의 제3 실시예에서의 레이아웃 처리 플로우를 도시하는 도면.
도 27b는 본 발명의 제3 실시예에서의 레이아웃 처리 플로우를 도시하는 도면.
도 28은 본 발명의 제3 실시예에서의 서브템플릿의 레이아웃 플로우를 도시하는 도면.
도 29는 본 발명의 제3 실시예에서의 브레이크(Break) 처리의 일례를 도시하는 도면.
도 30은 제4 실시예에서의 외부 참조가 가능한 조건식의 포맷을 나타내는 도면.
도 31은 본 발명의 제4 실시예에서의 외부 조건식의 판독 처리 플로우를 도시하는 도면.
도 32는 레이아웃 계산시의 컨테이너의 집합을 설명하기 위한 도면.
도 33은 레이아웃 최적화 처리를 설명하기 위한 도면.
도 34는 가변 프린트의 일례를 도시하는 도면.
도 35는 본 발명의 제3 실시예에서의 브레이크 처리의 일례를 도시하는 도면.
도 36은 레이아웃 편집 애플리케이션에 의한 레이아웃 편집 처리의 기능 구성예를 도시하는 블록도.
<도면의 주요 부분에 대한 부호의 설명>
100: 가변 프린트 시스템
101: 호스트 컴퓨터
103: 사용자 인터페이스
105: 레이아웃 엔진
107: 네트워크 접속
109: 프린트 서버
111: 통신채널
113: 프린터
115: 파일 서버
117: 데이터베이스 서버
119: 데이터베이스
121: 레이아웃 편집 애플리케이션
131: 템플릿 데이터
[특허문헌1] 일본 특허공개 평7-129658호
[특허문헌2] 일본 특허공개 제2000-48216호([0025]∼[0055] 단락, 도 2 및 도 11)
본 발명은 예를 들어, 데이터베이스에 등록된 레코드의 각 필드를 미리 정한 위치에 레이아웃하여 문서를 완성시키는 자동 레이아웃 기능을 갖는 문서 처리 장치 및 문서 처리 방법에 관한 것이다.
최근, 상품의 품종 증가로 상품의 라이프 사이클이 짧아지고 인터넷 이용의 보급으로 소비자들이 맞춤화된 서비스를 지향하는 등의 요인으로 인하여, 고객 관 계 관리(CRM) 및 원투원 마케팅(One-to-One Marketing)의 필요성이 주목받고 있다. 이들 방법은 고객 만족도를 높이고 고객을 개척하고 확보하는 것을 목표로 한다.
고객 관계 관리(CRM)는 고객 데이터베이스에 기초하여 개개인의 니즈에 따른 대응을 취함으로써, 고객의 만족도를 높이고 나아가 회사의 수익성을 향상시키는 방법이다. 원투원 마케팅은 데이터베이스 마케팅의 일종으로, 고객의 연령, 성별, 취미, 취향, 구매 이력 등의 개인 속성 정보를 데이터베이스화하고, 그 정보의 내용을 분석하여, 고객의 니즈에 맞는 제안을 행하는 마케팅 기법이다. 이 마케팅 기법의 대표적인 적용예로서 가변 프린트를 들 수 있다. 최근, 데스크탑 퍼블리싱(DTP: desktop publishing) 기술의 진전과 디지털 인쇄 장치의 보급에 수반하여, 문서를 고객마다 맞춤화하여 맞춤화된 문서를 출력하는 것이 가능한 가변 프린트 시스템이 개발되었으며, 고객마다 콘텐츠의 양을 다르게 하여 최적화된 방식으로 문서를 레이아웃하여 작성해 달라고 요청하는 경우가 일어나고 있다.
종래, 가변 프린트 시스템에서는, 문서상에 레이아웃 프레임("컨테이너"라고도 한다)이 작성되고 일정한 조건을 충족하는 데이터베이스내의 레코드나 필드가 각 컨테이너에 그 컨테이너의 콘텐츠로서 연결된다. 이와 같은 방식으로 데이터베이스와 레이아웃 사이의 연결이 확립됨으로써 가변 프린트가 실현되었다.
그러나, 종래의 가변 프린트 시스템에서는, 텍스트 및 이미지의 컨테이너 사이즈가 고정되어 있기 때문에, 데이터가 데이터베이스로부터 컨테이너에 삽입될 때에, 그 데이터량이 컨테이너의 사이즈보다 많다면, 텍스트의 중첩(overlap; 오버랩) 및 이미지의 잘림(clipping; 클리핑)이 발생한다. 또한, 그 데이터량이 컨테 이너의 사이즈보다 적다면 공간이 비게 된다.
이러한 문제를 해결하기 위한 기술로서, 일본 특허공개 평7-129658호 공보에는 어떤 문자 영역의 사이즈가 크게 된 경우, 그 문자 영역에 인접한 영역의 사이즈를 작게 하는 기술이 개시되어 있다. 이 문헌에는 문자 영역에 문자를 입력하는 것에 따라 그 문자 영역의 사이즈는 확장하되 그 문자 영역에 인접한 영역의 사이즈는 축소하는 방법이 기재되어 있다.
앞서 설명한 바와 같이, 입력되는 텍스트량에 따라서 레이아웃 프레임(컨테이너)의 사이즈를 동적으로 변화시키는 것이 가능한 종래의 자동 레이아웃 기술이 존재한다.
일본 특허공개 제2000-48216호 공보([0025]∼[0055] 단락, 도 2 및 도 11)에는 복수 항목의 상품 정보(상품 레코드)를 페이지내의 레이아웃 영역에 레이아웃하는 기술도 기재되어 있다.
이 기술에서는, 예를 들어 상품명, 이미지, 가격 등의 레이아웃을 미리 설정해 둔 마스터 부품(본 발명의 서브템플릿에 대응함)을 준비하고, 각 상품 정보 항목에 대하여 어떤 마스터 부품을 사용할지를 설정한다. 그리고, 상품 정보에 포함되는 데이터(상품명, 이미지, 가격 등)를 설정된 마스터 부품내의 미리 정해진 영역에 레이아웃함으로써, 페이지내에 지정된 레이아웃 영역에 순서대로 레이아웃되도록 한다. 본 명세서에서는 서브템플릿에 맞도록 하나의 레코드내에 정보를 레이아웃하여, 복수의 서브템플릿을 플로우 영역에 순서대로 레이아웃하는 기능을 멀티레코드 기능이라고 부르며, 그 동작을 "서브템플릿을 플로우 영역에 유입시킨다"라 고 표현한다.
일본 특허공개 평7-129658호 공보에 기재된 기술에는 텍스트의 입력에 따라서 문자 영역을 확대시킨다고 기재되어 있다. 그러나, 문자 영역의 사이즈가 커진 경우, 인접 영역은 이들 영역 사이의 간격을 유지하기 위하여 축소된다. 이 때문에, 입력되는 텍스트량이 증가하는 것에 따라, 인접 영역이 계속하여 축소된다고 하는 문제점이 있다.
일본 특허공개 평7-129658호 공보에는 데이터베이스와 각 레이아웃 영역을 연결하면서 콘텐츠 데이터를 유입시킴으로써 고객마다 맞춤화된 문서를 작성하는 전술한 바와 같은 가변 프린트 시스템에 대해서는 고려하고 있지 않다.
일본 특허공개 제2000-48216호 공보에 기재된 기술에서는, 각 레코드마다 어떤 마스터 부품을 사용할 것인가를 미리 설정해 둘 필요가 있다. 예를 들어, 레코드 수가 상당히 많다면, 레코드 수의 증가에 따라서 그 설정을 위한 조작 횟수도 증가하기 때문에 사용자의 조작성을 떨어뜨리게 된다.
사용자에 따라서는 서로 유사한 데이터 속성을 갖는 레코드에 대해서 동일한 마스터 부품을 사용하기를 원하는 경우도 생각해 볼 수 있다. 예를 들어, 레코드 1∼10을 이용하여 문서를 작성하는 경우, 레코드 2 및 5에 대해서 동일한 가격 데이터가 설정되어 있다면, 사용자는 레코드내에 공통되는 데이터 속성을 갖고 있는 레코드 2 및 5에 대해서 동일한 마스터 부품을 사용하여 문서를 작성하고자 할 수도 있다.
이러한 경우, 일본 특허공개 제2000-48216호 공보에 기재된 기술에서는, 레코드마다 어떤 마스터 부품을 사용할지를 미리 설정해 두어야 한다. 그 때문에, 레코드 2에 사용한 마스터 부품을 기억해 두고, 레코드 5에 마스터 부품을 설정할 때에 사용자 자신의 기억에 의지하여 마스터 부품을 선택해야 한다. 그러나, 통상 팜플렛이나 카탈로그를 작성할 때의 레코드 수는 방대해질 것이 예상되므로, 더 많은 수의 마스터 부품이 사용된다. 이러한 상황에서는 사용자가 자신의 기억에만 의지하여 마스터 부품을 선택하는 방법이 가장 적합하다라고는 말하기 어렵다.
일본 특허공개 제2000-48216호 공보에 기재된 기술에서는, 지정된 레이아웃 영역에 레코드가 담겨지는 신뢰도의 관점에서, 레이아웃 영역에 레이아웃할 레코드 수에 따라서 그 신뢰도가 만족스럽지 않을 수 있다. 이 기술에 따르면, 1 페이지분의 레이아웃 영역만을 설정하는 경우, 레코드를 다음 레이아웃 후보 위치로 이동시켜 레이아웃하면 된다. 그러나, 일본 특허공개 제2000-48216호 공보에서는 다음 레이아웃 후보 위치로 이동시킬 수 없는 경우의 처리에 대해서는 기재되고 있지 않다. 그 결과, 데이터의 레이아웃 실패를 피할 수 없다고 하는 문제가 발생한다.
이와 같이, 레코드 전체를 레이아웃할 수 없는 경우에 수행되는 일반적인 처리로서, 레이아웃할 데이터를 축소(scale down)하는 방법을 생각해볼 수 있다. 그러나, 레이아웃할 데이터의 사이즈를 변경하면, 사용자가 원하는 레이아웃 사이즈를 얻는데 실패할 가능성이 있다.
사용자가 그 사용자의 고객의 좋아할만한 팜플렛이나 카탈로그 등을 작성하는 경우, 종래 기술만으로는 사용자에게 개선된 조작성을 제공하면서 다양한 고객의 취향을 충족시키는 문서를 작성하기가 곤란하다.
또한, 종래의 멀티레코드 인쇄(복수의 레코드를 하나의 문서에 레이아웃하여 문서를 인쇄하는 기능)에서는, 단지 1계층의 분할, 즉 레코드내의 특정한 항목이 변경된 때에만 문서를 분할하는 것이 가능했다. 예를 들어, "고객명" 항목의 내용이 변경된 경우, "고객명" 항목의 내용별로, 즉 각 고객별로 문서가 분할된다. 또한, "상품명" 항목의 내용이 변경된 경우, "상품명" 항목의 내용별로, 즉 각 상품별로 문서가 분할된다. 이러한 멀티레코드 인쇄에서는, 예를 들어 각 상품마다 페이지 단락("Page Break"라고도 함)을 삽입할 필요가 있는 경우 원하는 위치에 문서 단락(document division)을 삽입할 수 없다. 즉, 정돈된 문서를 작성하거나 또는 문서에 원하는 단락을 포함시켜 작성하는 것이 곤란하다.
본 발명은 전술한 문제점을 감안하여, 적절한 사용자의 조작성을 유지한 채로 고객의 취향에 따른 다양한 출력 결과를 얻기 위해, 템플릿상의 영역에 조건식을 설정하고, 해당 조건식에 기초하여 추출된 레코드 데이터를 복수 종류의 서브템플릿에 레이아웃하고, 이 서브템블릿을 미리 정해진 영역내에 레이아웃하는 자동 레이아웃 기능을 갖는 문서 처리 장치 및 방법을 제공하는 것을 목적으로 한다.
본 발명의 또 다른 목적은, 레이아웃할 데이터의 사이즈를 축소하지 않고 사용자가 원하는 출력 결과를 얻기 위해, 추출된 레코드를 영역내에 레이아웃할 수 없는 경우, 해당 영역을 갖는 페이지를 자동적으로 생성하는 자동 레이아웃 기능을 갖는 문서 처리 장치 및 방법을 제공하는 것이다.
본 발명의 또 다른 목적은, 문서의 단락 삽입의 자유도를 높임으로써, 정돈 된 레이아웃 또는 사용자의 의지가 반영된 레이아웃을 실현할 수 있도록 한 멀티레코드 대응 자동 레이아웃 기능을 갖는 문서 처리 장치 및 방법을 제공하는 것이다.
본 발명에 따르면, 상기 목적을 달성하기 위해, 레이아웃 대상 콘텐츠 데이터에 따라서, 그 콘텐츠 데이터를 데이터베이스로부터 추출하기 위한 추출 조건이 설정되어 있는 영역을 갖는 템플릿상의 레이아웃을 동적으로 변경 가능한 문서 처리 장치로서: 상기 추출 조건을 충족시키는 콘텐츠 데이터를 상기 데이터베이스로부터 취득하는 취득부와; 상기 콘텐츠 데이터의 그룹과 상기 콘텐츠 데이터의 레이아웃을 위한 복수의 서브템플릿 사이의 연결에 대한 연결 정보로부터 상기 취득부에 의해 취득된 콘텐츠 데이터의 그룹들이 레이아웃될 하나 또는 복수의 서브템플릿을 특정하는 특정부와; 상기 특정부에 의해 특정된 하나 또는 그 이상의 서브템플릿에 대하여 상기 콘텐츠 데이터의 그룹을 상기 영역에 레이아웃하여 출력 결과를 작성하는 레이아웃부를 포함하는 문서 처리 장치가 제공된다.
상기 구성에서, 데이터베이스는 도 2의 데이터베이스(119)에 대응하며, 취득부, 특정부 및 레이아웃부는 레이아웃 편집 애플리케이션(121)에 대응한다. 특히, 취득부는 레이아웃 편집 애플리케이션(121)에 의해 실행되는 도 16a의 S1601에 대응한다. 또한, 특정부는 레이아웃 편집 애플리케이션(121)에 의해 실행되는 도 16a의 S1602 및 도 16b의 수순에 대응한다. 레이아웃부는 레이아웃 편집 애플리케이션(121)에 의해 실행되는 도 16a의 S1605 내지 S1607에 대응한다.
본 발명에 따르면, 레이아웃 대상 콘텐츠 데이터에 따라서, 그 콘텐츠 데이 터를 데이터베이스로부터 추출하기 위한 추출 조건이 설정되어 있는 영역을 갖는 템플릿상의 레이아웃을 동적으로 변경 가능한 문서 처리 장치로서: 상기 추출 조건을 충족시키는 콘텐츠 데이터를 상기 데이터베이스로부터 취득하는 취득부와; 상기 취득부에 의해 취득된 콘텐츠 데이터를 상기 영역에 레이아웃할 수 없는 경우 상기 영역을 갖는 페이지를 새롭게 생성하는 생성부를 포함하는 문서 처리 장치가 제공된다.
상기 구성에서, 데이터베이스는 도 2의 데이터베이스(119)에 대응하며, 취득부 및 생성부는 레이아웃 편집 애플리케이션(121)에 대응한다. 특히, 취득부는 레이아웃 편집 애플리케이션(121)에 의해 실행되는 도 16a의 S1601에 대응한다. 또한, 생성부는 레이아웃 편집 애플리케이션(121)에 의해 실행되는 도 22b의 S2215에 대응한다. 도 22b의 S2215에서는 페이지를 파기하고 있다. 이것은 생성 수단과 양립하지 않는 것같이 보인다. 그러나, S2215에서 파기되는 페이지는 이미 레이아웃을 끝낸 페이지이다. 이 페이지상의 콘텐츠를 파기함으로써 빈 페이지가 확보되며 거기에 새로운 페이지가 생성된다.
본 발명에 따르면, 레이아웃 대상 콘텐츠 데이터에 따라서, 그 콘텐츠 데이터를 데이터베이스로부터 추출하기 위한 추출 조건 및 단락 방법이 설정되어 있는 영역을 갖는 템플릿상의 레이아웃을 동적으로 변경 가능한 문서 처리 장치로서: 상기 추출 조건을 충족시키는 콘텐츠 데이터를 상기 데이터베이스로부터 취득하는 취득부와; 복수의 단락 방법 중 어느 하나를 설정하는 설정부와; 상기 취득부에 의해 취득된 콘텐츠 데이터를 상기 영역에 레이아웃함에 있어서 상기 설정부에 의해 설 정된 어느 하나의 단락 방법에 따라서 문서를 구획하여 콘텐츠 데이터를 레이아웃하고 문서 데이터를 작성하는 레이아웃부를 포함하는 문서 처리 장치가 제공된다.
상기 구성에서, 데이터베이스는 도 2의 데이터베이스(119)에 대응하며, 취득부, 특정부 및 레이아웃부는 레이아웃 편집 애플리케이션(121)에 대응한다. 특히, 취득부는 레이아웃 편집 애플리케이션(121)에 의해 실행되는 도 27a의 S2701에 대응한다. 또한, 설정부는 레이아웃 편집 애플리케이션(121)의 UI 모듈에 의해 실행되는 도 26의 UI에 대응한다. 레이아웃부는 레이아웃 편집 애플리케이션(121)에 의해 실행되는 도 27a의 S2706내지 S2714에 대응한다.
본 발명에 따르면, 템플릿상의 영역에 조건식을 설정하고, 해당 조건식에 기초하여 추출된 레코드 데이터를 복수 종류의 서브템플릿에 레이아웃하며, 미리 정해진 영역내에 서브템플릿이 레이아웃되도록 함으로써, 적절한 사용자의 조작성을 유지한 채로 고객의 취향에 따른 다양한 출력 결과를 얻는 것이 가능하다.
본 발명에 따르면, 추출된 레코드를 영역내에 레이아웃할 수 없는 경우, 해당 영역을 갖는 페이지가 자동적으로 생성되도록 함으로써, 레이아웃할 데이터의 사이즈를 축소하지 않고, 사용자가 원하는 레이아웃 문서를 얻는 것이 가능하다.
또한, 문서의 단락 삽입의 자유도를 높여 정돈된 레이아웃 또는 사용자의 의지가 반영된 레이아웃이 실현된다.
본 발명의 그 밖의 특징 및 장점은 동일 내지 유사한 부분을 동일한 참조 문자로써 지칭하고 있는 첨부 도면을 참조한 아래의 상세한 설명으로부터 보다 명확해질 것이다.
[제1 실시예]
<실시예의 개요>
이하, 본 발명이 적절하게 구현될 수 있는 바람직한 실시예에 대하여 설명한다. 먼저, 발명의 개요에 대하여 설명한다. 본 실시예는 문서 템플릿(단순히 "템플릿"이라고도 한다)에 정의된 컨테이너(데이터가 유입되는 부분 영역이며, "필드 영역"이라고도 한다)에 따라서, 데이터베이스의 레코드 등이 레이아웃되는 문서를 작성하는 기능, 즉 가변 프린트라고 하는 기능을 컴퓨터에 의해 실현하기 위한 컴퓨터 소프트웨어에 관한 것이다. 이 소프트웨어가 실행 가능하게 로드된 컴퓨터는 자동 레이아웃 시스템(또는 문서 처리 장치)으로서 기능한다. 특히, 본 실시예에서는 데이터를 템플릿에 따라서 레이아웃하는 기능뿐만 아니라, 템플릿에 따라서 문서의 일부를 작성하여, 그 문서의 일부를 템플릿에 별도로 정의된 영역("플로우 영역"이라고 한다)에 삽입하여 문서를 완성시키는 기능(멀티레코드 기능)을 갖는 소프트웨어를 개시하고 있다. 하나의 플로우 영역에 삽입할 수 있는 문서의 일부의 수는 하나에 한하지 않는다. 또한, 템플릿에 복수의 플로우 영역이 정의되어 있는 경우, 일정한 조건에 따라서 작성 완료한 문서의 일부를 플로우 영역마다 분류하는 기술도 개시되어 있다. 플로우 영역내에 레이아웃되는 템플릿을 특히 서브템플릿이라고 한다. 또한, 플로우 영역을 포함하는 템플릿을 특히 마스터템플릿이라고 한다.
본 실시예의 자동 레이아웃 시스템은 2개의 기능적 특징을 갖는다. 첫번째는 하나의 페이지에 모든 레코드가 들어갈 수 없는, 예를 들어 레코드의 수가 매우 많은 경우, 새로운 페이지에 레코드를 레이아웃하여, 복수 페이지의 문서를 자동적으로 생성하는 기능이다. 두번째는 각 레코드를 그 레코드에 따른 형식(서브템플릿)을 이용하여 레이아웃하여 문서의 레이아웃의 자유도를 높이는 기능이다. 다음으로, 본 발명을 적용 가능한 본 실시예에서의 컴퓨터 시스템의 구성 및 애플리케이션 구성에 대하여 설명한다.
<시스템 구성도>
도 1a는 가변 데이터 문서를 인쇄하는 시스템(100)을 도시하고 있다. 본 명세서에 개시된 방법은 도 1b를 참조하여 아래에서 상세하게 설명되는 범용 컴퓨터 모듈(101)내의 미리 정해진 프로그램을 실행함으로써 실현된다. 도 1a에 도시된 프로세스는 컴퓨터 모듈(101)내에서, 시스템(100)상에서 실행가능한 레이아웃 편집 애플리케이션 프로그램(121)과 같이 소프트웨어의 전체 또는 일부분으로서 실행된다. 특히, 레이아웃 편집 및 인쇄 단계는 본 발명의 문서 처리 장치인 컴퓨터(101)에 의해 실행되는 소프트웨어의 지시에 따라 수행된다. 소프트웨어는 예를 들어, 아래에서 설명되는 기억장치를 포함하는 컴퓨터 판독가능 매체에 저장된다. 소프트웨어는 컴퓨터 판독가능 매체로부터 컴퓨터에 로드되어 컴퓨터(101)에 의해 실행된다. 이러한 소프트웨어 또는 컴퓨터 프로그램을 기록하고 있는 컴퓨터 판독가능 매체는 컴퓨터 프로그램 제품이다. 컴퓨터는 그 컴퓨터 프로그램 제품을 사용함으로써 문서의 레이아웃 편집이나 가변 데이터 프린트를 행할 수 있는 장치로서 기능한다.
컴퓨터 모듈(101)에는 키보드(132) 및 마우스(133)와 같은 포인팅 디바이스 등의 입력장치가 연결된다. 컴퓨터 모듈(101)에는 또한 디스플레이(144)나 상황에 따라서는 로컬 프린터(145)를 포함하는 출력장치가 연결될 수 있다. 입출력 인터페이스(138)는 컴퓨터 모듈(101)을 네트워크 접속(107)을 통해 시스템(100)의 다른 컴퓨터 장치에 연결하는 것이 가능하다. 전형적인 네트워크 접속(107)의 예는 LAN 또는 WAN이 있다.
컴퓨터 모듈(101)은 일반적으로 적어도 하나의 프로세서 유닛(135), 예를 들어 반도체 RAM 또는 ROM으로 구성되는 메모리부(136), 비디오 인터페이스(137)를 포함하는 I/O 인터페이스, 및 키보드(132)나 마우스(133)에의 인터페이스를 위한 I/O 인터페이스(143)를 포함하고 있다.
기억장치(139)는 일반적으로 하드디스크 드라이브(140) 및 플렉시블 디스크 드라이브(141)를 포함한다. 도 1b에는 도시하지 않았지만 자기 테이프 드라이브도 사용될 수 있다. CD-ROM 드라이브(142)는 불휘발성의 데이터 소스로서 제공된다. 컴퓨터 모듈(101)은 GNU/LINUX(등록상표)나 마이크로소프트사의 Windows(등록상표)와 같은 오퍼레이팅 시스템의 제어에 의해, 또는 컴퓨터 시스템의 통상적인 동작 모드에 의한 방법에 의해 상호 접속 버스(134)를 통하여 통신을 행하는 컴퓨터 모듈(101)에 포함되는 각 구성요소(부호 135∼143)를 이용한다.
도 1a의 레이아웃 편집 애플리케이션 프로그램(121)은 일반적으로 도 1b의 하드디스크 드라이브(140)에 상주하며, 프로세서(135)에 의해 실행, 판독 및 제어된다. 경우에 따라, 레이아웃 편집 애플리케이션 프로그램(121)이 CD-ROM 또는 플렉시블 디스크상에 인코드되어 있고, 대응하는 플렉시블 디스크 드라이브(142) 또 는 CD-ROM 드라이브(141)를 통하여 판독되어 사용자에게 제공된다. 또 다른 방법으로서, 애플리케이션 프로그램(121)은 네트워크 접속(107)을 통해 사용자에 의해 판독될 수도 있다. 또한, 소프트웨어가 자기 테이프, ROM, 집적회로, 광자기 디스크, 무선 통신, 또는 컴퓨터 모듈(101)과 다른 디바이스간의 적외선 통신, PCMCIA 카드와 같은 컴퓨터 판독가능 카드, 그리고 전자메일 통신, WEB 사이트상의 기록 정보를 갖는 인터넷 매체, 또는 인트라넷 매체를 포함하는 적당한 크기의 다른 컴퓨터 판독가능 매체로부터 컴퓨터 모듈(101)내에 로드될 수도 있다. 이상의 예는 단지 관련 컴퓨터 판독가능 매체의 일례이다. 다른 컴퓨터 판독가능 매체도 사용될 수 있다.
레이아웃 편집 애플리케이션(121)은 가변 데이터 프린트(VDP)를 행하도록 하는 명령문을 가지며 2개의 소프트웨어 컴포넌트를 포함한다. 첫번째 컴포넌트는 레이아웃 엔진(105)이다. 이것은 직사각형의 컨테이너에 부여된 제한이나 사이즈에 따라 컨테이너를 구성하는 직사각형 및 선의 위치를 계산하기 위한 소프트웨어 컴포넌트이다. 레이아웃 엔진(105)은 또한 컨테이너외에도 오브젝트의 위치도 계산할 수 있다. 레이아웃 엔진(105)은 각 부분 영역(예컨대, 컨테이너)의 사이즈와 위치를 결정하는 애플리케이션으로서 동작하여, 도시를 생략한 프린터 드라이버에 묘화 정보를 출력함으로써, 프린터 드라이버가 가변 데이터 문서의 이미지 묘화 처리를 수행하여 인쇄 데이터를 생성할 수 있도록 한다.
두번째 컴포넌트인 사용자 인터페이스(103)는 사용자가 문서 템플릿을 작성할 수 있도록 하며, 문서 템플릿내에서 데이터 소스와 연결하는 메커니즘을 제공한 다. 문서 템플릿은 정형적인 문장이나 전술한 컨테이너를 문서상에 레이아웃하기 위한 양식(model)이 되는 데이터이다. 문서 템플릿의 미리 정해진 영역, 예를 들어 컨테이너내에 데이터베이스로부터 취해진 텍스트나 화상 등의 데이터가 유입됨으로써 문서가 완성된다.
사용자 인터페이스(103)와 레이아웃 엔진(105)은 통신채널(123)을 통하여 통신한다. 문서 생성을 위한 데이터 소스는 일반적으로 데이터베이스 애플리케이션을 동작시키는 다른 컴퓨터에 의해 구성된 데이터베이스 서버(117)상의 일반적인 데이터베이스(119)이다. 호스트 컴퓨터(101)는 네트워크 접속(107)을 통해 데이터베이스 서버(117)와 통신한다. 레이아웃 편집 애플리케이션은 호스트 컴퓨터(101)나 다른 컴퓨터로 구성되는 파일 서버(115)에 저장되는 문서 템플릿을 생성한다. 또한, 레이아웃 편집 애플리케이션은 데이터와 머지된(merge) 문서 템플릿에 의해 구성되는 문서를 생성한다. 레이아웃 편집 애플리케이션에 의해 생성되는 이들 문서는 호스트 컴퓨터(101)의 로컬 파일 시스템에 저장되거나, 파일 서버(115)에 저장되거나, 또는 프린터(113)에 직접 인쇄된다. 프린트 서버(109)는 직접 네트워크에 연결되어 있지 않은 프린터에 네트워크 기능을 제공하는 컴퓨터이다. 프린트 서버(109)와 프린터(113)는 일반적인 통신채널(111)을 통하여 접속된다.
템플릿 데이터(131)는 문서 템플릿이라고도 하는데, 데이터베이스 등으로부터 판독한 레코드가 매립되는 컨테이너라고 하는 영역이나 고정 데이터 등이 정의되어 있는 문서의 양식 데이터이다. 이 데이터의 구성은 도 23 및 도 24를 참조하여 후술하기로 한다.
도 34는 본 실시예에 따른 가변 데이터 프린트의 개략을 설명하는 도면이다. 레이아웃 편집 애플리케이션(121)의 사용자 인터페이스 모듈(103)(사용자 인터페이스(103)라고도 한다)은 사용자로부터의 조작 지시에 따라 페이지상에 복수의 컨테이너(345∼347)를 레이아웃하며, 각 컨테이너에 위치나 사이즈에 관한 제약 조건을 부여함으로써 문서 템플릿(344)을 생성한다.
사용자 인터페이스(103)는 문서 템플릿(344)과 데이터 소스(340)와의 연결뿐만 아니라 각 컨테이너와 데이터 소스(340)내의 각 데이터 필드와의 연결을 행한다. 각 컨테이너와 데이터 소스(340)내의 각 데이터 필드와의 연결 정보는 문서 템플릿내에 기술되며, 해당 문서 템플릿은 HDD(140) 또는 메모리부(136)에 저장된다.
데이터 소스(340)는 레코드 단위로 항목 데이터(가변 데이터)가 기재되어 있는 파일이다. 데이터 소스(340)는 HDD(140)에 저장되어 있다. 레이아웃 엔진(105)은 사용자로부터의 인쇄 지시 또는 프리뷰 지시에 따라서 연결된 가변 데이터를 데이터 소스(340)로부터 판독하여, 그 데이터를 문서 템플릿의 각 컨테이너(345∼347)에 레코드 단위로 유입시키고(예컨대, 데이터 레코드 1의 데이터 필드 A∼C를 컨테이너(345∼347)에 유입시킨다), 유입시킬 데이터의 사이즈에 따라서 각 컨테이너의 사이즈 등을 조정(레이아웃 조정)한다. 레이아웃 조정의 방법에 대해서는 후술하기로 한다.
프리뷰 지시가 제공된 경우, 레이아웃 조정된 문서 이미지를 생성하여, 비디오 디스플레이(144)의 화면상에 프리뷰로서 표시하도록 출력된다. 인쇄 지시가 제 공된 경우, 레이아웃 엔진(105) 또는 프린터 드라이버를 이용하여 생성한 문서 이미지를 인쇄 데이터로서 프린터 서버(109)에 출력한다. 데이터 레코드 1, 2, 3, …를 순서대로 처리함으로써 가변 데이터 프린트가 실현된다.
문서 생성을 위한 데이터 소스(340)는 예를 들어, 데이터베이스 애플리케이션을 동작시키는 다른 컴퓨터에 의해 구성된 데이터베이스 서버(117)상의 일반적인 데이터베이스(119)일 수도 있다. 이 경우, 호스트 컴퓨터(101)는 네트워크(107)를 통하여 데이터베이스 서버(117)와 통신함으로써 데이터 소스를 취득할 수 있다. 레이아웃 편집 애플리케이션(121)에 의해 생성된 가변 데이터 프린트를 위한 문서 템플릿(344)은 호스트 컴퓨터(101) 또는 다른 컴퓨터로 구성되는 파일 서버(115)에 저장된다. 도 1a에서 전술한 바와 같이, 레이아웃 편집 애플리케이션(121)의 레이아웃 엔진(105)은 데이터와 머지된 문서 템플릿에 의해 구성된 가변 데이터 문서를 생성한다. 레이아웃 편집 애플리케이션에 의해 생성된 이들 문서는 호스트 컴퓨터(101)의 로컬 파일 시스템에 저장되거나, 파일 서버(115)에 저장되거나, 또는 프린터(113)에 송신되어 인쇄된다. 프린트 서버(109)는 직접 네트워크에 연결되어 있지 않은 프린터에 네트워크 기능을 제공하기 위한 컴퓨터이다. 프린트 서버(109) 및 프린터(113)는 일반적인 통신채널(111)을 통하여 접속된다.
도 2는 도 1a의 구성으로부터 레이아웃 엔진(225)을 독립시키고 엔진 서버(227)에 의해 레이아웃 엔진을 실행시키기 위한 구성을 나타낸다. 엔진 서버(227)는 일반적인 컴퓨터이다. 파일 서버(115)에 저장된 문서 템플릿은 레이아웃 엔진(225)에 의해 인쇄나 다른 목적으로 문서를 생성하기 위해 데이터베이스(119)에 저 장된 데이터와 결합할 수 있다. 이러한 오퍼레이션은 사용자 인터페이스(103)를 통하여 요구되거나, 특정 레코드만을 인쇄하도록 요구된다.
<애플리케이션 구성도>
(메인 윈도우)
도 3을 참조하면, 사용자 인터페이스(101)는 조작시에 비디오 디스플레이(144)에 표시되는 애플리케이션 윈도우(301)에 의해 형성된 사용자 인터페이스를 포함하고 있다. 윈도우(301)는 메뉴바(302)와 툴바(303), 그리고 마우스(133)의 위치와 동작에 따라 그 위치가 이동 가능한 작업 영역(306)과 옵션의 팔레트(311)와 커서/포인터 디바이스(313)로 특징지어 진다.
메뉴바(302)는 공지의 기술이다. 메뉴바(302)는 메뉴 옵션의 계층의 아래로 확장되는 많은 메뉴 아이템(304)을 갖는다.
툴바(303)는 애플리케이션이 특별한 모드에 의해 비표시로 하거나 표시하는 것이 가능한 많은 툴 버튼 등의 위제트(widget)(305)를 갖는다. 옵션의 룰러(308)는 작업 영역내의 포인터, 페이지, 선, 마진 가이드, 레이아웃 프레임(즉, 컨테이너) 또는 오브젝트의 위치를 나타내는데 사용된다. 팔레트(311)는 가변 데이터를 판독 및 표시하는 라이브러리와 같은 추가 기능에 액세스하는데 사용된다. 팔레트(311)는 이동, 리사이즈, 클로즈를 위한 윈도우 컨트롤(312)을 갖는다.
툴바 영역(303)은 사용자가 선택 가능한 적어도 다음의 "버튼"을 갖는다.
(1) 선택 툴 버튼(403): 컨테이너의 변을 선택, 이동, 사이즈 변경, 리사이즈, 잠금·잠금해제를 하기 위해 사용된다. 컨테이너는 복수의 컨테이너의 주위에 선택 박스를 드래그하거나 복수 컨테이너를 선택하는 사이에 CTRL 키를 계속하여 누름으로써 복수의 컨테이너를 선택할 수 있다.
(2) 이미지 컨테이너 툴 버튼(405): 고정 또는 가변 이미지를 갖는 컨테이너를 작성하기 위해 사용된다.
(3) 텍스트 컨테이너 툴 버튼(404): 고정 또는 가변 텍스트를 갖는 컨테이너를 작성하기 위해 사용된다.
(4) 링크 툴 버튼(406): 컨테이너 사이의 연결을 위한 링크를 작성하기 위해 사용되고, 링크의 거리를 컨트롤하기 위해 사용된다.
이들 버튼은 공지의 기술과 마찬가지로 조작 상황에 따라 변화하는 아이콘의 툴 팁(tool tip)으로서 구현된다.
도 3에 도시한 레이아웃 편집 애플리케이션(121)의 애플리케이션 윈도우(301)는 페이지내에 각 컨테이너나 링크를 레이아웃함으로써 기본 레이아웃을 결정할 수 있다. 기본 레이아웃은 가변 데이터 프린트에 기본이 되는 레이아웃이다. 기본 레이아웃내의 각 컨테이너가 고정 컨테이너인 경우에는, 모든 레코드의 인쇄 결과의 레이아웃은 동일하게 된다. 기본 레이아웃내의 각 컨테이너가 후술하는 가변 컨테이너인 경우에는, 레코드 단위로 판독되는 데이터의 량이나 사이즈에 따라 각 컨테이너의 사이즈나 위치가 후술하는 제약의 범위내에서 변하게 된다. 따라서, 레이아웃 편집 애플리케이션(121)에 의해 작성되는 문서 템플릿은 어디까지나 기본 레이아웃을 결정하기 위한 것이다. 가변 컨테이너가 포함되는 경우에는, 최종적인 인쇄물의 레이아웃은 판독되는 데이터에 따라 조정된다.
(문서 템플릿)
작업 영역(306)은 문서 템플릿의 디자인을 표시 및 편집하기 위해 사용된다. 작업 영역(306)을 사용함으로써, 사전 준비 단계에서 인쇄된 문서의 개관을 사용자가 디자인할 수 있고, 가변 데이터의 량 또는 사이즈에 기초하여 머지된 문서가 어떻게 변하는지를 이해할 수 있게 된다.
외부 데이터 소스(예컨대, 데이터베이스의 레코드 등)가 템플릿에 링크되어 있다면, 현재 문서의 프리뷰가 가능하도록, 가변 텍스트와 이미지가 컨테이너에 표시된다.
문서의 구조와 가변 데이터의 컨테이너를 묘사하는데 시각적인 단서가 되는 오브젝트는, 커서를 컨테이너상에 이동시키는 때나 컨테이너를 선택했을 때마다 항상 표시된다.
작업 영역(306)은 스크롤바(307)와 옵션의 룰러(308)와 문서 템플릿(309)에 의해 특징지어 진다. 문서 템플릿(309)은 페이지가 복수개인 것을 나타낼 수 있다.
공급된 문서 템플릿의 페이지 사이즈는, 공지의 기술을 이용하여 사용자에 의해 지정된다. 예를 들어, 메뉴의 "파일"로부터 "페이지 설정"을 선택하면 페이지 사이즈를 설정하는 다이얼로그가 표시된다. 그러면, 사용자가 지정한 페이지 사이즈가 다이얼로그에 반영된다. 각각의 문서에서의 실제 페이지 수는 가변 데이터에 의해 변화할 가능성이 있다. 하나의 페이지내에 컨테이너가 설정될 수 없고 기본 레이아웃에 미리 정해진 용지 사이즈의 페이지내에 각 컨테이너를 설정하는 제약이 없는 경우, 추가의 페이지가 자동적으로 작성된다. 각각의 페이지내의 경계선은, 페이지상의 인쇄 가능한 오브젝트의 최대 폭을 나타내는 임의로 선택된 페이지 마진(310)이다.
도 3에는 1 페이지의 문서 템플릿(309)상에 표시될 수 있는 오브젝트의 예도 나타내고 있다. 이들은 복수의 컨테이너(407, 408), 고정되어 있지 않은 변(410), 링크(412), 슬라이더(413)를 갖는다. 각 오브젝트의 기능에 대해서는 후술하기로 한다.
(컨테이너)
컨테이너는 문서 템플릿내에 고정 또는 가변의 텍스트나 이미지를 유입시킴으로써 묘사되는 스페이스이며, 다른 컨테이너나 오브젝트와 상호작용하면서 레이아웃된다. 컨테이너는 도 3의 사용자 인터페이스에 도시되며, 포인터(313)를 사용하여 이동, 사이즈 조정 및 재작성된다. 포인터(313)는 포인팅 디바이스(133)를 조작하여 사용된다.
보다 정확하게는, 컨테이너는 설정의 집합, 시각적 표현, 인터랙션 및 편집 동작을 갖고 있다. 하기에 컨테이너의 정의에 대하여 설명한다.
(1) 컨테이너는 고정 또는 가변의 콘텐츠가 유입된다. 가변 콘텐츠는 데이터 소스(예컨대, 데이터베이스의 레코드)로부터 취득된다. 가변 콘텐츠는 서로 다른 문서 중의 서로 다른 콘텐츠에 따라서 그 컨테이너 사이즈가 가변된다고 하는 점에서 동적이다. 가변 콘텐츠에는 애니메이션에 의해 형성된 콘텐츠나 다른 방법에 의해 시간에 따라서 변화하도록 형성된 콘텐츠는 인쇄에 적합하지 않기 때문에 포함되지 않는다. 고정 콘텐츠는 하나의 템플릿을 이용하여 생성되는 모든 문서에서 동일한 방식으로 표시된다. 그러나, 고정 콘텐츠와 가변 콘텐츠 사이에 링크가 설정되어 있는 경우, 가변 콘텐츠를 포함하는 컨테이너의 위치나 사이즈의 변화에 따라 고정 콘텐츠를 포함하는 컨테이너의 위치가 각각의 문서에서 변화할 가능성이 있다.
(2) 컨테이너는 콘텐츠에 적용되는 배경색, 경계 설정 또는 폰트 스타일 설정 등의 텍스트 설정을 수행하는 기능과 같은 장식 기능을 가지고 있다. 이러한 설정을 컨테이너 속성이라고 한다. 컨테이너 속성은 컨테이너마다 설정가능하다. 그러나, 어떤 컨테이너들에 대해서는 동일한 컨테이너 속성을 갖도록 하는 설정을 행하는 것도 가능하다.
(3) 컨테이너는 문서를 생성했을 때에 데이터 소스로부터의 데이터와 머지된다. 가변 콘텐츠는 데이터 소스로부터의 특정한 데이터로서 얻어져, 표시 또는 인쇄된다. 컨테이너에 포함된 콘텐츠는 예를 들어 인쇄되거나 스크린(144)상에 표시되거나 또는 인쇄 및 표시의 양방에 의해 출력될 수 있다.
(4) 컨테이너는 사용자 인터페이스를 갖는다. 예를 들어, 컨테이너는 컨테이너의 편집 및 표시 설정을 위한 인터랙티브 GUI를 갖는다. 사용자 인터페이스의 요소는 보통은 스크린(144)상에 표시된다. 사용자 인터페이스(103)는 배경색이나 폰트와 같은 컨테이너의 장식 기능 중 몇개를 표시하며, 컨테이너의 설정 편집 기능이나 컨테이너의 표시 기능도 갖는다. 사용자 인터페이스 기능의 타겟의 예로는 경계, 컨테이너의 사이즈나 위치를 대화적으로 변경 및 표시하기 위한 코너 아이 콘, 및 데이터 소스로부터의 데이터가 컨테이너에 머지되었을 때 컨테이너의 동작을 나타내기 위한 유입(overcast)의 수, 선, 아이콘, 텍스트가 있다. 그러나, 이들 요소는 문서 상에는 인쇄되지 않는다.
(컨테이너 제약)
컨테이너는 각각의 문서에 표시 또는 인쇄되는 콘텐츠를 어떻게 컨테이너에 포함시킬지를 제어하기 위한 제약을 갖는다(즉, 컨테이너를 정의가능하다). 이들 제약은 고정 및 가변 콘텐츠를 컨테이너와 결부시키고 사용자가 하나의 문서 템플릿에 의해 다수의 문서를 컨트롤할 수 있도록 하는 주요한 수단이다. 제약의 일례로는 "이 컨테이너에서 이들 콘텐츠의 높이는 최대 4인치입니다"라는 것이다. 다른 제약의 예로는 "이 컨테이너에서 콘텐츠의 좌측 엣지는 문서내에서 동일한 수평 위치에서 표시되어야 한다"라는 것이다. 여기에 기술되는 내용은 GUI를 사용하여 이러한 제약을 표시 및 편집하기 위한 여러가지의 방법이다.
이미지가 페이지상에 정의된 장소를 가지고 있도록 고정 콘텐츠의 레이아웃을 지정하는 콘텐츠 플레이스홀더(placeholder)는 디지털 인쇄 기술분야에 잘 알려져 있다. 이하의 설명에서, 컨테이너는 위치와 사이즈를 가지며 공지의 방법에 의해 편집 및 표시될 수 있다. 여기서는 가변 데이터 프린트에 있어서의 표시 및 편집을 중심으로 설명한다.
사용자는 컨테이너의 위치, 사이즈 및 제약을 지정함으로써 문서내의 콘텐츠의 사이즈 및 위치를 지정할 수 있다. 복수의 문서가 하나의 문서 템플릿으로부터 생성되므로, 컨테이너의 지정가능한 설정과 제약을 지정 및 표시하기 위하여 사용 자 인터페이스를 사용할 필요가 있다. 컨테이너는 그 사용자 인터페이스로서도 이용된다.
<템플릿 작성 모드(컨테이너의 표시/편집)>
가변 인쇄되는 문서의 작성 수순은 템플릿을 작성하는 템플릿 작성 처리(템플릿 작성 모드)와 작성된 템플릿에 콘텐츠를 삽입하여 문서를 작성하는 문서 작성 처리(문서를 프리뷰 표시하는 경우를 특히 "프리뷰 모드"라고 한다)라고 하는 2개의 단계로 나눌 수 있다. 우선, 템플릿 작성 모드에 대하여 설명한다.
(신규 컨테이너의 작성 방법)
컨테이너는 "텍스트 컨테이너"와 "이미지 컨테이너"의 두 종류로서 기술된다. 텍스트 컨테이너는 텍스트와 매립 이미지를 갖는다. 이미지 컨테이너는 이미지만을 갖는다. "가변"이라고 하는 것은 전술한 바와 같이 "레코드마다 변한다"는 의미이다.
신규 텍스트 컨테이너와 이미지 컨테이너는 각각 위제트(305)로부터 마우스(133) 클릭에 의해 선택되는 텍스트 컨테이너 툴(404) 또는 이미지 컨테이너 툴(405)로 직사각형 영역을 드래그함으로써 문서 템플릿(309)상에 작성된다.
다른 방법으로, 컨테이너는 단순히 적절한 툴(404, 405)을 액티브로 한 후 문서 템플릿(309)상에서 클릭하여 작성할 수도 있다. 이 경우, 디폴트 사이즈의 컨테이너가 삽입되거나 신규 컨테이너의 사이즈를 설정하기 위한 다이얼로그 박스가 제공된다. 또한, 다른 방법으로 컨테이너를 제공할 수도 있다. 사용자 인터페이스상에서 사용자에 의해 지정된 직사각형의 위치 및 사이즈가 그대로 템플릿상에 서의 컨테이너의 위치 및 사이즈로서, 문서 템플릿의 저장 시에 문서 템플릿 파일로서 하드디스크 등에 저장된다.
(컨테이너의 표시 방법)
컨테이너의 변은 연결된 콘텐츠가 문서내에서 표시될 때의 가상의 경계선을 정의하는 것이다. 컨테이너를 사용자 인터페이스로서 이용하는 경우, 예를 들어 컨테이너의 좌변은 연결된 콘텐츠가 임의의 문서내에서 표시될 수 있는 가장 좌측의 변으로서 취급된다. 마찬가지로, 컨테이너의 높이는 연결된 콘텐츠가 생성된 문서내에서 표시될 수 있는 높이의 상한으로서 이해될 수 있다. 본 발명에 따르면, 사용자 인터페이스(103)를 통해서 컨테이너의 변 또는 크기가 변화된다는 것을 전제로 하고 있다.
(사용자 인터페이스의 정의)
다음으로, 콘텐츠의 레이아웃을 제한하기 위해 사용되는 사용자 인터페이스와 레이아웃의 관계에 있어서의 몇가지 룰에 대한 정의를 설명한다. 첨부한 도면에 도시된 레이아웃의 예도 이 정의에 따라서 표시되어 있다.
(1) 컨테이너의 좌우의 변이 실선이면 컨테이너의 폭은 고정이다. 컨테이너의 폭이 고정이면 연결된 콘텐츠에 할당되는 폭은 모든 문서에서 일정하다. 그러나, 컨테이너의 높이는 변할 수 있다.
(2) 컨테이너의 상하의 변이 실선이면 컨테이너의 높이는 고정이다. 컨테이너의 높이가 고정이면 연결된 콘텐츠에 할당되는 높이는 모든 문서에서 일정하다.
(3) 거리의 제약이 고정이면, 지정된 거리는 모든 문서에서 일정하다.
(4) 컨테이너의 실선 변과 다른 컨테이너를 후술하는 링크를 이용하여 연결하면, 실선 변의 컨테이너가 링크에 의해 연결된 다른 컨테이너에 의해 눌려 그 위치가 변경될 수도 있다. 상하 변에 대한 링크는 세로방향의 위치 변경을 야기하며, 좌우 변에 대한 링크는 가로방향의 위치 변경을 야기한다. "고정"의 반대는, 변, 위치, 또는 문서 제약이 문서마다 변화할 수도 있음을 의미하는 "가변"이다. 가변을 실현하기 위한 사용자 인터페이스와 레이아웃의 관계에 있어서의 룰의 예는 다음과 같다.
(5) 컨테이너의 좌우의 변이 점선이면 컨테이너의 폭은 가변이다. 컨테이너의 폭이 가변이면 연결된 콘텐츠에 할당되는 폭은 문서마다 변화한다.
(6) 컨테이너의 상하의 변이 점선이면 컨테이너의 높이는 가변이다. 컨테이너의 높이가 가변이면 연결된 콘텐츠에 할당되는 높이는 문서마다 변화한다.
(7) 거리의 제약이 가변이면 지정된 거리는 문서마다 변화할 가능성이 있다. 거리의 제약에 대한 설정에 의해 컨테이너 사이의 거리를 최대와 최소 제한의 범위내로 조정하는 레이아웃을 행할 수 있다.
(8) 컨테이너의 점선 변과 다른 컨테이너를 후술하는 링크를 이용하여 연결하면, 점선 변의 컨테이너는 링크에 의해 연결된 다른 컨테이너를 눌러 그 위치가 변화될 수 있다. 상하 변에 대한 링크는 세로방향의 위치 변경을 야기하며, 좌우 변에 대한 링크는 가로방향의 위치 변경을 야기한다.
도 4는 상기의 룰에 기초하는 컨테이너의 변의 상태를 도시하고 있다. 일반적으로, 컨테이너의 변의 상태는 문서 템플릿 디자인의 보조물로서 표시되는 요소 이기 때문에, 인쇄물에는 묘화되지 않는다. 컨테이너의 제약으로서 설정되는 폭과 높이의 최대 및 최소의 설정값은 2차적인 다이얼로그 윈도우(311)(도 3 참조)에 표시된다.
전술한 사용자 인터페이스상의 표시와 컨테이너 자체의 제약 또는 컨테이너들 사이의 제약은 그 사용자 인터페이스를 이용하는 사용자의 관점으로부터 설명한 것이다. 이 사용자 인터페이스를 실현하기 위해 실행되는 프로그램의 관점으로부터는 그 인과 관계가 상기한 것과 반대가 된다. 상기 룰을 프로그램의 관점으로부터 다시 기재하면 다음과 같다.
(1) 컨테이너의 폭이 고정인 것으로 데이터 설정이 되어 있다면, 컨테이너의 좌우의 변을 실선으로 표시한다.
(2) 컨테이너의 높이가 고정인 것으로 데이터 설정이 되어 있다면, 컨테이너의 상하의 변을 실선으로 표시한다.
(3) 고정값으로 지정된 거리는 모든 문서에서 일정한 것으로 설정한다.
(4) 컨테이너 폭 또는 높이가 고정인 것으로 데이터 설정이 되어 있고 해당 고정 변에 대하여 다른 컨테이너와의 거리(컨테이너 제약)이 설정되어 있는 경우, 폭 또는 높이가 고정되어 있는 해당 컨테이너의 위치는 다른 컨테이너의 사이즈 등과 같은 조건에 따라서 결정된다.
(5) 컨테이너의 폭이 가변인 것으로 데이터 설정이 되어 있다면, 컨테이너의 좌우의 변을 점선으로 표시한다.
(6) 컨테이너의 높이가 가변인 것으로 데이터 설정이 되어 있다면, 컨테이너 의 상하의 변을 점선으로 표시한다.
(7) 컨테이너 사이의 거리의 제약이 가변인 것으로 데이터 설정이 되어 있다면, 컨테이너 사이의 거리를 최대와 최소 제한의 범위내로 조정하는 레이아웃을 행할 수 있다.
(8) 컨테이너 폭 또는 높이가 가변인 것으로 데이터 설정이 되어 있고 해당 고정 변에 대하여 다른 컨테이너와의 거리(컨테이너 제약)가 설정되어 있는 경우, 폭 또는 높이가 가변으로 되어 있는 해당 컨테이너의 폭 또는 높이에 따라서, 다른 컨테이너의 위치가 결정된다.
도 5a에서, 컨테이너(501)는 폭이 가변이다. 이 경우, 변(503)은 실선으로 표현되며 가변의 변(504)은 점선으로 표현된다. 확장/수축 아이콘(505)은 그것에 인접하는 변(504)이 가변인 것을 나타내는 옵션의 표시자이다. 도 5b에서, 컨테이너(501)는 폭과 높이 방향 모두가 가변이다. 도 5c에서, 컨테이너(501)도 폭과 높이 방향 모두가 가변이며, 변을 조작하기 위해 핸들(502)도 사용자 인터페이스상에 표시된다.
<문서 템플릿의 데이터의 예>
도 23은 문서 템플릿의 데이터(템플릿 데이터라고 한다)(131)의 일례를 나타낸다. 도 23에서, 템플릿 데이터(131)는 메모리(136) 또는 하드디스크(140)에 저장되어 있다. 템플릿 데이터에는 이하의 요소가 포함된다.
(1) 전체 사이즈(2302)
이 데이터는 템플릿 전체의 페이지의 사이즈를 나타낸다. 사이즈는 예를 들 어 세로 및 가로의 치수 또는 표준 용지 사이즈 등으로 표시된다.
(2) 컨테이너 정보(2303)
이 정보에는 템플릿에 레이아웃되는 컨테이너마다, 그 컨테이너를 특정하기 위한 식별 정보, 컨테이너의 기준 위치(위치 정보), 가로 및 세로 변의 길이(사이즈 정보), 컨테이너를 구성하는 변과 점의 속성(속성 정보), 및 컨테이너에 연결되는 콘텐츠의 정보 등이 포함된다. 위치 정보 및 사이즈 정보는, 도 4의 사용자 인터페이스를 통한 지정에 따라 템플릿 작성시에 정의된 것이다. 위치 정보는 컨테이너의 작성시에 사용자에 의해 설정된 컨테이너의 기준 위치이다. 위치가 가변인 컨테이너인 경우에는, 컨테이너에 유입되는 콘텐츠의 사이즈(화상 사이즈, 텍스트량)에 따라서 크기가 변경되며, 각 컨테이너의 크기에 따라 그 위치가 동적으로 변경된다. 위치가 고정되어 있는 컨테이너는 고정된 위치 정보를 갖는다. 예를 들어, 위치가 고정되어 있는 컨테이너는 그 대각점의 위치를 특정할 수 있는 정보를 가짐으로써 그 위치와 사이즈를 특정할 수 있다. 물론, 템플릿상의 모든 점의 위치에 대한 정보를 제공할 수도 있다. 템플릿상의 한 점의 위치에 대한 정보와 그 한 점의 위치에 대하여 다른 점들의 위치에 대한 정보를 제공할 수도 있다. 즉, 컨테이너의 한 점과 컨테이너의 사이즈에 의해 컨테이너를 정의할 수도 있다. 또한, 고정되어 있는 점에 대해서는 템플릿상의 위치에 의해 정의하고, 가변의 점에 대해서는 고정된 위치에 대하여 상대적인 위치에 의해 정의할 수도 있다.
속성 정보는, 도 3 및 도 5a 내지 도 5c를 참조하여 설명한 컨테이너의 변, 축 또는 이들의 교점 등의 속성을 나타낸다. 하나의 컨테이너의 상변, 하변, 좌변, 우변, 수평축, 수직축, 꼭지점, 중점, 폭 및 높이는, 예를 들어 위치와 사이즈에 의해 정해진다. 이들 각 요소가 가변인지 고정인지에 대한 정의는 속성 정보에 의해 정의된다. 도 4의 사용자 인터페이스에 의해 문서 템플릿을 작성한 경우, 조작자는 컨테이너의 변이나 점이나 축을 선택한 상태에서 팔레트(311)내에 표시되는 "고정한다(Fix)", "가변으로 한다(Make variable)" 등의 메뉴 항목으로부터 원하는 하나의 항목을 선택한다. 그에 따라, 선택된 점이나 변에 대응하여 컨테이너 정보(2303)에 "고정" 및 "가변" 중 어느 하나의 속성이 기입된다. 컨테이너 작성 직후의 디폴트 값은 예를 들어 전부 "가변"으로 한다. 이 예에서, 하나의 변이나 축에 대하여 "고정"이라는 것은 변이나 축의 길이나 길이 방향의 위치가 아니라 길이 방향에 직교하는 방향에 대한 위치가 고정되는 것을 의미한다. 또한, 점이나 변의 속성을 설정함으로써 자동적으로 다른 점이나 변의 속성이 정해지는 경우에는, 이 자동적으로 정해진 속성도 기입된다. 예를 들어, 꼭지점을 "고정"이라고 지정한 경우, 그것을 포함하는 변도 "고정"된다. 그 역의 경우도 마찬가지이다. 또한, 예를 들어, 중점의 위치를 "고정"으로 지정하면, 중점의 속성에 "고정"이라고 기입됨과 함께 수평축 및 수직축의 속성도 "고정"으로 기입된다. 이 경우, 폭과 높이를 가변으로 남겨두면, 폭 및 높이의 속성은 "가변"으로 유지된다.
연결되는 콘텐츠에 관한 정보(콘텐츠 연결 정보)에는, 예를 들어 그 콘텐츠가 텍스트 컨테이너인지 또는 이미지 컨테이너인지에 대한 종류를 나타내는 정보와, 그 컨테이너에 삽입되는 데이터 소스의 식별자, 예를 들어 데이터베이스명, 레코드명, 필드명 등의 일부 또는 전부와, 콘텐츠를 추출하기 위한 조건식 등의 연결 정보가 포함된다. 텍스트 컨테이너인 경우에는, 폰트에 관한 정보, 예를 들어 폰트 종류나 사이즈, 색, 이탤릭이나 볼드체, 밑줄 등의 문자수식에 대한 정보도 콘텐츠 연결 정보에 포함된다. 문서 템플릿에 설치된 컨테이너의 수에 대응하는 수의 컨테이너 정보(2303)의 그룹들이 유지된다.
(3) 링크 정보(2304)
링크는 컨테이너들 사이를 연결하는 오브젝트이며 컨테이너 제약의 하나이다. 링크 정보는 링크로 연결된 2개의 컨테이너 사이의 거리를 일정하게 만들거나(고정 링크) 그 거리를 가변으로 만드는(가변 링크) 정보이다. 링크 정보에는, 예를 들어 수평 방향 및 수직 방향에 대한 2개의 컨테이너의 식별자, 서로 대향하는 컨테이너의 변들 사이에 링크가 설정되어 있음을 나타내는 정보, 및 링크를 따르는 방향으로의 컨테이너 사이의 거리가 포함된다. 링크 정보는 정의되어 있는 각각의 링크마다 유지된다. 링크 정보의 형태로서 수평 방향 및 수직 방향에 대한 각 컨테이너의 변의 위치가 유지될 수도 있다. 또한, 그 에지들 사이에 링크가 설정되어 있음을 나타내는 정보가 유지될 수도 있다.
(4) 고정 정보(2305)
이 정보에는 가변 부분 이외의 고정 부분을 정의하기 위한 정보가 포함된다. 예를 들어, 템플릿이 적용되어 생성되는 모든 문서(전 레코드)에 공통의 문장이나 화상 등이 정의될 수 있다. 문장이나 화상에 대해서는 그 자체의 데이터는 포함되지 않고 그것의 위치 정보만 정의된다. 물론, 이 정보에는 문장이나 화상이 템플릿상에 레이아웃되는 위치를 정의하기 위한 정보도 포함한다.
도 24는 멀티레코드 기능에 이용되는 템플릿 데이터(131')의 일례를 나타낸 것이다. 이 데이터도 물론 메모리 등에 저장된다. 도 24에서는, 문서 템플릿 중에 플로우 영역이라는, 다른 템플릿을 서브템플릿으로서 유입시킬 수 있는 영역이 정의된다. 하나의 플로우 영역에는 멀티레코드에 대응한 수의 서브템플릿이 유입된다. 도 24에 도시된 템플릿 데이터(131')에는 플로우 영역 정보(2401)가 포함된다. 템플릿 데이터에 템플릿에 포함되는 플로우 영역의 수에 대응하는 수의 플로우 영역 정보의 항목이 유지되어 있다. 플로우 영역 정보(2401)에는 이하의 요소가 포함된다.
(5) 전체의 위치나 사이즈, 플로우 타입 등을 나타내는 플로우 영역 속성 정보(2402)
위치나 사이즈는 도 23을 참조하여 설명한 것과 마찬가지이다. 플로우 타입은 서브템플릿이 플로우 영역에 유입되는 패턴을 정의하는 심볼이다. 플로우 영역에 유입되는 서브템플릿의 수는 멀티레코드의 키 컬럼에 의해 결정되며 가변적이다. 따라서, 플로우 타입은 플로우 영역에 유입되는 서브템플릿 수에 따라 플로우 영역내의 서브템플릿의 레이아웃을 정의하는 정보로서 제공된다.
(6) 서브템플릿 정보(2403)
서브템플릿 정보(2403)에는 서브템플릿에 레이아웃되는 콘텐츠와 그 서브템플릿에 맞도록 레이아웃된 콘텐츠(본 명세서에서는 레이아웃 완료 콘텐츠라고 한다)가 유입되는 플로우 영역 사이의 연결을 나타내는 레이아웃 정보가 포함된다. 서브템플릿 정보(2403)는, 예를 들어 플로우 영역에 삽입되는 템플릿을 식별하기 위한 정보이다. 이 정보에는 예를 들어 템플릿 데이터의 파일(템플릿 파일)의 명칭이 포함된다. 또한, 서브템플릿 정보(2403)는 레이아웃 완료 콘텐츠를 레이아웃하기 위한 레이아웃 조건이나, 어떠한 순서로 레이아웃 완료 콘텐츠를 삽입할지를 지정하는 플로우 타입도 포함할 수 있다. 레이아웃 조건으로서, 서브템플릿에 따라 레이아웃될 오브젝트를 취득하고 다른 조건이 유지되어 있는 데이터베이스의 검색 조건(검색식)이 유지된다. 또한, Z형, N형, V형 등 미리 준비한 선택안에서 플로우 타입을 지정하고, 지정된 플로우 타입을 나타내는 식별자를 가진다. 대안적으로, 데이터베이스의 레코드에 제공된 레이아웃 정보 필드의 값과 일치하는 레이아웃 조건의 값에 대응하는 플로우 영역에 레이아웃 완료 콘텐츠를 삽입할 수도 있다.
본 실시예에 특징적인 정보로서, 플로우 영역에 삽입되는 서브템플릿을 특정하기 위한 조건 정보(2403a)가 포함된다. 예를 들어, 서브템플릿들 중 하나에 연결된 데이터베이스의 레코드 중의 특정한 필드의 값에 따라서 상이한 서브템플릿을 대응시키는 조건 정보(2403a)를 서브템플릿 정보로서 가질 수도 있다. 이 정보에 의해 해당 필드의 값에 대응하는 서브템플릿을 그 레코드에 사용할 수 있게 된다.
(7) 멀티레코드 정보(2404)
멀티레코드 정보(2404)는 플로우 영역에 연결되는 데이터베이스명 및 각 레코드에 있어서의 필드명 등의 식별자가 포함된다. 지정된 필드명과 동일한 값을 갖는 레코드가 데이터베이스로부터 페치(판독)되어 하나의 플로우 영역에 레이아웃된다. 어떤 경우에는, 페치(fetch)되는 레코드의 수가 플로우 영역의 사이즈에 비하여 상당히 많은 경우도 있을 수 있다. 이와 같은 경우에는 이들 레코드의 레이아웃을 위해 플로우 영역이 복수의 페이지에 걸쳐 확장된다.
<링크의 설정 방법>
도 6a 내지 도 6c는 링크의 설정 방법에 따른 사용자 인터페이스(UI)의 예를 나타낸 것이다. 링크를 설정하기 위해서는 먼저 링크를 설정하기 위한 컨테이너(최저 2개)를 작성한다. 다음은 2개의 컨테이너를 작성하여 링크를 설정하는 경우의 예이다. 다음으로, 전술한 링크 툴을 선택한 상태로 한다. 도 6a 내지 도 6c는 컨테이너를 작성한 상태이며 링크 툴이 선택되어 있는 상태에서 링크를 설정하는 동작을 나타내고 있다. 도 6a 내지 도 6c의 순서대로 설명하기로 한다.
도 6a의 601과 602의 선은, 전술한 도 3의 407와 408의 변과 동일한 고정되어 있는 변을 나타낸다. 603의 아이콘은 마우스 포인터를 나타낸다. 우선, 링크를 설정하는 한 쪽의 컨테이너를 클릭하여 선택한다. 다음에, 도 6b에 도시된 바와 같이, 다른 한 쪽의 컨테이너까지 마우스 포인터를 이동하여 클릭한다. 도 6b에서, 604는 도 6a에서 마우스 포인터를 클릭을 한 위치와 마우스 포인터가 이동한 위치를 연결한 선을 나타낸다. 이것은 어떤 위치에 링크가 설정되는지를 사용자에 도시된 UI이다. 도 6b에 도시된 상태에서 2번째의 클릭이 있은 후, 설정한 장소에 605로 나타낸 링크 UI가 표시되며, 컨테이너는 도 6c의 상태로 된다. 점선은 가변의 변인 606을 나타낸다. 이러한 디자인에서는, 좌측의 컨테이너 601은 우측 방향으로 그 사이즈가 변할 수 있다. 또한, 우측의 컨테이너 602는 좌측 방향으로 그 사이즈가 변할 수 있다. 그 사이를 링크로 접속한 것에 의해, 좌우의 컨테이너는 그 사의의 거리를 유지한 채로, 이들의 사이즈를 가변으로 조정할 수 있게끔 동작한다.
이 처리를 도 23에 도시된 데이터 처리의 관점에서 다시 설명하기로 한다. 예를 들어, 컨테이너를 작성함으로써 컨테이너 정보(2303)가 정의된다. 그리고, 레이아웃 편집 애플리케이션(121)은 선택된 2개의 컨테이너 사이에 링크가 설정된 취지를 링크 정보로서 기억하며, 필요에 따라 링크가 설정된 서로 대향하는 2개의 컨테이너의 변의 속성을 변경한다. 예를 들어, 대향하는 변 중 한 쪽이 가변이면, 변의 속성을 변경할 필요는 없다. 그러나, 양쪽의 변이 모두 고정이면, 링크를 설정하는 의의가 없어진다. 따라서, 적어도 한 쪽의 변을 가변으로 한다. 도 6a 내지 도 6c의 예에서는, 양쪽의 변을 가변으로 하고 있다. 물론, 변의 속성이 변경된 경우에는, 레이아웃 편집 애플리케이션(121)은 그 속성이 변경된 변에 대응하는 속성 정보를 컨테이너 정보(2303)에 재기입한다.
이상의 설명에서 "대향한다"라는 표현을 사용하고 있지만, 선끼리 외관상 대향하는 경우외에, 선 자체는 대향하지 않더라도, 각각의 선의 연장선이 대향하는 관계에 있다면, 그 연장선의 사이에 링크를 설정할 수 있다. 본 명세서에서는 연장선만이 대향하는 경우에 링크에 의해 서로 연결된 컨테이너에 관해서도 "대향한다"는 표현을 사용한다. 즉, 예를 들어 템플릿의 대각을 따라 레이아웃된 소 컨테이너 사이에도 링크를 설정할 수 있다.
이상과 같이, 링크에 의해 연결된 컨테이너의 대향하는 변의 한 쪽이 가변이 고 다른 쪽이 고정이면, 콘텐츠 사이즈에 따라서 가변의 변이 이동할 가능성이 있다. 그리고, 그 가변의 변의 이동량에 따라서, 고정 변의 측의 컨테이너는 컨테이너 자체가 평행 이동한다(앵커가 없는 경우). 링크에 의해 정의된 컨테이너 사이의 거리(링크를 따르는 방향에 대한 거리)는 유지된다. 쌍방의 변이 가변이면, 콘텐츠의 사이즈에 따라서 양 컨테이너의 사이즈가 가변으로 된다. 이 경우에는 컨테이너 사이의 거리도 유지된다.
<프리뷰 모드(레이아웃 계산)>
도 7a는 프리뷰 모드에 있어서의 레이아웃 계산의 플로우를 나타낸 것이다. 레이아웃 계산은 문서 템플릿의 컨테이너에 실제 데이터가 삽입된 경우, 콘텐츠의 데이터 사이즈 등에 따라서 컨테이너 사이즈나 컨테이너 레이아웃을 재계산하는 처리이다. 도 7a에서는, 프리뷰 모드가 지정된 경우를 예로 들고 있기 때문에, 템플릿에 콘텐츠를 삽입하여 생성된 문서는 디스플레이(144)에 표시된다. 그러나, 인쇄 모드가 지정된 경우에는, 프리뷰 표시에 대신하여, 문서의 인쇄 출력이 수행된다. 또한, 본 발명에 따른 플로우차트의 각 처리 단계는 정보 처리 장치(호스트 컴퓨터)내의 프로세서(135)에 의해 실행된다.
도 7a에서, 먼저 레이아웃 편집 애플리케이션(121)은 프리뷰 모드가 선택된 것을 인식한다(S701). 본 실시예의 자동 레이아웃 시스템에 의한 동작 모드에는 컨테이너를 작성하고 그 컨테이너 사이에 연결을 확립하여 레이아웃을 정의한 문서 템플릿을 작성하는 레이아웃 설정 모드와, 작성한 레이아웃(템플릿)에 레코드를 삽입하고 실제로 레코드가 삽입된 후의 레이아웃 결과를 프리뷰하는 프리뷰 모드가 포함된다.
프리뷰 모드에서는 실제의 레코드가 삽입되어 레이아웃이 계산된다. 프리뷰 모드에서의 처리는 디스플레이상에서 보이는 레이아웃의 계산이다. 또한, 실제로 레이아웃 결과를 인쇄하는 경우에도 레코드를 삽입한후에 레이아웃을 계산한다. 실제 인쇄시의 계산 방법도 프리뷰 모드와 동일하다.
프리뷰 모드가 선택되면, 레이아웃 편집 애플리케이션(121)은 프리뷰하는 레코드가 선택된 것을 인식한다(S702). 조작자에 의해 지정된 레코드가 선택되는 것으로 하거나 지정된 데이터베이스로부터 순서대로 레코드를 선택할 수도 있다. 레코드가 선택된 후, 레이아웃 편집 애플리케이션(121)은 그 레코드를 템플릿에 따라서 레이아웃하기 위해 계산을 수행한다(S703). 플로우 영역이 템플릿에 포함되고 있다면, 레이아웃 편집 애플리케이션(121)은 플로우 영역에 대하여 서브템플릿에 맞도록 데이터를 레이아웃한다(S704). 레이아웃 편집 애플리케이션(121)은 S703 및 S704의 계산 결과에 따라서 레코드를 레이아웃하여, 그 레이아웃 완료된 결과를 표시하며(S705), 다른 레코드에 대해서도 프리뷰를 행할지의 여부를 판정한다(S706). 이 판정은 조작자의 지시에 따를 수도 있고, 미리 지정된 범위에 대한 프리뷰가 종료되었는지의 여부를 판정하는 것도 가능하다. 레이아웃 편집 애플리케이션(121)은 S706에서 다른 레코드에 대하여 프리뷰를 행할 필요가 없는 것으로 판정하면, 프리뷰 모드에서의 처리를 종료한다(S707).
한편, 다른 레코드에 대하여 프리뷰를 수행해야 한다면, 레이아웃 편집 애플리케이션(121)은 다른 레코드를 선택하여 다시 레이아웃 계산을 행하고, 레코드를 레이아웃하여 그 레이아웃 결과에 대한 프리뷰를 행한다(S708). 프리뷰 모드가 아니라 인쇄시에는, 인쇄 대상의 모든 레코드에 대하여 그 레코드를 순서대로 선택해 가면서 레이아웃 계산을 행한다. 따라서, 이 경우에는 S701 및 S707은 포함되지 않는다. 또한, S706에서는 인쇄 대상의 모든 레코드에 대하여 인쇄가 종료되었는지의 여부가 판정된다.
(레이아웃 계산 수순)
도 7b는 도 7a의 S703에 있어서의 레이아웃 계산의 상세를 나타낸 플로우도이다. 도 8a 내지 도 8c는 그 계산에 관한 UI 표시예를 도시한 것이다. 도 7b를 포함한 플로우차트에 도시된 처리는 도 1a, 도 1b 또는 도 2의 컴퓨터에 의해 실행된다.
우선, 레이아웃 편집 애플리케이션(121)은 레이아웃을 계산할 컨테이너의 집합을 취득한다(S710). 레이아웃 계산은 링크에 의해 연결된 컨테이너를 하나의 집합으로서 취급하여 행해진다. 예를 들어, 도 32를 참조하면, 페이지상에 4개의 컨테이너가 레이아웃되어 있고, 각 컨테이너에 연결이 설정되어 있다. 이 경우, 컨테이너 A와 B, 그리고 컨테이너 C와 D가 링크에 의해 연결되어 있다. 따라서, 컨테이너 A 및 B가 집합1로 취급되며, 컨테이너 C 및 D가 집합2로 취급된다. 즉, 도 23에 도시된 템플릿 데이터의 링크 정보(2304)를 참조하여, 링크에 의해 연결된 컨테이너군을 하나의 컨테이너 집합으로서 판정할 수 있다.
다음으로, S710에서 레이아웃 편집 애플리케이션(121)은 취득된 컨테이너의 집합 중의 하나를 선택하고, 선택된 컨테이너의 집합에 대한 레이아웃을 계산한다 (S711). 이 컨테이너 집합은, 예를 들어 템플릿 데이터의 링크 정보에 나타나는 순서에 따라 선택될 수 있다. 그리고, 레이아웃 편집 애플리케이션(121)은 선택한 컨테이너의 집합에 대하여 레이아웃의 계산을 행한다. 이 처리에서는, 레이아웃되는 컨테이너 각각의 사이즈가 컨테이너내의 실제 콘텐츠의 사이즈에 가능한 한 근접하도록 레이아웃의 최적화를 행한다(S712).
레이아웃의 최적화는, 동적으로 사이즈를 변화시키는 것이 가능하도록 연결된 컨테이너들에 대하여, 콘텐츠가 삽입되는 각 컨테이너에서 삽입되는 콘텐츠의 사이즈와 그 컨테이너의 사이즈가 서로 근접하게 되도록 수행된다. 컨테이너 사이즈가 고정되어 있는 경우에는, 콘텐츠가 컨테이너에 세트될때 그 사이즈가 확대 또는 축소되거나, 또는 콘텐츠의 일부가 컨테이너에 세트된다. 컨테이너 집합에 3개 이상의 컨테이너가 포함되는 경우에도, 각 콘텐츠의 사이즈에 따른 컨테이너 사이즈(즉, 가변의 변의 길이)를 계산하여, 그 변의 중점으로부터 링크 정보로 정의되는 거리의 위치를 변의 위치로서 결정한다. 링크된 변이 고정 변인 컨테이너에 대해서는, 그 위치를 연결되어 있는 컨테이너의 대응하는 변의 이동에 따라서 이동시킨다.
따라서, 링크에 의해 연결된 컨테이너를 하나의 그룹으로서 취급하고, 사이즈가 가변인 컨테이너에 대해서는 그 사이즈를 정하고, 위치가 가변인 컨테이너에 대해서는 그 위치를 결정한다.
상기한 방식으로 레이아웃 최적화 계산을 수행한다. 그 계산 결과와 룰이 불일치하는 경우, 레이아웃 편집 애플리케이션(121)은 다시 룰에 합치하도록 계산 을 행한다(S713). 여기서, 룰이란 템플릿 작성시에 사용자에 의해 설정되는 제한이며, 예를 들어 컨테이너의 사이즈와 위치 및 링크의 길이 등에 대한 제한이다. 이러한 제한은 템플릿 데이터내의 컨테이너 정보에 포함되는 변이나 점 등의 속성 정보와 링크 정보에 의해 정의되어 있다. 특히, 속성 정보에 있어서 "고정"의 값의 항목과 링크 정보가 레이아웃상의 제한이 된다. 따라서, S712의 레이아웃 계산을 종료한 후, 그 계산 결과를, 속성이 "고정"이라고 정의되어 있는 계산한후의 각 컨테이너의 변이나 점의 위치, 사이즈 등의 항목에 대하여, 템플릿 데이터 중의 컨테이너 정보와 비교한다. 만약, 일부 항목이 불일치하면 제약 위반이라고 판정된다. 또한, 링크 정보에 포함되는 링크 길이(컨테이너 사이의 거리)와 S712의 레이아웃 계산 종료후의 링크가 설정된 컨테이너 사이의 거리가 서로 다르다면, 제약 위반이라고 판정된다.
룰과의 불합치를 회피하도록 레이아웃이 계산되면, 그 컨테이너 집합의 레이아웃이 완성된다. 레이아웃 편집 애플리케이션(121)은 페이지상의 모든 컨테이너의 집합에 대하여 S711 내지 S713의 단계를 실시함으로써 페이지 전체의 레이아웃을 계산한다(S714).
또한, 템플릿 데이터에 플로우 영역 정보가 포함되어 있는 경우에는, S704에서 레이아웃 계산에 있어서 플로우 영역내의 서브템플릿의 레이아웃을 행할 필요가 있다. 이 처리는, 후술하는 도 10, 도 14, 도 16a, 및 도 16b 등의 도면을 참조하여 설명한다. 이들 도면은 프리뷰 모드가 아니라 템플릿 작성 모드의 처리를 도시하고 있다. 그러나, 템플릿 작성 모드에 있어서도 그 프리뷰 표시가 행해져, 동일 한 프리뷰 표시의 처리가 수행된다.
도 8a 내지 도 8c는 레이아웃 계산 시의 UI 예이다. 도 8a는 어떤 레코드가 삽입되어 레이아웃이 결정되어 있는 상태를 나타내고 있다. 여기서, 801 및 802는 고정된 변, 803은 가변의 변, 804 및 805는 가변의 변의 변화 방향을 나타내는 화살표, 806은 링크를 각각 나타내고 있다. 이 상태에서 레코드를 변경하여 다른 사이즈의 콘텐츠를 삽입한다. 도 8b에서는 도 8a의 상태에 새로운 콘텐츠의 사이즈를 중첩하여 도시하고 있다. 807의 선은 각 컨테이너에 삽입되는 콘텐츠의 사이즈를 나타내고 있다. 이 콘텐츠의 삽입후에 레이아웃 계산이 수행된다. 도 8c는 레이아웃 계산된 결과를 나타내고 있다. 각 컨테이너의 사이즈는 실제 삽입되는 콘텐츠의 사이즈와 동등하게 서로 차이가 나도록 계산되며, 또한 전술한 룰을 위반하지 않도록 계산된다. 도 8c에 도시된 바와 같이, 도 8b에 나타낸 삽입되는 콘텐츠들의 사이즈들(807) 사이의 차이는 계산후의 콘텐츠들의 사이즈들(808) 사이의 차이와 마찬가지로 유지된다.
그러나, 단순하게 동등한 차이를 유지하도록 콘텐츠의 사이즈를 변경하면, 도 8a 내지 도 8c에 도시된 레이아웃에서와 같이, 가로 방향만의 레이아웃 계산인 경우에는 문제가 되지 않지만, 도 33에 도시된 레이아웃의 경우와 같이 세로방향 및 가로방향을 고려하여 레이아웃을 계산할 필요가 있는 경우에는 컨테이너를 적절하게 대응할 수 없게 되는 가능성이 있다. 도 33에 도시된 가로방향과 세로방향의 2차원적인 레이아웃의 경우, 도 7b의 레이아웃 계산 방법을 이용하여, 우선 가로방향으로의 조정을 행한 다음 마찬가지의 방법을 이용하여 세로방향으로의 조정을 행한다. 즉, 컨테이너 3301과 3302 사이의 레이아웃 조정은 전술한 수순으로 컨테이너가 설정값 D에 의해 정의되는 범위에 들어가도록 레이아웃 조정이 수행되며, 그 후, 컨테이너 3302와 3303 사이에의 레이아웃 조정은 설정값 G에 의해 정의되는 범위에 들어가도록 레이아웃 조정이 수행된다. 그러나, 먼저 가로방향으로 조정을 행한 다음에 세로방향으로 조정을 행하는 방법에 의한 레이아웃은 사용자의 소망에 따른 기본 레이아웃으로부터 어긋난 결과가 되는 것으로 예상된다.
따라서, 각 컨테이너에 대하여, 기본 패턴(종횡비)으로부터의 어긋남을 최소화하기 위하여, 기본 패턴의 폭과 레이아웃 조정후의 폭의 차의 제곱과, 기본 패턴의 높이와 레이아웃 조정후의 높이의 차의 제곱과의 합을 모든 컨테이너에 대하여 산출하고, 레이아웃 편집 애플리케이션(121)이 각 컨테이너의 제곱의 합의 합계값이 최소로 되도록, 각 컨테이너의 폭과 높이를 산출하여 레이아웃 조정을 행하도록 하는 방법을 채용할 수도 있다.
이 최소 제곱법을 이용하여 레이아웃을 조정함으로써, 사용자가 처음에 설정한 기본 레이아웃으로부터 크게 어긋나지 않고, 균형이 잡힌 최종 레이아웃을 결정할 수 있다. 또한, 컨테이너 사이에는 후술하는 가변 링크가 설정되어 있기 때문에, 유입되는 콘텐츠 데이터의 사이즈에 따라서 후술하는 바와 같이 링크 사이즈가 변경된다. 본 명세서에 기재된 레이아웃 편집 애플리케이션은 이러한 레이아웃 조정 유닛을 구비함으로써, 할당된 데이터 사이즈에 따라서 복수의 부분 표시 영역(컨테이너)의 레이아웃 위치를 조정하는 것이 가능하게 된다.
<멀티레코드(멀티 데이터) 기능>
먼저, 멀티레코드의 개요를 설명한다. 통상의 문서 템플릿에서는, 하나의 레코드가 하나의 문서에 대응하고 있지만, 서브템플릿에 대응하는 멀티레코드는 기준 항목이 변화하는 단락이 발생할 때까지 레코드가 유입된다. 따라서, 멀티레코드는 하나의 문서내에 복수의 레코드가 포함되어 있는 문서이다. 따라서, 통상의 문서 템플릿에 대응하는 가변 데이터를 포함하는 데이터베이스와 서브템플릿에 대응하는 가변 데이터를 포함하는 멀티레코드의 데이터베이스를 준비하는 것이 바람직하다.
도 9는 멀티레코드와 그 레이아웃 방법의 개요의 일례를 도시한 도면이다. 여기서, 901은 문서, 902는 페이지, 903은 서브템플릿, 904는 데이터베이스를 나타내고 있다. 904로 나타낸 데이터베이스를 도시한 표에는 1∼7번의 데이터 그룹이 포함되어 있다. 하나의 레코드와 하나의 문서로 된 가변 프린트에서는, 7개의 레코드가 존재하므로 7개의 문서가 작성된다. 그러나, 멀티 레코드와 하나의 문서의 형식을 지원하는 가변 프린트에서는, 다음과 같은 처리를 행한다. 우선, 멀티레코드를 지정하는 컬럼을 사용자가 임의로 지정한다. 이 지정은 예를 들어 템플릿 작성시에 이루어진다. 이 지정된 필드를 특정하기 위한 정보는 도 24의 멀티레코드 정보(2404)의 일부로서 저장된다. 이 예에서는 "Name"이 지정된 것으로 한다. 그러면, 그 지정된 필드의 값과 동일한 값을 갖는 레코드는 하나의 문서에 레이아웃되는 레코드인 것으로 판정된다. 이들 레코드는 별도로 지정된 서브템플릿(도 24의 서브템플릿 정보에 저장됨)를 이용하여 레이아웃됨으로써 하나의 플로우 영역에 유입된다. 도 9의 예에서는, 1∼4번 레코드의 Name 필드의 값이 "Tom"이기 때문에, 1∼4번 레코드는 하나의 플로우 영역에 유입되어 하나의 문서상에 레이아웃된다. 5∼7번 레코드의 Name 필드의 값이 "Nancy"이기 때문에, "Tom"과 동일한 템플릿을 이용하되 다른 문서상에 레이아웃된다. 즉, 일단 "Tom"의 문서가 완결된 다음 "Nancy"의 문서가 작성된다. 그러므로, 지정 컬럼의 데이터가 변경되는 것에 따라서, 새로운 문서가 작성되게 된다.
구체적으로, 예를 들어 템플릿 데이터에서의 설정에 따라서 "Tom"의 문서에 풋터(footer)(도시 생략) 등을 부가한 후 페이지 나누기를 한다. 이에 따라, "Tom"의 문서는 완결한다. 다음에, 동일한 템플릿 데이터를 이용하여, "Nancy"의 문서의 헤더(도시 생략) 등을 새로운 페이지에 부가한다. 그리고, 템플릿에 정의된 플로우 영역에, 서브템플릿 정보로서 설정된 서브템플릿을 이용하여, NAME 필드의 값이 "Tom"인 레코드에 대하여 레이아웃하여 플로우 영역에 유입시킨다. 이것이 통상의 멀티레코드이다.
본 실시예에서는, Nancy와 Tom에 대해 동일한 템플릿 데이터를 이용하지만, 개개의 레코드에 대하여 동일한 서브템플릿을 이용할 필요는 없다. 대안적으로, 별도로 지정한 조건에 따른 서브템플릿을 이용할 수도 있다.
<템플릿 작성 모드 처리의 전체 플로우>
도 10 및 도 11은 본 발명에 따른 레이아웃 편집 시스템에 의한 템플릿 작성 모드의 처리 플로우와 그 설명 UI를 나타내고 있다. 도 10의 플로우의 각 단계를 도 11의 UI 도를 참조하여 설명하기로 한다. 레이아웃 편집 애플리케이션(121)이 실행되면, 새로운 템플릿의 작성의 지시를 사용자가 입력한다. 그러면, 도 11의 화면(단, 직사각형 1104, 1106, 1105는 제외한다)이 표시된다. 도 10의 수순은, 그 상태로부터 사용자의 지시에 따라서 수행되는 레이아웃 편집 애플리케이션의 수순이다.
우선, 레이아웃 편집 애플리케이션(121)이 도 11의 아이콘(1103)이 눌려진 것을 인식함으로써, 플로우 영역 작성 모드로 천이하고(S1001), 페이지 마진의 영역(1102)에서, 사용자의 마우스의 드래그에 의해 직사각형을 플로우 영역로서 묘화한다(S1002). 레이아웃 편집 애플리케이션(121)은 묘화된 직사각형의 위치 및 사이즈를, 플로우 영역(1106)의 위치 및 사이즈로 하여 메모리부(136)에 템플릿 데이터의 일부로서 저장한다(S1003). 컨테이너 1104 및 1105는 플로우 영역(1106)의 외측에 정의되는 텍스트 컨테이너 및 이미지 컨테이너이다. 이들 컨테이너는 플로우 영역내에 콘텐츠를 유입시키는 처리와는 무관하다. 그러나, 이들 컨테이너는 예를 들어 헤더와 풋터로서 제공될 수도 있다. 입력된 이들 컨테이너의 위치 및 사이즈도 템플릿 데이터의 일부로서 메모리부(136)에 저장된다. 플로우 영역(1106)은 다른 컨테이너와는 그 색이나 선의 종류 등의 직사각형 UI의 특징을 다르게 하여 사용자가 시각적으로 플로우 영역(1106)을 인식하기 쉽게 한다.
다음으로, 레이아웃 편집 애플리케이션(121)은 작성된 플로우 영역에 멀티레코드 필드를 연결시킨다(S1O04). 이것은, 예를 들어 플로우 영역에 연결되는 데이터베이스명 및 각 레코드에 있어서의 필드명 등의 식별자를 입력하는 처리이다. 이 처리를 위한 조작은, 예를 들어 플로우 영역을 클릭하여 대상 플로우 영역을 특정하고 일정한 조작 흐름에 따라서 필요한 정보를 입력하는 것이다. 그 정보는 도 24에 도시된 템플릿 데이터의 멀티레코드 정보로서 메모리부(136)에 저장된다. 이 정보는 S1006 및 S1007의 속성 입력과 동시에 입력될 수 있다.
다음으로, 레이아웃 편집 애플리케이션(121)은 작성된 플로우 영역에 각종 설정을 실시할지의 여부를 판정한다(S1005). 속성을 설정하는 경우, 레이아웃 편집 애플리케이션(121)은 플로우 영역에서 마우스 포인터를 클릭한 것을 인식하는 것에 의해, 속성 다이얼로그를 표시한다(S1006). 그러면, 레이아웃 편집 애플리케이션(121)은 표시된 속성 다이얼로그를 이용하여 설정된 내용을 인식하고, 대응하는 속성을 설정한다(S1007). 속성 다이얼로그 및 그 설정 방법에 대해서는 후술하기로 한다. 설정된 각종 정보는 메모리부(136)에 유지된다. 플로우 영역의 작성 및 설정이 종료되면, 레이아웃 편집 애플리케이션(121)은 레이아웃을 프리뷰하는지의 여부를 확인한다(S1008). 프리뷰하는 경우, 레이아웃 편집 애플리케이션(121)은 프리뷰 모드로 천이하여, 레이아웃 계산을 행한다(S1009). 이 레이아웃 계산은 도 7b에서 나타낸 플로우와 동일하다.
다음으로, 레이아웃 편집 애플리케이션(121)은 설정되어 있는 플로우 영역에 대하여 레이아웃 계산을 행한다(S1010). 이 처리에 대해서는 도 17을 참조하여 후술하기로 한다. 마지막으로, 레이아웃 편집 애플리케이션(121)은 레이아웃 결과를 표시한다(S1011). 여기서, S1009, S1010, S1011은 도 7a의 S703, S704, S705에 상당한다.
(플로우 영역의 속성 설정)
도 12는 플로우 영역의 각종 설정(속성 설정)을 행하는 설정 다이얼로그의 예를 나타내고 있다. 이 다이얼로그는 도 10의 플로우차트 중 S1006으로 표시되어 있다. 이것은 설정의 상세 내용을 S1007에서 반영시키는 다이얼로그의 UI 예이다. 또한, 서브템플릿 및 조건식에 대해서는 플로우차트에 대해 설명한 후에 설명하기로 한다.
우선, 사용자가 라디오 버튼(1202)에 의해 플로우 영역에 연결할 것이 서브템플릿인지 그렇지 않으면 조건식인지를 선택한다. 서브템플릿에 연결하는 것으로 선택되었다면, 사용자는 리스트 박스(1203)로부터 플로우 영역에서 사용하는 서브템플릿을 지정한다. 대안적으로, 조건식에 연결하는 것으로 선택되었다면, 사용자는 리스트 박스(1204)로부터 플로우 영역에서 사용하는 조건식을 지정한다. 서브템플릿 및 조건식은, 문서 템플릿에 기초하여 편집 중의 문서 템플릿내에 작성되거나 템플릿 외측의 미리 정해진 장소에 특정한 UI 수단에 의해 별도 작성될 수도 있다. 또한, 조건식은 도 15를 참조하여 후술하는 UI에 의해 작성될 수도 있다. 또한, 다른 방법으로서, 조건식을 별도의 파일에 저장하고, 설정 다이얼로그로부터는 이 파일을 지정함으로써 해당 파일을 선택할 수 있도록 할 수도 있다. 본 실시예에서는, 문서 템플릿내의 플로우 영역에 대하여 복수의 서브템플릿과 복수의 조건식을 작성할 수 있다. 그러나, 리스트 박스로부터 선택한다고 하는 특성 때문에, 서브템플릿과 조건식이 고유의 이름을 갖고 서로 식별할 수 있도록 설계되어야 한다. 이러한 설정 다이얼로그로부터, 서브템플릿을 플로우 영역에 유입시키는 플로우의 방향(즉, 콘텐츠가 유입되는 방향)을 선택란(1205)으로부터 선택한다. 콘텐츠의 간격은 세로는 설정란 1206, 가로는 설정란 1207로 설정하는 것이 가능하다.
이상의 설정을 확정하기 위해서는, OK 버튼(1208)을 누른다. OK 버튼(1208)을 누르면, 현재의 설정이 도 24의 플로우 영역 정보(2401)로서 메모리부(136)에 저장된다. 예를 들어, 대상 플로우 영역이 서브템플릿과 연결되어 있는지 또는 조건식과 연결되어 있는지를 나타내는 플래그 정보와, 그 플래그 정보에 따라서 서브템플릿명 또는 조건식명(조건식 파일의 명칭), 플로우 방향, 간격을 나타내는 정보가, 서브템플릿 정보(2403) 및 속성 정보(2402)로서 저장된다. 또한, 취소 버튼(1209)을 누르면 지정된 각종 설정은 전부 취소되어 저장되지 않는다.
(서브템플릿의 레이아웃 예)
전술한 서브템플릿에 대하여 개요를 설명한다. 도 13은 서브템플릿의 레이아웃 예(즉, 서브템플릿을 이용하여 데이터를 레이아웃한 예라는 의미이며, 이하 동일하다)를 나타내고 있다. 서브템플릿은 이미지 컨테이너, 텍스트 컨테이너를 원하는 수만큼 선택하여 레이아웃하고, 레코드의 어떤 데이터(필드)를 할당하는지에 대하여 설정한 데이터로서, 그 데이터를 템플릿으로서 저장해 둔 것이다. 이러한 서브템플릿은 하나의 레이아웃을 하나의 문서에서 다수회 사용하는 경우에 편리하다. 서브템플릿내에 레이아웃되는 컨테이너는 전술한 이미지 컨테이너, 텍스트 컨테이너와 마찬가지이며, 각 컨테이너 사이에는 링크를 설정하는 것도 가능하다. 따라서, 서브템플릿내에 레이아웃된 컨테이너에 대하여, 도 7b에 도시된 레이아웃 계산 방법을 적용함으로써, 레이아웃 사이즈를 최적의 방식으로 변화시키는 것이 가능하다.
도 13은 서브템플릿의 레이아웃 예를 나타내고 있다. 여기서, 1302와 1305는 이미지 컨테이너, 1303과 1306은 텍스트 컨테이너, 1307은 링크를 나타내고 있다.
도 13에서는, 서브템플릿 1301과 1304에 레이아웃된 각 컨테이너에 유입되는 이미지, 텍스트의 콘텐츠 사이즈가 다르다. 따라서, 레코드마다 각각 최적의 레이아웃을 계산하여 레이아웃을 변경하고 있다. 그 때문에, 동일한 서브템플릿을 이용하고 있음에도 불구하고, 서브템플릿 1301과 1304의 레이아웃은 컨테이너(부분 표시 영역)의 위치 및 사이즈가 다르다. 또한, 서브템플릿내에서의 레이아웃 방법은 전술한 도 7b의 처리를 이용하여 레이아웃 조정을 행한다.
(서브템플릿 조건식)
서브템플릿 조건식은 하나의 플로우 영역에 대하여 복수 종류의 서브템플릿을 선택적으로 할당할 수 있다. 이 조건식은 또한 데이터베이스로부터 조건에 일치하는 콘텐츠를 추출하기 위한 식이기도 하다. 이 때문에, 본 발명에서는 이것을 추출 조건이라고도 하며, 이러한 조건식(추출 조건)이 설정된 플로우 영역을 갖는 템플릿이 작성되게 된다. 또한, 플로우 영역에는 서브템플릿 및 조건식 중 어느 하나를 연결시킬 수 있다. 만약 플로우 영역에 대하여 서브템플릿을 연결하는 경우, 취득된 레코드는 연결된 서브템플릿내에 유입된다. 또한, 서브템플릿을 연결시킬 때에 조건식을 설정하여, 해당 조건식에 적합한 레코드만을 플로우 영역에 연결된 서브템플릿에 유입시키도록 할 수도 있다.
조건식은 조건에 적합할 때에 적용되는 서브템플릿의 식별 정보를 포함한다. 도 15는 조건식을 설정하는 UI 예를 나타내고 있다. 플로우 영역에 설정된 조건식 에 적합한 레코드가 해당 조건식과 연결되어 있는 서브템플릿과 연결되어 컨테이너에 유입되게 된다. 그리고, 레코드가 유입된 서브템플릿이 플로우 영역에 레이아웃되게 된다.
이 입력 영역은 조건식에 이름을 붙이는 텍스트 박스(1502)와, 가장 기본적인 조건 판정을 구성하는 요소인 IF 문(1503)과 ELSE 문(1504)의 쌍을 적어도 갖고 있다. IF 문의 입력 영역은 조건의 판정 대상으로 되는 필드의 선택을 행하는 리스트 박스(1505), 판정의 논리식을 설정하는 리스트 박스(1506), 판정에 이용되는 값을 입력하는 텍스트 박스(1507), 조건 판정 결과가 참(correct)이었을 때의 동작, 즉 해당 레코드를 삽입하기 위한 서브템플릿을 결정하는 THEN_USE 처리문(1508), 및 조건 판정 결과가 거짓(incorrect)이었을 때에 해당 레코드를 삽입하기 위한 서브템플릿을 결정하는 ELSE_USE 처리문(1504)을 포함한다. 판정의 논리식(1506)으로서는 "EQUAL", "NOT_EQUAL", "LESS_THAN", "LARGER_THAN", "START_WITH" 및 "END_WITH" 등 여러가지의 조건이 준비된다.
복잡한 조건식을 설정하기 위해, IF 문 중에 복합 조건을 설정하기 위한 AND/OR 접속문 콤보박스(1509)를 갖는다. 이 콤보박스로 AND 또는 OR의 복합 조건을 선택하면, IF 문 중에 하나의 조건 행이 추가된다. AND인 경우 복수의 조건이 전부 참일 때에만, OR인 경우 어느 하나의 조건이 참일 때에는 IF 문 판정 결과가 참이 된다. 보다 복잡한 조건 분기를 설정하기 위해, ELSE_IF 문 추가 버튼(1510)을 갖는다. 이 버튼(1510)을 누르면 전술한 IF 문과 ELSE 문의 사이에 ELSE_IF 문이 추가 삽입된다. ELSE_IF 문의 내용과 동작은, IF 문에 있어서의 내용과 동일하다. 판정 처리는 후술하는 바와 같이 순서대로 수행된다. IF 문의 판정 결과가 거짓인 경우 바로 다음의 ELSE_IF 문에 대한 판정을 행한다. 그 판정 결과가 거짓인 경우 또 그 다음의 ELSE_IF 문에 대한 판정을 행한다. 이러한 동작을 반복 수행한 후 마지막으로 ELSE 문에 대한 판정을 수행한다. 여기서, 1511은 선택되어 있는 ELSE_IF 문을 삭제하는 삭제 버튼이다. ELSE_IF 문의 수가 많아진 경우, 스크롤바(1512)를 사용하고 조건의 리스트를 표시하는 것이 가능하다. IF 문과 ELSE_IF 문 중 어느 하나에 대한 판정 결과가 참인 경우, 대응하는 USE 처리문이 실행된다. USE 처리문에는 서브템플릿명이 입력(선택)된다. 이와 같이, 조건식을 통해서, 여러가지의 값을 취하는 레코드의 각각에, 조건에 맞는 서브템플릿을 자동적으로 선택할 수가 있고, 하나의 조건식을 통하여 여러가지의 레이아웃을 실현하는 것이 가능하게 된다. 이 조건식을 플로우 영역에 연결함으로써, 여러가지의 레이아웃을 갖는 복수 종류의 서브템플릿을 하나의 플로우 영역내에 레이아웃하는 것이 가능하게 된다.
사용자는 조건을 입력하면, 마지막으로 OK 버튼(1514)을 누른다. OK 버튼(1514)을 누르면, UI에서 설정된 서브템플릿 조건을 나타내는 정보가 서브템플릿 정보(2403)의 일부로서 메모리부(136)에 저장된다. 이 서브템플릿 조건식은, 예를 들어 도 15의 UI에 기술된(선택된) 텍스트를 그대로 저장한 텍스트 파일 등, 조건과 이 조건을 만족시키는 경우의 서브템플릿을 특정할 수 있는 정보이면 충분하다. 도 15의 예에서는, "IF field01 EQUAL value01 AND field02 EQUAL value02 THEN USE subtemplate01 ELSE IF field01 EQUAL value03 AND field02 EQUAL value04 THEN USE subtemplate02 ELSE USE subtemplate03"를 서브템플릿 조건식이 나타내는 정보로서 저장한다. 이 정보는 간단한 문법으로 기술되어 있고, 더구나 도 15와 같은 UI로부터 입력되므로, 이대로 저장해도 문법적인 오류 등이 발생할 여지가 없다. 그 때문에, 간단한 프로그램으로 그 조건의 기술을 파싱하여 그 조건에 적합한 서브템플릿을 결정할 수 있다.
이와 같이, 조건식에는 데이터베이스로부터 레이아웃 대상 콘텐츠 데이터를 추출하기 위한 조건과, 해당 조건에 해당한 경우에 사용하는 서브템플릿을 연결하여 포함시키고 있다. 따라서, 이 조건식은 추출된 콘텐츠 데이터를 어떤 서브템플릿에 레이아웃할지에 대한 연결 정보로서 메모리부(136)에 유지된다. 또한, 전술한 바와 같이 복수의 조건식을 설정하는 것이 가능하기 때문에, 추출된 콘텐츠 데이터 항목의 각각에 연결된 서브템플릿이 존재한다. 그 때문에, 각 콘텐츠 데이터 항목이 레이아웃된 복수 종류의 서브템플릿이 플로우 영역에 레이아웃되게 된다.
<플로우 영역의 레이아웃 방법>
도 17은 레이아웃 편집 애플리케이션 프로그램(121)에 의한 플로우 영역내의 레이아웃 계산의 플로우를 나타내고 있다. 도 17의 수순은 도 10의 S1010 또는 도 7a의 S704에서 실행된다. 여기서는, 하나의 플로우 영역이 설정되어 있는 경우에 대해 설명한다. 복수의 플로우 영역이 설정되어 있는 템플릿에 관해서는, S1701 내지 S1715의 수순을 각 플로우 영역마다 반복하면 된다.
우선, 레이아웃 편집 애플리케이션 프로그램(121)은 레이아웃하기 위한 데이터를 플로우 영역에 연결된 데이터베이스로부터 취득하고(S1701), 레이아웃하는 레코드의 수를 n에 대입한다(S1702). 보다 구체적으로, 레이아웃 편집 애플리케이션을 구성하는 모듈의 하나인 사용자 인터페이스가 레이아웃할 레코드를 포함하는 데이터베이스와 통신함으로써, 레이아웃할 레코드 수를 인식할 수 있다.
레이아웃하는 레코드의 수가 0인 경우에는, 레이아웃 처리를 행할 필요가 없기 때문에, 처리를 종료한다(S1703). 다음으로, 레이아웃 편집 애플리케이션(121)은 첫번째 레코드로부터 체크를 하기 위해 레코드 체크용의 변수 k에 1를 대입한다(S1704). 또한, 레이아웃 편집 애플리케이션(121)은 레이아웃되는 서브템플릿의 수에 대한 변수 Num에 1을 대입한다(S1705). 그런 다음, 레이아웃 편집 애플리케이션(121)은 k번째의 레코드의 데이터를 데이터베이스로부터 판독한다(S1706). 판독된 레코드의 콘텐츠 데이터는 일시적으로 메모리부(136)에 저장된다.
레이아웃 편집 애플리케이션(121)은 대상 플로우 영역에 관한 플로우 영역 정보(2401)를 참조하여, 서브템플릿을 연결시킬지 또는 조건식을 연결시킬지를 판정한다(S1707). 조건식이 연결되는 경우, 레이아웃 편집 애플리케이션(121)은 후술하는 도 16a의 플로우차트에 기초하여, k번째의 레코드를 서브템플릿에 맞도록 레이아웃한다(S1708). 도 16a의 수순에서, 플로우 영역에 서브템플릿이 연결되는 경우에는 그 서브템플릿 정보를 판독한다. 조건식이 연결되는 경우에는 S1708에서 조건식을 평가하여, 얻어진 서브템플릿을 판독하며, 판독한 서브템플릿에 맞도록 k번째의 레코드를 레이아웃한다. 한편, 플로우 영역에 조건식이 연결되어 있지 않은 것으로 판정된 경우에는, 도 14의 플로우차트에 기초하여, 그 플로우 영역에 연결된 서브템플릿에 맞도록 k번째의 레코드를 레이아웃한다(S1709). S1708 또는 S1709에서 서브템플릿에 맞도록 레이아웃된 데이터는 플로우 영역에 유입될 때까지 메모리부(136)에 저장된다. 여기서, 저장되는 것은 레이아웃 계산의 결과로서 얻어진, 콘텐츠를 유입시킨 후의 각 컨테이너들 사이의 상대적인 위치 관계와 사이즈 및 그 컨테이너의 내용이다. 예를 들어, 서브템플릿상에서 적당한 좌표 원점을 결정하여, 그 좌표계에 나타나는 각 컨테이너의 위치와 사이즈에 대한 정보가 저장된다. 해당 좌표계상에서의 컨테이너의 위치에 대한 정보와 컨테이너에 포함시킬 해당 위치에 레이아웃될 데이터에 대한 정보도 상기 컨테이너의 위치와 사이즈에 대한 정보와 함께 저장된다. 이들 정보 항목들을 레이아웃 완료 서브템플릿 정보라고 한다.
서브템플릿의 레이아웃을 종료한 후, 레이아웃 편집 애플리케이션(121)은 변수 Num을 1씩 증가시키고(S1710), 다음 데이터에 대한 처리로 진행하기 위하여 변수 k를 1씩 증가시킨다(S1711). 그런 다음, 레이아웃 편집 애플리케이션(121)은 레코드할 데이터 수 n과 k를 비교한다(S1712). 만약에 k가 n 미만이면, S1706으로 진행하여, k번째의 데이터에 대하여 처리를 반복한다. k가 n 이상이면, 서브템플릿의 레이아웃은 종료하고, 플로우 영역에 레이아웃된 서브템플릿을 레이아웃하는 처리로 진행한다.
플로우 영역에 서브템플릿을 레이아웃하기 위해, 레이아웃 편집 애플리케이션(121)은 플로우 영역 정보(2401)로부터 플로우 영역의 사이즈를 취득하고(S1713), 레이아웃하는 서브템플릿의 사이즈를 취득한다(S1714). 보다 구체적으로, 후술하는 도 16a 및 도 16b의 플로우차트에 도시된 처리에 의해 콘텐츠 데이터를 레이아웃할 서브템플릿을 특정하고, 또한 서브템플릿내에서의 레이아웃의 최적화 처리의 실행 결과가 메모리부(136)에 저장되어 있기 때문에, 레이아웃하는 서브템플릿의 사이즈를 취득하는 것이 가능하게 된다. 본 실시예에서는, 각 서브템플릿의 외부 프레임의 사이즈는 서브템플릿내의 컨테이너의 사이즈에 의해 결정된다. 즉, 각 서브템플릿내에서의 자유로운 레이아웃 처리에 의해, 서브템플릿의 레이아웃 후의 사이즈는 레코드의 내용에 의존하여 변화한다. 그리고, 서브템플릿에 유입시켜진 레코드의 레이아웃 결과는 전술한 바와 같이 메모리부(136)에 유지되어 있기 때문에, 레이아웃 편집 애플리케이션(121)은 레이아웃할 서브템플릿의 사이즈를 취득하는 것이 가능하게 된다. 또한, 사용자에 따라서는 서브템플릿의 외부 프레임 사이즈를 일정한 것으로 하고자 할 수도 있다. 이 때문에, 소정의 처리에 의해 서브템플릿의 외부 프레임 사이즈를 고정으로 할지 가변으로 할지 전환하도록 할 수도 있다.
레이아웃 편집 애플리케이션은 플로우 영역 정보(2401)에 설정되어 있는 플로우 방향과 플로우 간격을 적용함으로써 콘텐츠 데이터가 레이아웃된 레이아웃 완료 서브템플릿을 플로우 영역내에 레이아웃한다(S1715). 여기서, 플로우 방향은 서브템플릿의 레이아웃 방법이며, 플로우 간격은 서브템플릿 사이의 간격이다. 또한, 플로우 영역에의 레이아웃은 S1708 및 S1709에서 저장된 레이아웃 완료 서브템플릿 정보에 따라 수행된다. 즉, 보다 구체적으로는, 각 레이아웃 완료 서브템플릿내의 좌표계에서 상대적으로 정의된 컨테이너의 위치 및 사이즈와 콘텐츠의 위치 및 내용을 플로우 영역의 좌표계로 변환한다. 이 때, 플로우 영역에 들어가지 않 는 레이아웃 완료 템플릿이 하나라도 있다면, 서브템플릿의 사이즈를 축소 변환할 필요가 있다. 또한, 서브템플릿의 축소 변환을 행하고 싶지 않은 경우에는, 후술하는 페이지 반복 기능에 의해 축소 변환을 피할 수도 있다.
(서브템플릿의 레이아웃(조건식 없음))
도 14는 S1709에서 수행되는 서브템플릿의 레이아웃 처리의 플로우를 도시한 것이다. 도 14에서, 레이아웃 편집 애플리케이션은 먼저 데이터베이스로부터 레이아웃하기 위한 데이터를 취득하고(S1401), 서브템플릿내의 각 컨테이너에 레이아웃하는 콘텐츠 데이터의 사이즈를 취득한다(S1402). 보다 구체적으로는, 전술한 바와 같이 레이아웃 편집 애플리케이션(121)을 구성하는 모듈의 하나인 사용자 인터페이스가 데이터베이스와의 연결을 수행하는 처리를 행함으로써, 데이터베이스의 데이터를 참조하는 것이 가능하게 된다. 이 때, 해당 데이터를 해석함으로써 사이즈 등을 취득할 수 있다. 또한, S1401과 S1402는 동시에 수행될 수도 있다. S1402의 처리시, 레이아웃 편집 애플리케이션(121)은 S1401에서 취득한 데이터의 정보를 해석한다. 또한, 취득된 콘텐츠 데이터의 사이즈는 메모리부(136)에 유지되게 된다.
레이아웃 편집 애플리케이션은 S1402에 의해 취득한 데이터 사이즈에 기초하여 각 컨테이너에 대하여 레이아웃 계산을 행하고(S1403), 레이아웃을 최적화한다(S1404). 최적화의 방법은 전술한 바와 같이 도 7a의 처리를 이용하여 실행된다.
레이아웃 편집 애플리케이션(121)은 S1404에 의해 최적화된 레이아웃을 결정하여(S1405), 레이아웃하는 데이터를 유입시키고(S1406), 레이아웃된 데이터를 표 시한다(S1407). 또한, S1405에 의해 결정된 레이아웃은 일시적으로 메모리부에 저장되게 된다. 여기서, S1407의 표시가 문서를 완성할 당시에 수행되는 것이라면 S1407은 불필요하다.
(서브템플릿의 레이아웃(조건식 있음))
도 16a 및 도 16b는 도 17의 S1708에서 플로우 영역에 조건식이 설정되어 있는 경우에, 조건 판정을 수행함으로써 데이터베이스로부터 레코드를 삽입하기 위한 서브템플릿을 선택하는 처리의 플로우차트이다.
도 16a에서는 레이아웃 편집 애플리케이션(121)은 우선 데이터베이스로부터 레이아웃하기 위한 데이터를 취득한다(S1601).
다음으로, 레이아웃 편집 애플리케이션(121)은 데이터를 레이아웃하는 서브템플릿을 결정한다(S1602). 또한, 현재 대상으로 하고 있는 레코드의 콘텐츠 데이터가 플로우 영역에 설정되어 있는 조건과 합치하지 않는 경우에는, 해당 대상 레코드를 레이아웃하지 않고 다음 레코드를 대상으로 한다. 즉, 조건식에 합치하는 콘텐츠 데이터를 갖는 레코드가 레이아웃의 대상 레코드로서 취급된다. 그 상세에 대해서는 도 16b에서 설명한다.
다음으로, 레이아웃 편집 애플리케이션(121)은 각 컨테이너에 레이아웃하는 데이터의 사이즈를 전달한다(S1603). 보다 구체적으로는, 레이아웃 편집 애플리케이션이 S1601에 의해 취득된 데이터를 해석함으로써, 레이아웃할 데이터의 사이즈를 인식하여, 해당 데이터의 사이즈와 각 컨테이너를 연결하는 것에 의해 S1603의 처리를 실현한다.
그리고, 레이아웃 편집 애플리케이션(121)은 S1603에서 전달받은 데이터 사이즈에 기초하여, 각 컨테이너에 있어서의 레이아웃을 계산하고(S1604), 그 레이아웃을 최적화한다(S1605). 최적화의 방법은 전술한 바와 같이, 콘텐츠 데이터의 사이즈에 따라서 조정함으로써 실현된다.
레이아웃 편집 애플리케이션(121)은 최적화된 레이아웃을 결정하여(S1606), 레이아웃하는 데이터를 유입시킨(S1607) 다음, 플로우 영역에 데이터를 레이아웃하고 표시한다(S1608). 여기서, 표시가 문서를 완성할 당시에 수행되는 것이라면 S1608은 불필요하다.
도 16b는 도 16a 중의 서브템플릿을 결정하는 처리인 S1602의 상세 내용을 기술한 플로우차트이다.
레이아웃 편집 애플리케이션(121)은 대상 플로우 영역의 플로우 영역 정보(2401)에 기초하여 서브템플릿 조건식 파일을 읽어, 조건식의 최초의 IF 문을 추출하고(S1611), S1601에서 취득한 레코드로부터 IF 문의 판정 대상이 되는 필드의 값을 추출한다(S1612). 또한, 데이터베이스로부터 취득한 각 레코드의 필드의 값은 데이터베이스와 통신함으로써 취득할 수도 있다. 대안적으로, 각 레코드의 필드의 값을 메모리부(136)에 유지함으로써, 레이아웃 편집 애플리케이션이 메모리부(136)를 참조하여 필드의 값을 추출하도록 할 수도 있다.
레이아웃 편집 애플리케이션(121)은 S1612에 의해 추출한 각 필드의 값이 S1611에 의해 추출한 조건에 합치하는지의 여부를 판정한다(S1613). 즉, 조건식은 메모리부(136)에 유지되어 있기 때문에, 레이아웃 편집 애플리케이션(121)이 메모 리부(136)를 참조하여 구체적인 필드값을 가지고 평가를 수행함으로써, S1613에 기재된 판정 처리를 행할 수 있다.
레이아웃 편집 애플리케이션(121)이 플로우 영역에 설정되어 있는 조건식과 판정 대상으로서 추출한 필드의 값이 합치하는 것으로 판정한 경우, 즉 평가의 결과가 참인 경우, 그 조건에 해당하는 USE 처리를 선택하고, 거기에 기술된 서브템플릿명을 메모리부(136)(서브템플릿 정보(2403))에 저장한다(S1614). 이 처리에 의해, 현재 대상으로 하고 있고 조건식과 합치하는 것으로 판정된 콘텐츠 데이터를 레이아웃하기 위한 서브템플릿이 연결되어 유지된다. 이 연결된 정보도 전술한 연결 정보 항목의 하나로서 메모리부에 유지된다.
레이아웃 편집 애플리케이션(121)은 S1613에 의해 합치하지 않는 것으로 판정한 경우, 다른 IF 문이 있는지의 여부를 판정한다(S1615). 다른 IF 문이 있다면, 레이아웃 편집 애플리케이션(121)은 S1611의 처리로 들어가 IF 문의 판정을 계속한다. 결국 어떠한 IF 문에도 합치하지 않는 레코드에 대해서는, ELSE 문의 USE 처리를 선택하여, 해당하는 서브템플릿명을 저장한다(S1616).
도 16b의 처리에서는, S1616가 있기 때문에 조건에 적합하지 않은 레코드도 서브템플릿에 유입된다. 그러나, ELSE 문에 사용하여야 할 서브템플릿이 지정되어 있지 않은 경우, 조건에 적합하지 않은 레코드는 서브템플릿에 유입시키지 않도록 할 수도 있다. 즉, ELSE인 경우에 사용하여야 할 서브템플릿을 지정하지 않음으로써, 서브템플릿에 유입되는 레코드를 플로우 영역에 설정된 조건식에 적합한 것들로 제한하는 효과를 얻을 수 있다.
이상의 처리에 의해, 복수 종류의 서브템플릿의 사용을 허용하는 조건식이 설정되어 있는 경우, 플로우 영역에는 복수 종류의 레이아웃 완료 서브템플릿이 레이아웃되게 된다. 또한, 취득한 모든 레코드를 서브템플릿에 유입시키는 것과 조건식에 적합한 레코드만을 서브템플릿에 유입시키는 것을 절환하는 것이 가능한 조건식을 고려해 볼 수도 있다.
도 18a는 플로우 영역내에 서브템플릿이 레이아웃된 예를 나타내고 있다. 도 18a에서, 1801은 페이지 마진, 1802와 1803은 고정의 컨테이너, 1804는 플로우 영역, 1805는 서브템플릿, 1806은 가로 플로우 간격, 1807은 세로 플로우 간격을 나타내고 있다. 플로우 영역에는 4개의 서브템플릿이 레이아웃되어 있다. 또한, 이들 서브템플릿은 플로우 영역의 상부 좌측 코너를 기점으로 하여, 상기 플로우 영역의 설정 다이얼로그에 설정된 적절한 플로우 간격을 남기고 레이아웃된다.
플로우 영역에서 사용되는 각 서브템플릿은, 조건식의 처리 결과로서 얻어진 것이다. 그 서브템플릿내의 상세한 레이아웃 디자인은 서브템플릿내에 유입되는 레코드에 포함되는 콘텐츠 데이터의 사이즈가 다르기 때문에, 그 레이아웃 결과도 서로 다르다.
도 18b는 이러한 조건식에 기초하여 얻어진 여러 서브템플릿에 의해, 플로우 영역내의 유입하는 상황을 나타낸다. 여기서, 1804로 도시된 플로우 영역에서 1805로 도시된 서브템플릿의 상세 레이아웃이 도시되어 있다. 이와 같이, 플로우 영역의 사이즈는 레이아웃되는 서브템플릿의 수에 무관하게 고정되어 있다. 레이아웃 사이즈가 플로우 영역의 사이즈를 넘는 서브템플릿이 있는 경우, 그 초과된 부분은 클리핑되어 표시되지 않는다. 마지막으로, 레이아웃 결과를 표시하고 처리를 종료한다(S1716).
또한, 서브템플릿이 플로우 영역을 초과하는 것으로 판정된 경우, 서브템플릿이 플로우 영역에 들어가도록 서브템플릿을 축소하는 것도 생각해 볼 수 있다. 따라서, 서브템플릿이 플로우 영역을 초과하는 것으로 판정된 경우, 클리핑 처리를 할지 축소 처리를 할지를 지정하기 위한 다이얼로그가 표시되도록 할 수도 있다. 도 18b에는 4종류의 레이아웃 완료한 서브템플릿이 레이아웃되어 있는 상황을 나타내고 있다.
이상의 수순에 의해 플로우 영역에 레이아웃되는 레코드의 원하는 필드의 값에 따라서, 해당 레코드의 레이아웃을 위한 원하는 서브템플릿을 지정하는 것이 가능하다. 이 때문에, 문서에 있어서의 오브젝트의 레이아웃의 자유도가 개선되며, 고품질의 문서를 작성할 수 있다.
또한, 조건식을 이용하여, 플로우 영역에 대하여 모든 레코드를 유입시킬지 조건식에 적합한 레코드만을 유입시킬지에 대한 설정을 수행할 수 있기 때문에, 사용자가 소망으로 하는 레이아웃을 간단하게 작성할 수 있다.
도 25a 내지 도 25c는 구체예를 나타낸 것이다. 도 25a에 도시된 플로우 영역이 정의된 템플릿(2502a)에서, 그 플로우 영역에는 조건식(2501)이 연결되어 있다. 이 조건식(2501)은 서브템플릿 정보(2403)로서 저장되어 있다. 이 조건식(2501)에 따라, 레코드내의 필드 데이터 A가 1이면 그 레코드에는 서브템플릿 2503이 사용되며, 필드 데이터 A가 2이면 그 레코드에는 서브템플릿 2504가 사용되며, 그 밖의 경우에는 그 레코드에는 서브템플릿 2504가 사용되게 된다. 레이아웃 대상의 데이터베이스에는 레코드 2506, 2507이 포함되어 있다.
여기서, 도 25b에 도시한 바와 같이 최초로 레코드 2506을 페치한다. 이 경우, 도 17, 도 16a, 도 16b의 수순에 따른 처리가 수행된다. 즉, 조건식 "field data A=1"가 먼저 평가된다. 이 조건은 참이 아니므로, 다음에 "field data A=2"가 평가된다. 결국, 이 조건도 참이 아니다. 따라서, 그 경우의 USE 문에 따라 서브템플릿 2505를 이용하여 레코드 2506이 레이아웃된다. 이것이 레이아웃 2502b의 예이다. 단, 도 17의 수순에서는, 서브템플릿을 플로우 영역에 유입시키는 것은 모든 레코드를 레이아웃하고 나서 수행된다. 그러므로, 도 25b와 같은 프리뷰 표시는 행해지지 않는다.
그 다음에, 레코드 2507이 페치된다. 이 경우에는 조건식 "field data A=1"가 참이다. 따라서, 그 경우의 USE 문에 따라 서브템플릿 2503을 이용하여 레코드 2507이 레이아웃된다.
이와 같이 하여, 레코드 2506 및 2507의 판정 처리가 종료되어, 레코드가 유입되어야 하는 서브템플릿이 결정된다. 그런 다음, 실제로 레코드에 포함되는 각 콘텐츠 데이터의 레이아웃을 서브템플릿내의 연결된 각 컨테이너에서 조정함으로써 레이아웃 2502c가 얻어진다. 그러므로, 레코드마다 상이한 서브템플릿을 사용자가 설정한 조건식에 기초하여 사용할 수 있게 된다.
[제2 실시예]
종래, 플로우 영역은 1 페이지의 범위내에 한정되어, 1 페이지의 범위내에 서브템플릿을 세트하기 위한 처리를 행함으로써, 포스트카드 등의 지면이 한정된 문서에 대응한 레이아웃 결과를 실현하는 것을 목적으로 하고 있었다. 그 때문에, 다수의 페이지에 걸쳐 서브템플릿을 레이아웃하는 것은 고려되고 있지 않았다. 그러나, 고객마다 맞춤화된 문서를 만든다고 하는 니즈로부터, 페이지 수를 한정하지 않고 고객의 흥미의 범위에 따라서, 페이지의 수를 자유롭게 변경할 수 있는 문서를 작성하는 것도 생각해 볼 수 있다.
본 발명의 제2 실시예에서는, 플로우 영역내에 서브템플릿을 레이아웃한 결과 서브템플릿이 플로우 영역밖으로 초과할 때, 플로우 영역을 갖는 새로운 페이지를 자동적으로 생성하여, 새로운 페이지에 서브템플릿의 초과 부분을 연속하여 레이아웃하는 방법을 포함한 자동 레이아웃 시스템에 대하여 설명한다. 이러한 기능을 페이지 반복 기능이라고 한다.
이 방법의 이점은 하나의 플로우 영역을 정의해 두면, 그 플로우 영역에 연결된 데이터베이스의 모든 레코드를 그 플로우 영역의 정의에 따라서 레이아웃하여 하나의 문서에 통합할 수 있다는 것이다. 제2 실시예의 구성요소 중 제1 실시예와 공통되는 부분(도면 및 그 설명)에 대해서는 기재를 생략한다.
<복수 페이지의 중의 반복 페이지>
도 19는 복수의 페이지를 갖는 문서에 대하여, 템플릿 작성 모드에서, 플로우 영역을 삽입할 때에 호출하는 설정 다이얼로그의 UI 예이다. 라디오 버튼(1902)으로부터 플로우 영역의 ON/OFF를 선택한다. ON인 경우에, 텍스트 박스(1903)에서, 플로우 영역을 레이아웃하는 페이지 번호를 설정한다. 이 UI는 개시 페이지의 번호는 1 이상이며, 종료 페이지는 그 문서의 최대 페이지 이하가 되어야 한다고 하는 입력 제한을 갖는다.
또한, 텍스트 박스(1904)에서 레이아웃된 플로우 영역중에 인스턴스를 반복적으로 생성하여 서브템플릿을 유입할 반복 페이지 범위를 설정한다. 반복 페이지에 대해서는 후술하기로 한다. 여기서, 반복 페이지의 개시 페이지는, 플로우 영역의 개시 페이지 이상이며, 종료 페이지는 플로우 영역의 종료 페이지 이하가 되도록, UI에 의해 입력이 제한된다. 또한, 적어도 1 페이지는 반드시 반복 페이지로 되도록 UI에 의해 입력이 제한된다. 이러한 제한은, 문서의 헤더 부분과 풋터 부분에는, 각각 페이지 반복에 적합하지 않은 헤더나 풋터가 포함되어 있을 수 있기 때문이다.
즉, 플로우 영역의 개시 페이지로부터 반복 페이지의 설정에 있어서의 개시 페이지의 바로 앞 페이지까지의 범위 내에 적어도 하나의 비반복 페이지가 존재한다. 또한, 반복 페이지의 설정에 있어서의 종료 페이지의 바로 다음 페이지로부터 플로우 영역의 종료 페이지까지의 범위 내에 적어도 하나의 비반복 페이지가 존재한다.
설정 다이얼로그에서 OK를 누른 경우, 설정한 페이지 범위에 따라서 플로우 영역이 각 페이지에 삽입되고, 이들의 정보는 복수의 페이지를 하나의 그룹으로 통합하기 위하여 복수 페이지에 걸치는 템플릿 정보로서 메모리부(136)에 저장된다.
페이지들의 그룹은, 예를 들어 그 그룹의 식별 정보를 템플릿 정보에 갖춤으로써 하나의 그룹으로서 취급할 수 있다. 또한, 설정한 라디오 버튼(1902)을 나타 내는 플로우 영역 반복 플래그 또는 각종 페이지의 설정은 페이지마다 플로우 영역 정보(2401)의 일부로서 메모리부(136)에 저장된다. 단, 플로우 영역의 위치를 제외한 다른 속성 정보나 서브템플릿 정보, 멀티레코드 정보는 각 페이지에 대하여 동일하다. 따라서, 플로우 영역의 위치 이외의 정보에 있어서, 동일 그룹에 속하는 템플릿에 대해서는, 예를 들어 선두 페이지에 대하여 설정된 정보를 참조한다.
<플로우 영역의 위치 제어>
복수의 페이지에 걸쳐 레이아웃된 플로우 영역은, 각각의 페이지에서 각각의 위치와 크기를 차지하는 것이 가능하다. 도 20은 각 페이지에 있어서 플로우 영역의 위치와 크기를 조정하기 위한 UI 예를 나타내고 있다. 여기서, 2001은 마진 영역을 나타낸다. 2004로 도시된 플로우 영역은 상술한 바와 같이, 일정한 종류의 선이나 색에 의해 통상의 컨테이너와는 다른 표현으로 알기 쉽게 표시된다. 그러나, 도 20에서와 같이, 플로우 영역의 사이즈는 레이아웃 편집 영역내에서, 도형 묘화 소프트웨어로 공지된 일반적인 엘리먼트인 사이즈 변경 핸들(2003)에 의해 변경하는 것이 가능하다. 플로우 영역에서는, 그 존재 가능 영역을 마진 영역내에 한정하는 것이 바람직하다. 또한, 플로우 영역 사이즈가 변경된 경우, 변경후의 사이즈가 플로우 영역의 정보로서 메모리부(136)에 유지된다.
<반복 페이지>
도 21a 및 도 21b는 하나의 문서 중의 복수의 페이지에 걸쳐 플로우 영역을 레이아웃한 상황과, 그 플로우 영역에 실제의 데이터를 삽입했을 때에 레이아웃 완료한 페이지가 생성된 상황을 개략적으로 나타낸 도면이다.
여기서, 도 21a의 2102는 반복 페이지이다. 또한, 2101과 2103은 반복 페이지가 아니지만, 플로우 영역이 존재하는 페이지이다. 또한, 2104는 플로우 영역을 나타내고 있다. 즉, 도 21a의 템플릿은 도 19에 도시된 예에 따라서 구성되어 있다. 또한, 2105와 2106은 통상의 컨테이너를 나타내고 있다. 이들 통상의 컨테이너는 플로우 영역과는 무관하다. 통상의 컨테이너에는, 그것과 연결되는 콘텐츠를 가지며 멀티레코드 처리를 받지 않는다.
플로우 영역(2104)은 복수 페이지에 걸쳐서 있지만, 레이아웃 처리 애플리케이션에 의해서는 연속한 하나의 영역으로서 취급된다. 즉, 플로우 영역의 위치 및 사이즈를 제외한, 그 밖의 플로우 영역 정보는 공통으로 참조된다. 즉, 플로우 영역을 반복하는 지정이 행하여진 경우, 사용자는 지정한 페이지에 따라서 복수 페이지의 템플릿을 정의할 필요가 있다. 이 때, 플로우 영역의 위치 이외의 속성은 복수의 페이지에 대해 전부 공통으로 한다.
이와 같이 구성함으로써, 실제의 데이터를 삽입했을 때에는, 도 21a의 예에서는 2101∼2103의 3 페이지에 걸치는 플로우 영역 전체를 사용하여 데이터베이스의 레코드를 전부 레이아웃하는 것이 된다.
도 21b는 도 21a와 같이 설정된 플로우 영역에 대하여 실제의 데이터를 삽입하여, 레이아웃 완료 문서가 얻어진 상태를 나타낸다. 여기서, 2107은 한 종류의 서브템플릿을 나타내고 있다. 설명의 편의상, 실제로 유입되는 서브템플릿이나 컨테이너의 세부는 생략하고 표기하고 있다. 도 21b에서는 반복 페이지로 지정된 도 21a에서의 두번째 페이지(2102)가, 레코드의 수에 따라서 자동적으로 생성되어 반복되고 있는 것을 나타내고 있다. 즉, 도 21a 및 도 21b에서는 21개의 레코드를 플로우 영역에 유입시키고 있지만, 도 21a에 기재된 페이지 2101∼2103의 플로우 영역에서는 21개의 레코드를 레이아웃한 서브템플릿을 포함시킬 수 없다. 이 때문에, 모든 레코드가 플로우 영역에 레이아웃될 때까지 반복 페이지로 지정된 페이지 2102가 자동적으로 생성되게 된다.
본 실시예에서는 미리 반복 페이지를 지정하는 경우에 대해 기술했지만, 자동적으로 반복 페이지가 지정되도록 할 수도 있다. 그 경우, 일례로서 플로우 영역의 면적이 가장 큰 페이지를 반복 페이지로 지정할 수도 있다. 이것은, 서브템플릿이 가장 많이 레이아웃되는 페이지(즉, 가장 큰 플로우 영역을 갖는 페이지)를 반복 페이지로 지정함으로써, 쓸데 없는 페이지가 반복하여 생성되는 것을 방지하는 것이 가능하기 때문이다.
이와 같이 복수의 페이지에 걸쳐 플로우 영역이 존재하는 경우, 그 페이지의 성격에 따라, 어떤 페이지를 반복 페이지로 설정할지를 선택할 수 있도록 하는 방법은 문서의 표현을 향상시키는 효과가 있다. 도 21a 및 도 21b의 예에서, 첫째 페이지의 플로우 영역에는 고객에의 인사문을 싣고 컨테이너부에는 통상 고객명을 기재하며; 그 후에는 멀티레코드에 의한 레코드 데이터를 플로우 영역에 표시하고; 반복 페이지로 다수의 레코드 데이터를 처리한 후; 3번째 페이지의 플로우 영역에 판매 담당자명과 맺음 인사문을 싣는 것을 생각할 수 있다. 이와 같이, 복수의 페이지에 다수의 유사한 레코드 데이터를 레이아웃하는 문서의 형태를 예로 들었지만, 복수 페이지 중 일부에는 그 내용에 다양성을 갖게 할 수 있다.
<레이아웃 처리의 플로우>
도 22a 및 도 22b는 본 발명의 제2 실시예에 있어서의 레이아웃 완료 콘텐츠를 플로우 영역에 유입시킬 때의 플로우차트이다. 도 22a 및 도 22b의 처리는, 제1 실시예에서의 도 17의 S1715로서 실행된다. 이 플로우차트에서는, 서브템플릿을 복수의 페이지로 이루어지는 플로우 영역에 레이아웃하는 방법을 기술하고 있다.
우선, 레이아웃 편집 애플리케이션(121)은 플로우 영역내에 레이아웃하는 서브템플릿 수를 취득하여 취득된 수를 n에 대입한다(S2001). 이 수는, 도 17의 S1712에서 확정된 값 k 또는 n이다. n이 0인 경우에는(S2002), 플로우 영역에 레이아웃할 필요가 없기 때문에, 처리를 수행하지 않고 종료한다(S2003). 이들의 처리의 상세에 대해서는 전술한 바와 마찬가지이므로 여기서는 설명을 생략한다.
다음으로, 레이아웃 편집 애플리케이션(121)은, 변수 k를 1로 초기화하고(S2204), 문서의 선두에 반복 페이지가 아니고 플로우 영역이 존재하는 페이지 또는 페이지의 그룹이 있는지의 여부에 대한 정보를 취득한다. 이러한 비반복 페이지의 그룹이 있다면, 레이아웃 편집 애플리케이션(121)은 문서의 선두에서 비반복 페이지에 상당하는 템플릿 정보를 템플릿 데이터로부터 판독한다. 레이아웃 편집 애플리케이션(121)은 비반복 페이지 그룹의 개시 페이지를 s, 그 종료 페이지, 즉 반복 페이지 바로 앞의 페이지를 e에 대입한다(S2205). 이들 페이지에 대한 정보는 도 19의 UI에 의한 사용자 입력에 의해 메모리부(136)에 저장된 플로우 영역 정보로부터 판독된다.
다음으로, 레이아웃 편집 애플리케이션(121)은 페이지 s∼e에, 판독한 템플 릿의 플로우 영역 정보에 따라서, 선두에서부터 순서대로 대상 페이지내(페이지 s∼e)에 포함시킬 수 있는 만큼의 서브템플릿을 순서대로 유입시킨 다음(S2206), 페이지 s∼e에 포함된 서브템플릿의 수를 구하여 그 수를 t로 설정한다(S2207). 이 시점에서, 레이아웃 편집 애플리케이션(121)은 k에 t를 대입하고(S2208), k와 n을 비교한다(S2209). 또한, k의 값은 메모리부(136)에 일시적으로 유지된다. k가 n 미만이면, 모든 서브템플릿이 플로우 영역에 레이아웃되지 않는다. 따라서, S2210으로 진행한다. 만약 k가 n과 동등하다면, 모든 서브템플릿이 플로우 영역에 레이아웃된 것으로 판정된 것이기 때문에 처리를 종료한다.
레이아웃 편집 애플리케이션(121)은 우선 현재의 레이아웃 완료 페이지 수 p를 메모리부(136)에 일시적으로 저장한다(S2210). 다음으로, 레이아웃 편집 애플리케이션(121)은 문서 말미에서 비반복 부분에 상당하는 템플릿 정보를 템플릿 데이터로부터 판독한다. 또한, 레이아웃 편집 애플리케이션(121)은 문서의 후미에서 비반복 페이지의 플로우 영역이 존재하는 페이지 번호(반복 페이지 범위로 지정된 바로 다음 페이지로부터 최종 페이지까지)를 취득하고, 개시 페이지를 s, 종료 페이지를 e에 대입한다(S2211). 이들 페이지의 정보도, 도 19의 UI에 의한 사용자 입력에 의해 메모리부(136)에 저장된 플로우 영역 정보로부터 판독된다.
레이아웃 편집 애플리케이션(121)은 페이지 s∼e에, 판독한 템플릿의 플로우 영역 정보에 따라서 선두에서부터 순서대로 포함시킬 수 있는 만큼의 서브템플릿을 순서대로 유입시킨 다음(S2212), 페이지 s∼e에 포함된 서브템플릿의 수를 취득하여 그 수를 t로 설정한다(S2213). 그 다음으로, 레이아웃 편집 애플리케이션(121) 은 k+t와 n을 비교한다(S2214). k의 값은 전술한 바와 같이 메모리부(136)에 일시적으로 유지되어 있다. 따라서, 레이아웃 편집 애플리케이션(121)은 k의 값을 인식할 수 있다. k+t가 n 미만이면 S2215로 진행한다. k+t가 n과 동등하다면, 반복 페이지를 이용하지 않고 모든 서브템플릿을 플로우 영역에 레이아웃한 것으로 판정된 것이기 때문에 처리를 종료한다.
S2214까지의 처리가 완료된 후에도 도 22a 및 도 22b에 기재된 플로우차트의 처리가 종료되지 않는 경우, 선두의 비반복 페이지와 후미의 비반복 페이지를 합쳐도 레이아웃할 레코드(레이아웃 완료한 서브템플릿)가 전부 문서에 포함될 수 없는 것으로 판정된다.
따라서, 레이아웃 편집 애플리케이션(121)은 S2212에서 유입 완료한 페이지 번호인 p보다 다음에 있는 레이아웃 완료 페이지의 인스턴스(레이아웃한 데이터)를 파기한다(S2215). 즉, 반복 페이지에 대하여 S2212에서 유입 완료한 페이지 번호인 p보다 다음(반복 페이지 범위로 지정된 바로 다음의 페이지로부터 최종 페이지까지)에 있는 레이아웃 완료 인스턴스를 유입시키기 위해서 S2215의 처리가 수행된다.
레이아웃 편집 애플리케이션(121)은 반복 페이지 부분에 상당하는 템플릿 정보를 메모리부(136)로부터 판독하고, 문서내의 반복 플로우 영역의 페이지 번호를 취득하여, 개시 페이지를 s, 종료 페이지를 e로 설정한다(S2216). 이들 페이지에 대한 정보도 메모리부(136)에 유지되어 있는 플로우 영역 정보(2401)로부터 판독된다.
레이아웃 편집 애플리케이션(121)은 반복 페이지 s∼e의 플로우 영역에 대하여 포함시킬 수 있는 만큼의 서브템플릿(레이아웃 완료 인스턴스)을 유입시키며(S2217), 반복 페이지 s∼e에 포함된 서브템플릿의 수를 취득하여 t에 대입하고(S2218), k에 t를 가산하여 다시 k에 대입한 다음(S2219), k와 n을 비교한다(S2220). S2220에 있어서 레이아웃 편집 애플리케이션이 "NO"라고 판정한 경우, 즉 S2202에서 취득한 모든 서브템플릿을 유입시킬 수 있다고 판정된 경우, 도 22에 있어서의 플로우차트의 처리를 종료한다.
그러나, S2220에서 "YES"라고 판정된 경우, 다시 S2210으로 진행한다. S2210의 처리에 들어간 후, 레이아웃 편집 애플리케이션(121)은 S2211로부터 S2213까지의 처리를 수행한다. 레이아웃 편집 애플리케이션(121)이 S2214에서 다시 "YES"라고 판정한 경우, 선두의 비반복 페이지 및 첫번째의 반복 페이지 및 후미의 비반복 페이지에 있는 플로우 영역을 이용하여도 S2201에서 취득한 모든 서브템플릿(레이아웃 완료 인스턴스)을 포함시킬 수 없는 것으로 판정된다. 따라서, 다시 S2215로 진행하여 반복하여 플로우 영역을 포함하는 페이지가 생성되게 된다. 이상의 처리를 S2220에서 "NO"라고 판정될 때까지 반복함으로써, 모든 서브템플릿을 유입시킬 수 있다고 판정될 때까지 반복 페이지가 자동적으로 생성되기를 계속한다. 이 생성 처리는 미리 정해진 페이지를 복제하는 것일 수도 있다.
아래에서는, 도 21a 및 도 21b를 참조하여 이상의 처리를 보다 구체적으로 설명한다. 우선, S2201에 의해 취득된 서브템플릿(레이아웃 완료 인스턴스)에서부터 페이지 2101의 플로우 영역에 포함시킬 수 있는 만큼의 서브템플릿을 유입시킨 다. 여기까지의 처리는 S2201로부터 S2208에 대응한다.
계속해서, 취득한 모든 서브템플릿이 유입되지 않은 것으로 판정된 경우(S2209), 남은 서브템플릿을 페이지 2103의 플로우 영역에 유입시킨다. 여기까지의 처리는 S2210으로부터 S2213에 대응한다.
그리고, 페이지 2101 및 2103의 플로우 영역을 이용하여도 S2101에서 취득한 모든 서브템플릿을 유입시킬 수 없다고 판정된 경우(S2214), 페이지 2103에 유입시킨 서브템플릿을 삭제하여, 해당 서브템플릿을 반복 페이지인 페이지 2102의 플로우 영역에 유입시킨다. 여기까지의 처리가 S2215로부터 S2219이다. 이상의 처리에 의해, S2201에서 취득된 서브템플릿이 순서대로 페이지 2101 및 2102의 플로우 영역에 유입되게 된다.
S2220에서는, S2201에서 취득한 모든 서브템플릿을 포함시킬 수 있는지의 여부를 판정한다(S2220). 모든 서브템플릿을 포함시킬 수 없는 것으로 판정되면, 페이지 2103의 플로우 영역을 초과하는 서브템플릿을 다시 유입시킨다. 여기까지의 처리에 의해서도 모든 서브템플릿이 유입될 수 없다고 판정된 경우(S2214에서 "YES"), 다시 S2215로 진행하여, 반복 페이지인 페이지 2102가 생성되어, 생성된 페이지 2102의 플로우 영역에 서브템플릿이 유입되게 된다. 이상의 처리를 반복함으로써, 도 21b에 도시된 바와 같이, 모든 서브템플릿이 포함될 때까지 반복 페이지인 페이지 2102만이 반복하여 복제(생성)되게 된다.
또한, 반복 페이지로서 복수 페이지를 지정한 경우, 취득되는 서브템플릿 수에 따라서는, 공백 페이지가 발생할 가능성도 있다. 예를 들어, 반복 페이지로서 3개의 페이지군을 지정한 경우, 취득한 서브템플릿을 포함시킬 수 없는 경우에는 이 3개의 페이지군이 생성되게 된다. 즉, 반복 페이지가 생성된다. 그러나, 취득된 서브템플릿 수에 따라서는 새롭게 생성된 반복 페이지의 2번째 페이지에 한정된 영역에 포함되고, 반복 페이지로 지정된 3번째 페이지가 공백으로 될 가능성이 있다. 이 경우, 공백 페이지는 사용자의 설정에 의해 자동적으로 삭제되게 된다.
이와 같이, 본 실시예에서는, 플로우 영역에 템플릿을 포함시킬 수 없는 경우에는, 자동적으로 새로운 페이지를 생성하여, 1 페이지의 플로우 영역에 전부 포함시킬 수 없는 서브템플릿을 연속하여 유입시킬 수 있도록 한다. 이 방법은 페이지 제한이 없는 문서를 작성하는 것을 목적으로 한다. 생성되는 새로운 페이지는 사용자에 의해 미리 지정된 반복 페이지이기 때문에 사용자의 의도를 반영한 페이지를 구성하는 것이 가능하게 된다. 뿐만 아니라, 전술한 바와 같이 자동적으로 반복 페이지가 설정되도록 함으로써, 사용자의 조작성을 향상시키는 것이 가능하게 된다.
반복 페이지 직전까지의 페이지 및 반복 페이지(들)를 이용함으로써, 모든 레이아웃 완료 서브템플릿을 레이아웃할 수 있는 경우(S2220에서 "YES"), 도 22의 플로우차트에서의 처리는 종료된다. 그러나, 풋터 페이지가 지정되어 있고, 풋터 페이지에 출력하여야 할 콘텐츠 데이터가 있는 경우에는, 풋터 페이지를 추가한 뒤에 처리를 종료한다.
본 실시예에서는, 복수 페이지에 걸쳐 하나의 연속한 플로우 영역을 정의하는 것의 효과에 주목하여 기술하고 있고, 특히 복수의 플로우 영역을 하나의 문서 중에 레이아웃하는 것에 대해서는 언급하고 있지 않다. 물론, 복수의 플로우 영역을 각각 복수 페이지에 걸쳐 레이아웃하는 것도 가능하다.
본 발명에 따르면, 데이터베이스로부터 추출한 레코드 데이터의 내용(값)에 따라서 다른 서브템플릿을 선택하여, 선택된 서브템플릿에 대하여 레코드를 삽입한다. 그리고, 그 삽입 처리를 레코드마다 반복함으로써, 여러 종류의 서브템플릿과 레코드가 연결된 부분 레이아웃이 얻어진다. 그 레이아웃 완료 서브템플릿을, 플로우 영역에 순서대로 유입시킴으로써, 종래의 유입 방법에 의해서는 실현되지 않는 복잡한 레이아웃 절환을 반복하는 플로우 레이아웃을 실현할 수 있다.
또한, 다수의 레코드를 유입한 결과로서 서브템플릿이 하나의 플로우 영역에서 초과되는 경우, 자동적으로 레이아웃 영역(플로우 영역)을 포함하는 페이지를 추가 생성하여, 자유도가 높은 페이지 수를 갖는 문서를 작성하는 것이 가능하게 된다. 이것은 카탈로그 등 그 항목 수가 미리 정해져 있지 않고, 서로 어느 정도 유사하지만 상세한 레이아웃 구조가 다른 부분 레이아웃을 나열하여 표현되는 문서를 작성할 때에 매우 효과적이다.
[제3 실시예]
본 발명의 제3 실시예에서는, 제1 실시예 및 제2 실시예를 발전시킨 것이다. 아래에서는, 단순히 플로우 영역을 복수 페이지에 확장하는 것뿐만 아니라, 서브템플릿 사이나 플로우 영역과 컨테이너 사이를 구획할 수 있는 레이아웃 편집 애플리케이션 프로그램을 설명한다. 본 실시예에서는, 제2 실시예를 모델로 하되, 제2 실시예 및 제1 실시예와 공통되는 부분에 대해서는 설명을 생략하고, 다른 부분에 대해서만 설명한다.
<서브템플릿 조건식>
서브템플릿 조건식은, 하나의 플로우 영역에 대하여 복수의 서브템플릿을 할당하기 위한 수단이다. 플로우 영역에는 서브템플릿 및 조건식 중 어느 하나를 연결시킬 수 있다. 도 26은 조건식을 설정하는 UI 예의 도면이다. 이것은 제1 실시예와 마찬가지이다. 단, 본 실시예에서는 서브템플릿과 동일한 조건으로 단락 정보를 포함시켜서 서브템플릿 정보로서 저장되는 조건식을 입력할 수 있다.
도 26은 데이터베이스로부터 하나의 레코드를 수신하여 처리를 수행하기 위한 조건식을 설정하기 위한 UI 예이다. 이 입력 영역은 적어도 조건식에 이름을 붙이는 텍스트 박스(2602)와, 가장 기본적인 조건 판정을 구성하는 요소인 IF 문(2603)과 ELSE 문(2604)의 쌍을 갖고 있다.
IF 문의 입력 영역에는 조건의 판정 대상으로 되는 필드의 선택을 행하는 리스트 박스(2605)와, 판정의 논리식을 설정하는 리스트 박스(2606), 판정에 이용되는 값을 입력하는 텍스트 박스(2607), 조건 판정이 참인 때의 동작을 결정하는, 즉 해당 레코드를 삽입하기 위한 서브템플릿을 결정하는 THEN_USE 처리문(2608), 서브템플릿이 변경될 때에 뒤따르는 브레이크 처리(문서단락 처리)를 선택하는 WITH 처리문(2609), 동일하게 조건 판정 결과가 거짓인 때의 해당 레코드를 삽입하기 위한 서브템플릿을 결정하는 ELSE_USE 처리문(2604)을 포함한다.
판정의 논리식(2606)에는 "EQUAL", "NOT_EQUAL", "LESS_THAN", "LARGER_THAN", "START_WITH" 및 "END_WITH" 등의 여러가지 조건이 준비된다. 또 한, 논리식(2606)으로 판정되는 판정 값(2607)에 "FieldNN" 등의 필드값을 지정한 경우에는, 2605에 입력된 필드값과 2607에 입력된 필드값을 판정하여, 멀티레코드와 같이 레코드의 카테고리가 변경된 시점에, 신규의 문서를 생성하는 멀티레코드 인쇄가 가능하게 된다.
또한, 판정의 논리식으로서 "change"도 설정 가능하다. 판정의 논리식 "change"는 어떤 필드값의 데이터값이 변경될 때마다 후술하는 브레이크 처리를 설정하는 경우에 유효하다. 판정식 "change"를 설정하는 것에 따른 유효성에 대하여 일례를 들어 구체적으로 설명한다.
예를 들어, 방대한 양의 레코드 정보를 이용하여, 문서 브레이크를 수반하는 레이아웃 처리를 실행하는 것으로 가정한다. 이 때, 사용자가 설정하는 조건식의 예로서는 "IF field01 EQUAL value01 with DocumentBreak", "IF field01 EQUAL value02 WITH DocumentBreak" 및 "IF field01 EQUAL value03 WITH DocumentBreak"라는 설정 처리를 "fieIdO1"에 상정되는 데이터 수만큼 반복할 필요가 있다. 즉, 상정되는 데이터 수가 많을수록, 조건식이 증가하여 처리가 복잡하게 된다. 이러한 경우, 전술한 "change"를 이용함으로써 조건식은 1개로 충분하게 된다. 즉, "IF field01 change value with DocumentBreak"라고 설정함으로써 필드값1의 데이터가 변경되는 때마다 문서 브레이크가 실행된다. 따라서, 상정되는 데이터 수에 대응하는 조건식을 설정할 필요가 없어짐으로써, 사용자의 조작성을 향상시킬 수 있다.
또한, WITH 처리문에는 4종류의 브레이크 처리가 마련되는데: 즉, 지금까지 의 레코드 레이아웃 처리를 중단하고, 풋터 페이지를 인쇄한 후, 새롭게 헤더 페이지로부터 새로운 레코드를 인쇄하는 DocBreak(문서 브레이크)와, 지금까지의 레코드 플로우를 중단하고, 새로운 페이지를 생성한 후, 새로운 레코드 플로우를 시작하는 PageBreak(페이지 브레이크)와, 다음 플로우 영역에서 새롭게 레코드 플로우를 개시하는 LineBreak(라인 브레이크)와, 브레이크 처리하지 않고, 플로우를 계속하는 NoneBreak(계속)의 4 종류의 브레이크 처리가 준비된다.
복잡한 조건식을 설정하기 위해, IF 문 중에 복합 조건을 설정하기 위한 AND/OR 접속문 콤보박스(2610)를 갖는다. 이 콤보박스에서 AND 또는 OR의 복합 조건을 선택하면, IF 문 중에 1행의 조건 행이 추가된다. AND인 경우 복수의 조건이 전부 참일 때만, OR인 경우 어느 하나의 조건이 참일 때에 IF 문 판정이 참이라고 판정된다.
보다 복잡한 조건 분기를 설정하기 위해, ELSE_IF 문 추가 버튼(2611)을 갖는다. 이 버튼(2611)을 누르면 전술한 IF 문과 ELSE 문의 사이에, ELSE_IF 문이 추가 삽입된다. ELSE_IF 문의 내용과 동작은, IF 문에 있어서의 내용과 동일하다. IF 문이 거짓일 때에 하나 아래의 ELSE_IF 문을 판정한다. 거짓일 때에 또 하나 아래의 ELSE_IF 문을 판정한다. 이러한 동작을 계속하여 마지막으로 ELSE 문을 판정한다. 여기서, 2612는 선택되어 있는 ELSE_IF 문을 삭제하는 삭제 버튼이다. ELSE_IF 문이 많아진 경우, 스크롤바(2613)를 사용하여 조건의 리스트를 표시하는 것이 가능하다.
어느 하나의 IF 문 또는 ELSE_IF 문에서 참이라고 판정된 경우, 해당 USE 처리문 및 WITH 처리문이 실행된다. 이와 같이, 조건식을 통해서, 여러가지의 값을 취하는 레코드의 각각에, 조건에 맞는 서브템플릿을 자동적으로 선택할 수가 있고, 선택된 서브템플릿에 뒤따르는 브레이크 처리를 병용함으로써, 하나의 조건식에 있어서 여러가지의 레이아웃을 실현하는 것이 가능하게 된다.
이 조건식을 플로우 영역에 연결하는 것에 의해, 하나의 플로우 영역에서, 여러가지의 레이아웃을 갖는 복수 종류의 서브템플릿을 영역내에 유입시키는 것이 가능하게 된다.
사용자는 도 26의 UI에서 조건을 입력하면, 마지막으로 OK 버튼(2615)를 누른다. OK 버튼(2615)이 눌러지면, UI에서 설정된 서브템플릿 조건을 나타내는 정보(서브템플릿 조건식)가, 서브템플릿 정보(2403)의 일부로서 메모리부(136)에 저장된다. 이 서브템플릿 조건식은, 예를 들어 도 26의 UI에 기술된(선택된) 텍스트를 그대로 저장한 텍스트 파일 등, 조건과 조건이 만족된 경우의 서브템플릿을 특정할 수 있는 정보이면 충분하다. 도 26의 예에서는, 서브템플릿 조건식을 나타내는 정보로서 "IF field01 EQUAL value01 AND field02 EQUAL value02 THEN USE subtemplate01 WITH PageBreak ELSE IF field01 EQUAL value03 AND field02 EQUAL value04 THEN USE subtemplate02 WITH PageBreak ELSE USE subtemplate03 WITH PageBreak"이 저장된다. 이대로 저장해도, 간단한 문법으로 기술되어 있고, 도 26과 같은 UI로부터 입력되기 때문에 문법적인 오류 등이 발생하는 여지가 없다. 따라서, 간단한 프로그램으로 그 조건의 기술을 파싱하여 적합한 서브템플릿을 결정할 수 있다.
<레이아웃 처리>
도 27a는 플로우 영역에 대하여 조건식(추출 조건 및 브레이크 처리)이 설정되어 있는 템플릿에서, 조건 판정을 행하여, 조건식에 따른 레이아웃 처리를 실행하기 위한 플로우차트이다. 도 27a에 도시된 처리는 제1 실시예의 도 7a의 S703, S704나, 도 10의 S1009, S1010를 포함한다.
아래에서는, 템플릿이 헤더 페이지, 플로우 영역을 포함하는 반복 페이지, 풋터 페이지로 구성된 예를 설명한다. 도 27a를 참조하면, 우선 레이아웃 편집 애플리케이션(121)은 레이아웃하는 데이터를 데이터베이스로부터 취득하고(S2701), 최종 레코드가 처리 완료되었는지의 여부를 판정한다(S2702). 레이아웃 편집 애플리케이션(121)은 현재 어떤 레코드를 처리중인지에 대한 정보를 일시적으로 유지하면서 처리를 수행하기 때문에, S2702의 판정이 가능하게 된다. 레이아웃 편집 애플리케이션(121)은 S2702에 의해 레코드의 종료를 판정한 경우, S2713으로 진행하여 풋터 페이지의 레이아웃 처리를 실행하여, 도 27a의 플로우차트의 처리를 종료한다. 또한, S2701에 의해 취득한 레이아웃할 레코드의 수가 0인 경우에는, 레이아웃 처리를 실행할 수 없다. 따라서, 레이아웃 편집 애플리케이션(121)은 S2713에 의한 풋터 페이지의 레이아웃 처리를 실행하지 않고 도 27a의 플로우차트의 처리를 종료한다.
다음으로, 레이아웃 편집 애플리케이션(121)은 현재 처리중인 레코드가 최초의 레코드인지의 여부를 판정한다(S2703). 최초의 레코드이면, 레이아웃 편집 애플리케이션(121)은 헤더 페이지의 레이아웃 처리를 실행한다(S2704). 보다 구체적 으로, 이 레이아웃 처리는 취득한 레코드내의 미리 정해진 콘텐츠 데이터를 이용하여 헤더 페이지를 작성하는 처리이다. 이 헤더 페이지 레이아웃 처리는, 제1 실시예의 도 7a나 도 14의 플로우차트로 설명한 서브템플릿의 레이아웃의 최적화 처리와 마찬가지 방식으로 수행된다. 이것은, 서브템플릿이 통상의 템플릿과 동일하게 레이아웃 정의되어, 데이터베이스의 콘텐츠를 유입시킬 때의 레이아웃 최적화 처리가 실시되는 것을 의미한다.
다음으로, 레이아웃 편집 애플리케이션(121)은 취득한 레코드의 콘텐츠 데이터와 플로우 영역에 설정되어 있는 조건식으로부터, 취득된 레코드의 콘텐츠 데이터를 레이아웃할 수 있는지의 여부를 판정한다. 레이아웃할 레코드의 콘텐츠 데이터인 것으로 판정된 경우, 해당 조건식에 기초하여 서브템플릿 및 브레이크 처리를 특정한다(S2705). 보다 구체적으로는, 레이아웃 편집 애플리케이션(121)이 플로우 영역 정보로서 메모리부(136)에 저장되어 있는 서브템플릿 조건식을 판독하여, 그 조건식과 취득한 레코드에 포함되는 콘텐츠 데이터를 인식함으로써 조건에 적합한 서브템플릿명 및 브레이크(단락) 처리의 내용을 특정할 수 있다.
다음으로, 레이아웃 편집 애플리케이션(121)은 특정한 정보에 기초하여, 브레이크 처리가 정의되어 있는지의 여부와 브레이크 처리가 발생하는지의 여부를 판정한다(S2706). 브레이크 처리가 정의되어 있는지 여부의 판정은, 레이아웃 편집 애플리케이션(121)이 S2705에 의해 브레이크 처리를 특정하고 있기 때문에, 브레이크 처리가 설정되어 있는가를 판정하는 것이 가능하다.
브레이크 처리가 발생하는지 여부에 대해서는, 현재 처리중인 레코드의 바로 앞 레코드의 콘텐츠 데이터를 일시적으로 저장해 두고, 이것을 현재의 처리중인 레코드의 콘텐츠 데이터와 비교함으로써 판정을 행한다. 보다 구체적으로는, 브레이크 처리를 실행하기 위해 지정되어 있는 필드값(데이터 항목)의 값이 변경되어 있다면 브레이크가 발생한 것으로 판정한다.
S2706의 판정 결과, "브레이크 설정이 없음" 또는 "브레이크 발생 없음" 중의 어느 하나를 판정한 경우, 현재 처리중인 레코드의 콘텐츠 데이터를 서브템플릿에 레이아웃하여, 전술한 바와 같이 서브템플릿내에서 레이아웃 조정을 행하고, 플로우 영역에 서브템플릿을 레이아웃한다(S2714). 즉, 플로우 영역 정보에 있어서 지정되어 있는 간격을 비워두고, 레이아웃 완료 서브템플릿을 플로우 영역에 레이아웃한다.
레이아웃 편집 애플리케이션(121)이 S2706에 의해 브레이크 설정이 되어 있고 또한 브레이크 처리가 발생하는 것으로 판정한 경우, 레이아웃 편집 애플리케이션(121)은 DocBreak(문서 브레이크)가 지정되어 있는지의 여부를 판정한다(S2707). 또한, S2707의 판정 처리는, S2705에 의해 브레이크 처리를 특정함으로써, 어떤 브레이크 처리가 설정되어 있는가를 판정하는 것이 가능하다. 즉, 레이아웃 편집 애플리케이션(121)이 플로우 영역 정보를 판독하는 것에 의해 브레이크 처리가 특정되게 된다.
S2707에 의해, DocBreak(문서 브레이크)가 지정되어 있다고 판정된 경우, 지금까지의 출력 결과를 일시적으로 중지하기 위해, 레이아웃 편집 애플리케이션(121)은 플로우 영역에 대한 레코드의 유입을 중단하고, 풋터 페이지를 신규로 생성한 다음 레이아웃 처리를 수행한다(S2708). 이 때, 동일한 처리를 반복하지 않도록, 사전에 브레이크 설정을 클리어해 놓아야 한다. 그러나, 플로우 영역 정보의 서브템플릿 조건식에 포함되는 브레이크 설정을 클리어하면, 설정 자체가 변경되게 된다. 이 때문에, 예를 들어 주목 레코드에 관한 문서 브레이크를 삽입하기 위한 브레이크 처리를 완료하였다는 취지의 브레이크 완료 플래그를 설치하여 이것을 세트한다. 이 브레이크 완료 플래그를 세트함으로써, S2705, S2706의 처리를 반복할 필요가 없게 된다.
따라서, 레이아웃 편집 애플리케이션(121)은 S2706에 있어서 이 브레이크 완료 플래그가 세트되어 있는지의 여부를 판정한다. 브레이크의 설정이 있더라도, 레이아웃 편집 애플리케이션(121)은 브레이크 완료 플래그가 세트되어 있다면 "NO"라고 판정한다. 그리고, 레이아웃 편집 애플리케이션(121)은 S2714로 처리를 진행시켜, 현재 처리중인 레코드를 서브템플릿에 레이아웃하여, 대상 페이지의 플로우 영역에 레이아웃하게 된다. 이 브레이크 완료 플래그는 주목 레코드의 레이아웃이 완료되면 리세트된다.
또한, S2708에 있어서의 풋터 페이지 레이아웃 처리는 헤더 페이지 레이아웃 처리와 마찬가지로, 제1 실시예의 도 7a, 도 14의 플로우차트로 설명한 서브템플릿의 레이아웃의 최적화 처리와 마찬가지로 실현된다.
그 후, 레이아웃 편집 애플리케이션(121)은 다시 헤더 페이지 레이아웃 처리(S2704)에 되돌아가, 새롭게 문서를 작성하는 처리로부터 반복한다. 또한, S2708에 의해 풋터 페이지 레이아웃 처리가 종료된 후에, S2704에 되돌아간 경우, 사전 에 브레이크 설정이 클리어(즉, 브레이크 완료 플래그가 세트)되어 있다. 따라서, 브레이크 정의가 존재하지 않는 것으로 판정된다(S2706). 따라서, 통상의 레이아웃을 실행하고, 레코드에 저장된 콘텐츠를 페이지상에 레이아웃한다(S2711). 이 결과, 레코드 처리의 도중에 문서 브레이크가 발생하여, 멀티레코드 인쇄가 실현된다.
전술한 문서 브레이크 설정에 의해, 레이아웃 대상 콘텐츠 데이터를 레이아웃할 때에, 문서 브레이크를 삽입하는 것이 가능하게 된다. 이 때문에, 데이터 속성이 변경될 때마다 새로운 문서가 생성되게 된다.
다음으로, S2707에서 문서 브레이크의 설정이 되어 있지 않은 것으로 판정된 경우, 레이아웃 편집 애플리케이션(121)은 PageBreak(페이지 브레이크)가 설정되어 있는 지의 여부를 판정한다(S2709). S2709의 판정 처리는 S2707과 마찬가지이다. 따라서, 이 처리의 상세에 대한 설명은 생략한다.
PageBreak(페이지 브레이크)가 설정되어 있는 것으로 판정된 경우에는, 레이아웃 편집 애플리케이션(121)은 지금까지의 플로우를 중단하고, 새롭게 페이지를 작성한다(S2710). 페이지 브레이크를 삽입함으로써 플로우 영역을 포함한 신규 페이지를 작성한 후, 레이아웃 편집 애플리케이션(121)은 신규 페이지의 플로우 영역에 대하여 현재 처리중인 레코드의 콘텐츠 데이터의 사이즈를 취득하여, 통상의 레이아웃을 실행하고, 레코드에 저장된 콘텐츠를 페이지상에 레이아웃함으로써(S2714), 레이아웃 완료한 서브템플릿의 플로우가 플로우 영역내에서 신규의 플로우로서 재개된다.
그러므로, 데이터 속성이 변경될 때마다 새로운 페이지가 생성된다. 이와 같은 방식으로 페이지가 생성되면, 예를 들어 어떤 사용자에게 복수의 상품을 제안할 때의 맞춤화된 카탈로그에서, 동일한 상품군을 하나의 페이지에 구성하는 것이 가능하게 된다. 또한, PageBreak에 대해서도, 브레이크 완료 플래그를 DocBreak와 동일한 방식으로 이용한다. 브레이크 완료 플래그에는, DocBreak 또는 PageBreak와의 관련성을 나타내는 브레이크 속성 정보를 갖게 하는 것이 가능하다.
S2709에서 PageBreak 설정이 되어 있지 않은 것으로 판정된 경우, 레이아웃 편집 애플리케이션(121)은 LineBreak(라인 브레이크)가 설정되어 있는지의 여부를 판정한다(S2711). S2711의 판정 처리는, S2707의 판정 처리와 마찬가지이다. 따라서, 이 처리에 대한 상세에 대해서는 설명을 생략한다.
LineBreak(라인 브레이크)가 설정되어 있는 것으로 판정된 경우, 레이아웃 편집 애플리케이션(121)은 레이아웃 개시 포인트를 현재의 플로우 영역으로부터 다음 행에 대응하는 플로우 영역의 좌단으로 이동시킨다(S2712). 보다 구체적으로는, 레이아웃 편집 애플리케이션을 구성하는 모듈의 하나인 레이아웃 엔진이 콘텐츠 데이터의 레이아웃 위치를 인식하는 것이 가능하다. 따라서, 레이아웃 엔진이 바로 앞의 레코드를 레이아웃한 서브템플릿의 위치를 인식하여, 이것을 일시적으로 메모리부에 저장해 놓고, 거기에서 서브템플릿의 높이에 상당하는 거리만큼 라인 브레이크를 삽입하여, 레이아웃 개시 포인트를 그 좌단으로 이동시킴으로써 S2712의 처리가 실현된다.
그 후, 통상의 레이아웃을 실행하고, 레코드에 저장된 콘텐츠를 페이지상의 플로우 영역에 레이아웃한다(S2714). 레이아웃 편집 애플리케이션(121)은 S2714의 처리가 종료한 경우, 처리 대상 레코드를 다음으로 진행시키는 처리를 한 다음, 다시 S2701로 되돌아가, 다음 레코드를 취득하는 처리에 들어간다.
그러므로, 플로우 영역의 플로우 도중에 라인 브레이크가 발생하게 되며, 이 경우의 라인 브레이크는 서브템플릿에 레이아웃된 레코드의 높이에 상당하는 거리만큼 이동하는 것이다. 또한, LineBreak에 대해서도, 브레이크 완료 플래그를 DocBreak와 동일한 방식으로 이용한다.
전술한 라인 브레이크 설정에 의해, 데이터 속성이 다른 콘텐츠 데이터를 레이아웃할 때에, 라인 브레이크를 삽입하는 것이 가능하게 된다. 따라서, 동일한 데이터 속성을 갖는 서브템플릿을 동일한 행에 레이아웃하는 것이 가능하게 된다.
전술한 바와 같이, 헤더 페이지, 플로우 영역, 풋터 페이지로 구성되는 문서의 구성을, 조건식에 정의된 각종의 브레이크 처리에 의해, 자유롭게 변경할 수 있게 된다. 플로우 영역에 설정된 브레이크 처리에 따라서, 문서 브레이크이면 신규 문서를 작성함으로써 문서를 구획하여 콘텐츠 데이터를 레이아웃함으로써, 페이지 브레이크이면 신규 페이지를 작성함으로써 문서를 구획하고 콘텐츠 데이터를 레이아웃함으로써, 멀티레코드 인쇄 시에 있어서의 다채로운 출력 결과를 얻을 수 있다.
도 27b는 도 27a 중의 서브템플릿을 결정하는 처리 S2705의 상세 내용을 기술한 플로우차트이다. 레이아웃 편집 애플리케이션(121)은 조건식의 최초의 IF 문을 추출하여(S2721), S2701에서 수신한 레코드로부터 IF 문의 판정 대상으로 하고 있는 필드의 값을 추출한다(S2722). 또한, 전술한 바와 같이, 조건식은 플로우 영 역 정보로서 메모리부에 저장되어 있기 때문에, 편집 애플리케이션(121)이 메모리부를 참조함으로써 S2721 및 S2722의 처리를 수행할 수 있게 된다.
계속해서, 레이아웃 편집 애플리케이션(121)은 현재 처리중인 레코드의 필드의 값이 S2721에 의해 추출된 조건식에 합치하는지의 여부를 판정한다(S2723). 보다 구체적으로는, 레이아웃 편집 애플리케이션이 현재 처리중인 레코드의 콘텐츠 데이터를 메모리부(136)에 일시적으로 저장해 두고, 이것을 플로우 영역 정보로서 유지되어 있는 조건식과 비교함으로써 S2723의 처리가 실현된다.
레이아웃 편집 애플리케이션은, S2121에 의해 추출된 조건식과 판정 대상으로 하고 있는 필드값이 합치하는 것으로 판정한 경우, 그 조건문의 USE 처리를 선택하고, 서브템플릿을 결정한다(S2725). 또한, 사용할 서브템플릿이 결정된 경우, 레이아웃 편집 애플리케이션은 현재 처리중인 레코드와 사용할 서브템플릿을 연결시켜 메모리부(136)에 저장한다.
S2121에 의해 추출된 조건식과 판정 대상으로 하고 있는 필드값이 합치하지 않는 것으로 판정된 경우, 레이아웃 편집 애플리케이션(121)은 다른 조건식이 있는지의 여부를 판정한다(S2724). 또한, S2724의 판정 처리는 S2723의 처리와 마찬가지이다. S2724에서 레이아웃 편집 애플리케이션이 다른 조건식이 있다고 판정하면, 마찬가지로 다른 조건식을 이용하여 S2723의 판정을 실행한다.
레이아웃 편집 애플리케이션(121)은, 현재 처리중인 레코드의 콘텐츠 데이터가 어떤 조건식에도 합치하지 않는 것으로 판정한 경우, ELSE 문의 USE 처리를 선택하여 서브템플릿을 결정한다(S2726). 경우에 따라서는, 사용자가 ELSE 문을 설정하지 않을 수도 있다. 만약 ELSE 문의 조건식이 없다면 S2726의 처리는 생략된다.
마지막으로, 레이아웃 편집 애플리케이션(121)은 WITH 문으로 정의되어 있는 브레이크 처리를 취득하고, 이것을 메모리부(136)에 저장한다(S2727).
<서브템플릿>
다음으로, 도 27a의 S2714에 있어서의 서브템플릿의 레이아웃 처리로서 수행되는 레이아웃 처리 플로우를 도 28을 참조하여 설명한다.
우선, 레이아웃 편집 애플리케이션(121)은 각 컨테이너에 레이아웃하기 위한 데이터의 사이즈를 취득하고(S2801), S2801에 의해 취득한 데이터 사이즈에 기초하여, 각 컨테이너에 있어서의 레이아웃을 계산한 다음(S2802), 레이아웃을 최적화한다(S2803). 본 실시예에서의 레이아웃의 계산 처리 및 레이아웃 최적화의 방법은 제1 실시예에서와 마찬가지이다.
레이아웃 편집 애플리케이션(121)은 상기 처리에 의해 최적화된 레이아웃을 결정하여(S2804), 레이아웃할 데이터를 유입시킨다(S2805). 이 처리도 제1 실시예에서와 마찬가지이다.
다음으로, 플로우 영역에 서브템플릿을 레이아웃하기 위해, 레이아웃 편집 애플리케이션(121)은 플로우 영역의 사이즈를 취득하여(S2806), 레이아웃하는 서브템플릿의 사이즈를 취득한다(S2807). 전술한 바와 같이, 플로우 영역의 사이즈 및 서브템플릿의 사이즈는 메모리부(136)에 저장되어 있기 때문에 취득가능하다. 또한, 본 실시예에서는, 서브템플릿의 외측 프레임의 사이즈는 전술한 바와 같이 서 브템플릿내의 컨테이너의 내용에 의해 달라질 수도 있고, 유입되는 레코드와는 독립적일 수도 있다.
레이아웃 편집 애플리케이션(121)은 플로우 영역내에 설정되어 있고 플로우 간격과 방향을 적용하면서 서브템플릿을 레이아웃하며(S2808), 레이아웃 결과를 표시하고 본 처리를 종료한다(S2809). 최후의 표시 처리는, 도 28의 처리를 호출하는 프로그램에 의해 수행될 수 있으므로, 이 최종 단계는 생략할 수도 있다.
S2801 내지 S2805는 도 14의 S1402 내지 S1406과 마찬가지이고, S2806 내지 S2809는 도 17의 S1713 내지 S1716과 마찬가지이다.
(플로우 영역의 브레이크 예)
도 27의 처리를 도 29 및 도 35를 이용하여 구체적으로 설명한다. 도 29는 DocBreak(문서 브레이크) 처리에 의해 복수의 문서가 생성된 예를 나타내고 있다.
도 29의 플로우 영역(2901)은 서브템플릿을 유입시키기 위해서 설정된 플로우 영역이다. 이 플로우 영역에는 서브템플릿 2902, 2903, 2904 중 어느 하나를 이용하기 위한 조건식이 설정되어 있다. 이 조건식에는, 레코드의 수신처 필드(데이터 A)가 "1"이면, THEN_USE "서브템플릿 2902" WITH "DocBreak"을 실행하도록 설정되어 있다. 또한, 레코드의 수신처 필드(데이터 A)가 "2"이면, THEN_USE "서브템플릿 2903" WITH "DocBreak"를 실행하도록 설정되어 있다. 레코드의 수신처 필드가 "3"이면, THEN_USE "서브템플릿 2904" WITH "DocBreak"을 실행하도록 설정되어 있다.
즉, 데이터 A의 항목이 변경되는 것에 따라서 문서 브레이크가 실행되게 된 다.
여기서, 도 27a와 도 29를 이용하여 처리의 흐름을 구체적으로 설명한다. 레이아웃 편집 애플리케이션(121)은 데이터 2900에 있는 "레코드 1"를 취득한다. 여기서, 레코드 1은 최초의 레코드이기 때문에, 연결 정보에 따라서 레코드 1에 포함되는 데이터 A의 "1"가 헤더 페이지의 컨테이너에 레이아웃되게 된다. 여기까지의 처리가 도 27의 S2701 내지 S2704에 해당한다.
레이아웃 편집 애플리케이션(121)은 레코드 1의 "데이터 A=1"인 것을 인식하고, 메모리부(136)의 조건식을 참조하여 "레코드의 수신처 필드(데이터 A)가 "1"이면, THEN_USE "서브템플릿 1" WITH "DocBreak"를 인식한다. 따라서, 레코드 1에 관해서는 서브템플릿 1을 사용하는 것이 특정됨과 함께, 문서 브레이크가 설정되어 있는 것도 인식한다.
그러나, 레코드 1의 처리에 있어서는 선행하는 레코드와의 비교에 의해 미리 정해진 필드값을 변경함으로써 발생하는 브레이크 처리는 발생하지 않는다. 이 때문에, 레코드 1의 콘텐츠 데이터를 서브 템플릿에 유입시키는 S2714의 처리로 진행하는 것이 된다. 이 처리가 도 27a의 S2706에 해당한다. 또한, 레코드 1의 콘텐츠 데이터는 전술한 바와 같이 일시적으로 메모리부(136)에 유지되게 된다.
S2714 다음에, 레이아웃 편집 애플리케이션(121)은 S2701로 되돌아가, 다음 레코드 2를 대상 레코드로서 처리를 진행시킨다. 레코드 2의 경우는 최종 레코드가 처리되는 경우와도 다르고 최초의 레코드를 처리하는 경우와도 다르기 때문에, S2705로 진행한다. 레이아웃 편집 애플리케이션은 레코드 2의 콘텐츠 데이터가 " 데이터 A=2"이고, 조건식 "레코드의 수신처 필드(데이터 A)"가 "2"이면, THEN_USE "서브템플릿 2" WITH "DocBreak"에 따라, 레코드 2로 사용되는 서브템플릿은 서브템플릿 2인 것으로 특정하며, 문서 브레이크가 설정되어 있다는 것도 인식한다.
또한, 레이아웃 편집 애플리케이션(121)은 일시적으로 유지되고 있는 레코드 1의 콘텐츠 데이터와 레코드 2의 콘텐츠 데이터를 비교하여, 레코드 1에서는 "데이터 A = 1"이었으나, 레코드 2에서는 "데이터 A = 2"로 변경된다는 것을 인식할 수 있다. 따라서, 레코드 2가 유입될 때 브레이크 처리가 발생하게 된다.
이상으로부터, 레이아웃 편집 애플리케이션은 S2706의 처리에서 "브레이크 처리 설정이 존재하고", "브레이크 처리가 발생함"을 인식하므로, S2707로 처리를 진행시킨다. 여기서, 레코드 2에 해당하는 조건식에는 "문서 브레이크"가 설정되어 있기 때문에, 레이아웃 편집 애플리케이션은 레코드 1용의 풋터 페이지(2907)를 작성한다. 또한, 여기서 사용된 콘텐츠 데이터는 레코드 1에 포함되어 있는 것이다. 또한, 레이아웃 편집 애플리케이션(121)은 상술된 브레이크 완료 플래그를 설정한다.
여기까지의 처리에 의해, 도 29에 도시된 문서(a)의 구성요소(2905, 2906, 2907)가 생성된다. 그 후, 레이아웃 편집 애플리케이션(121)은 단계 S2704로 처리를 진행시켜, 레코드 2용의 헤더 페이지(2908)를 작성한다. 또한, 전술한 브레이크 완료 플래그가 설정되어 있기 때문에, 단계 S2705의 처리는 생략되고, 단계 S2706의 판정 결과는 "NO"이다. 결과적으로, 레코드 2의 콘텐츠 데이터는 서브템플릿 2에 레이아웃되며, 신규 문서인 문서(b)의 페이지 2909의 플로우 영역에 레이 아웃된다.
다음으로, 레코드3 및 레코드4에 대해서도 마찬가지의 처리를 수행한다. 레코드 3 및 4에서는 "데이터 A = 2"이며, 이는 레코드 2의 데이터 A와 동일한 것이다. 그러므로, 브레이크 처리는 발생하지 않는다. 따라서, 레이아웃 편집 애플리케이션(121)은 단계 S2714로 처리를 진행시켜 레코드 3 및 4의 콘텐츠 데이터를 문서(b)의 플로우 영역에 레이아웃한다. 통상적으로는, 레코드 4의 콘텐츠 데이터도 문서(b)의 페이지 2909의 플로우 영역에 레이아웃되어야 한다. 그러나, 유입되는 콘텐츠 데이터 량이 너무 많아, 그 데이터를 하나의 플로우 영역에 설정할 수 없다. 이러한 이유로, 페이지 2910이 페이지 반복 기능에 의해 새롭게 생성된다.
이와 같이, 서브템플릿의 변경에 따라서 문서를 변경할 수 있다.
계속해서, 도 27a, 도 27b 및 도 35를 참조하여, PageBreak(페이지 브레이크)의 구체예를 설명할 것이다. 예를 들어, 데이터(3500)에 포함되는 레코드가 유입되는 경우를 가정한다.
도 35에서, 플로우 영역(3501)은 서브템플릿을 유입시키기 위해서 설정된 것이다. 플로우 영역에 대해서는, 서브템플릿(3502, 3503, 3504) 중 어느 하나를 이용하기 위한 조건식이 설정되어 있다. 조건식의 제1 요소는, 데이터 A가 변화하면, "DocBreak"와 함께 실행하라는 설정이다. 즉, 데이터 A의 변화에 따라서 문서 브레이크가 실행된다. 그리고 조건식의 제2 요소는, 데이터 B가 "X"이면, "서브템플릿(3502)"를 "PageBreak"와 함께 사용하라는 것을 실행하는 설정이다. 또한, 데이터 B가 "Y"이면, "서브템플릿(3503)"을 "PageBreak"와 함께 사용하라는 설정이 이루어진다. 데이터 B가 "Z"이면, "서브템플릿(3504)"을 "PageBreak"와 함께 사용하라는 설정을 실행하도록 이루어져 있다. 즉, 데이터 B의 데이터값이 변경하는 것에 따라서, 페이지 브레이크가 실행된다.
도 27a와 도 35를 참조하여 처리의 흐름을 구체적으로 설명한다. 레이아웃 편집 애플리케이션(121)은 데이터(3500)에 있는 "레코드 1"을 취득한다. 여기서, 레코드 1은 최초의 레코드이므로, 연결 정보에 따라서 레코드 1에 포함되는 데이터 A의 "1"이 헤더 페이지의 컨테이너에 레이아웃된다.
레이아웃 편집 애플리케이션(121)은 레코드 1의 "데이터 A = 1" 및 "데이터 B = X"인 것을 인식하고, 메모리 유닛(136)의 조건식을 참조하여, (데이터 B가 "X"이면, "서브템플릿(3502)을 "PageBreak"와 함께 사용함을) 인식한다. 이와 같이, 레코드 1에 관해서는 서브템플릿(3502)의 사용이 판정되며, 페이지 브레이크 설정도 인식된다. 그러나, 처리 레코드 1에서는 브레이크 처리가 발생하지 않는다. 그러므로, 레코드 1의 콘텐츠 데이터를 서브템플릿(3502)으로 유입시키는 단계 S2714의 처리로 진행한다. 또한, 레코드 1의 콘텐츠 데이터는 전술한 바와 같이 일시적으로 메모리부(136)에 유지된다.
계속해서 레이아웃 편집 애플리케이션(121)은 단계 S2714 후에 단계 S2701로 되돌아가, 다음 레코드 2를 처리대상 레코드로 하여 처리를 진행시킨다. 레코드 2를 처리하는 경우는 최종 레코드가 종료된 경우 및 제1 레코드를 처리하는 경우와도 다르기 때문에, S2705로 진행한다. 이어서, 레이아웃 편집 애플리케이션(121)은, 레코드 2의 "데이터 B = Y"이고, (데이터 B가 "Y"이면, "서브템플릿(3503)"을 "PageBreak"와 함께 사용하여), 레코드 2에 사용될 서브템플릿이 서브템플릿(3503)임을 판정하고, 페이지 브레이크 설정이 존재한다는 것도 인식한다.
또한, 레이아웃 편집 애플리케이션(121)은 일시적으로 유지되어 있는 레코드 1의 콘텐츠 데이터와 레코드 2의 콘텐츠 데이터를 비교한다. 레코드 1은 "데이터 A = 1"이며, 레코드 2도 "데이터 A = 1"이다. 따라서, 어떠한 문서 브레이크도 발생하지 않는다. 그러나, 레코드 1은 "데이터 B = X"이고, 레코드 2는 "데이터 B = Y"이다. 그러므로, 브레이크 처리(페이지 브레이크 처리)가 발생한다. 즉, 레이아웃 편집 애플리케이션(121)은 단계 S2706에서 "브레이크 설정이 있고", "브레이크 처리가 발생함"을 인식하므로, S2707로 진행하여 레코드 2에 대하여 실행되어야 할 브레이크 처리를 판정한다.
레코드 2에 적용되는 조건식은 앞서 언급된 바와 같다(데이터 B가 "Y"이면, "서브템플릿(3503)"을 "PageBreak"와 함께 사용한다). 그러므로, 페이지 브레이크의 실행을 판정할 수 있다. 따라서 레이아웃 편집 애플리케이션(121)은 단계 S2709에 의해 "Yes"라고 판정하여, 신규 페이지(3507)를 생성한다.
레이아웃 편집 애플리케이션(121)은 레코드 2의 콘텐츠 데이터를 서브템플릿(3503)에 레이아웃하여, 단계 S2710에서 새롭게 생성된 페이지(3507)에 레이아웃한다.
레코드 3 및 4에서는 "데이터 A = 1"이며, "데이터 B = Y"이다. 그러므로, 문서 브레이크 및 페이지 브레이크는 실행되지 않는다. 따라서, 레이아웃 편집 애플리케이션(121)은 페이지(3507)의 플로우 영역에 레코드 3 및 4의 콘텐츠 데이터 를 레이아웃한다. 통상적인 경우, 레코드 4의 콘텐츠 데이터는 페이지(3507) 상의 플로우 영역에 레이아웃되어야 한다. 그러나, 유입되는 콘텐츠 데이터 량이 너무 많아, 데이터가 하나의 플로우 영역에 설정될 수 없다. 이러한 이유로, 페이지 반복 기능에 의해 페이지(3508)가 새롭게 생성된다.
또한, 레코드 5에 관해서도 전술한 처리를 실행한다. 레코드 5는 "데이터 A = 1"이며, "데이터 B = 2"인 콘텐츠 데이터를 갖는다. 그러므로, 문서 브레이크는 실행되지 않지만, 페이지 브레이크 처리가 실행된다.
따라서, 레이아웃 편집 애플리케이션(121)은, 서브템플릿(3504)에 레코드 5의 콘텐츠 데이터를 레이아웃하여, 페이지 브레이크 처리에 의해 새롭게 생성된 페이지(3509)의 플로우 영역에 레이아웃함으로써, 레코드 5의 콘텐츠 데이터를 레이아웃한다.
레이아웃 편집 애플리케이션(121)은 레코드 7을 처리대상 레코드로서 취하여 처리를 진행시킨다. 레코드 7은 "데이터 A = 2"인 레코드 1 내지 6의 데이터 A의 데이터 값과는 다른 콘텐츠 데이터를 갖는다. 따라서, 조건식 1인 데이터 A는 "DocBreak"로 변경되어 문서 브레이크를 판정하기 위해 적용된다. 즉, 레이아웃 편집 애플리케이션은, 레코드 7에 있어서 "브레이크 처리 설정이 존재하고", "브레이크 처리가 발생한다"고 인식하므로, 단계 S2707로 처리를 진행시킨다.
또한, 레이아웃 편집 애플리케이션(121)은 설정되어 있는 브레이크 처리가 문서 브레이크이기 때문에, 풋터 페이지(3510)를 생성하여, 전술한 브레이크 완료 플래그를 설정한다.
이에 의해, 레이아웃 편집 애플리케이션은, 레코드 1 내지 6을 이용하여 페이지(3505 내지 3510)로 구성되는 하나의 문서를 생성하고, 레코드 7로부터 신규 문서를 작성하기 위한 처리를 시작한다. 라인 브레이크 설정이 브레이크 처리로서 행해질 경우, 전술한 바와 마찬가지의 처리가 수행된다.
또한, 플로우 영역이 브레이크에 의해 분할된 경우, 분할된 각 플로우 영역에 대해서는 동일한 속성 정보를 갖는 것으로 하여, 레이아웃 등의 처리가 수행된다.
[제4 실시예]
본 발명의 제4 실시예는 템플릿에 정의된 조건식이 덮어쓰기할 수 있는 외부 조건식 파일로서 이용되는 경우의 처리를 설명한다. 템플릿에는, 조건식이 도 30에 도시된 바와 같은 XML 준거의 형식으로 기술되어 있다. 템플릿의 정의 자체는 XML 준거의 태그 형식으로 되어 있다. 템플릿 자체의 포맷은 본 발명과는 관계없기 때문에 설명하지 않는다.
도 30은, 외부 조건식 파일로 형성된 조건식 파일의 포맷을 도시한다. 이 파일의 형식은 도 26에 도시된 조건식 설정 UI의 설정 상세가 저장되는 형식과 동일하다. UI 화면에 표시된 내용이 그대로 태그 형식에 미러링된다. 이 형식의 조건식은 <CONDITIONAL> 태그, <IF> 태그, <ELSEIF> 태그, <ELSE> 태그로 구성된다. <IF> 태그는 판정식을 기술하는 <FIELD> 태그 및 판정 결과를 기술하는 <USE> 태그를 포함한다. <USE> 태그에는, WITH 식별자에 브레이크 종류가 기술된다. <CONDITIONAL> 태그에는 조건식 식별명이 기술된다. <IF> 태그의 <FIELD> 태그에는, 한 세트의 Field명, 판정문, 판정 값이 정의된다. 복수의 판정문이 존재하는 경우에는, AND 식별자 또는 OR 식별자로 연결할 수 있다. <ELSEIF> 태그는 <IF> 태그의 분기 목적지가 된다. 마지막으로, <ELSE> 태그는, 어떤 판정문에도 일치하지 않는 경우의 분기 목적지이다. 단지 <USE> 태그만 <ELSE> 태그에 기술된다.
도 31은, 외부 조건식 파일을 겹쳐쓰는 처리를 도시하는 플로우차트이다. 도 31에 도시된 처리는, 제3 실시예의 도 27a에 도시된 처리의 시작에서 수행된다.
레이아웃 편집 애플리케이션을 구성하는 모듈 중 하나인 레이아웃 엔진(225)은, 입력 파라미터로 지정된 템플릿을 메모리(136)에서 판독한다(S3101). 템플릿은 XML 준거의 파일 포맷으로 표현되기 때문에, 레이아웃 엔진(225)은, 템플릿 파일을 파싱하여 그 템플릿 파일을 XML의 오브젝트 트리에 전개한다(S3102). 다음으로, 레이아웃 편집 애플리케이션(121)은 입력 파라미터에 대한 외부 조건식 파일이 있는지 여부를 판정한다(S3103). 이 판정은, 예를 들어 외부 조건식 파일에 대한 특정한 확장자 또는 명칭을 부여함으로써 실현가능하다. 레이아웃 편집 애플리케이션(121)이 외부 조건식이 있는 것으로 판정하면, 조건식 파일을 메모리(136)에서 판독하고(S3104), 그 조건식을 파싱하여 조건식 오브젝트 트리에 전개한다(S3105). 다음으로, 레이아웃 편집 애플리케이션(121)은 S3101에서 판독된 템플릿에 기술된 조건식 오브젝트 트리를 외부 참조로 판독된 조건식 오브젝트 트리로 겹쳐쓴다(S3106). 그 오브젝트 트리는 XML 준거이기 때문에, 오브젝트 단위의 교체 처리는 공지된 기술로 가능하게 된다. 그 후, 도 27a를 참조하여 기술한 브레이크 처리를 실행하여(S3107), 템플릿에 설정된 조건식을 인쇄 시에 동적으로 변경되도록 하고, 가변 데이터가 유입함에 따라서 서브템플릿 변경 조건이 변경되도록 한다. 그 결과, 확장된 가변 프린트가 실현된다.
조건식 오브젝트 트리의 평가는 트리 구조에 따라서 스택 머신에 의해 연산자를 실행함으로써 실현된다. 상기 절차에서는, 조건식을 파싱하기 전에 XML 형식대로 조건식을 덮어쓰기할 수도 있다.
조건식이 상술된 바와 같이 구성되면, 예를 들어, 문서 편집기 등으로 편집함으로써 설정할 수도 있다.
이상과 같이, 본 발명에 따른 임의의 실시예의 레이아웃 편집 시스템에 따르면, 데이터베이스로부터 추출된 레코드 데이터의 내용(필드값)에 따라서 다른 서브템플릿을 선택하여, 선택된 서브템플릿에 레코드를 삽입한다. 이러한 삽입 처리를 레코드마다 반복하여, 여러 형태의 서브템플릿과 레코드가 연결된 부분 레이아웃을 얻는다. 여러 종류의 부분 레이아웃을 레이아웃 영역에 연속적으로 플로우시킴으로써, 종래의 유입 방식으로는 실현되지 않았던 복잡한 레이아웃 변경을 반복하는 플로우 레이아웃을 실현할 수 있다.
상술된 레이아웃은, 여러 종류의 부분 레이아웃을 제본 시의 장에 비교하여, 페이지 브레이크 처리에 의해 페이지 제어될 수 있다. 이러한 방식으로, 소책자와 같은 문서가 형성될 수 있다. 또한, 헤더 또는 풋터를 구성하는 템플릿으로 문서 브레이크 처리를 수행하는 방법이 고객마다의 문서를 하나의 멀티레코드용 템플릿을 이용하여 동시에 생성될 수 있음을 보장한다.
이는 맞춤화된 카탈로그에서와 같이, 고객마다 어필하는 상품카테고리가 다 른 문서를 한번에 생성하는 주문형 인쇄를 수행하는데 매우 효과적이다.
상술한 자동 레이아웃 시스템(레이아웃 편집 애플리케이션(121))의 기능적 구성은 예를 들어, 도 36에 도시된 바와 같다.
도 36을 참조하면, 레이아웃 편집 애플리케이션(121)은 레이아웃될 콘텐츠 데이터에 따라서, 데이터베이스로부터 콘텐츠 데이터를 추출하기 위한 추출 조건이 설정된 영역을 갖는 템플릿의 레이아웃을 동적으로 변경할 수 있다.
취득 유닛(3601)은 추출 조건을 충족시키는 콘텐츠 데이터를 데이터베이스로부터 취득한다. 판정 유닛(3602)은 콘텐츠 데이터를 레이아웃하기 위한 하나 이상의 서브템플릿과 콘텐츠 데이터의 그룹을 연결하는 연결 정보로부터, 취득 유닛에 의해 취득된 콘텐츠 데이터 그룹를 레이아웃해야 하는 하나 이상의 서브템플릿을 판정한다.
레이아웃 유닛 A(3603)는, 판정 유닛(3602)에 의해 판정된 하나 이상의 서브템플릿에 대하여 콘텐츠 데이터의 그룹을 레이아웃하여, 출력 결과를 작성한다.
레이아웃 조정 유닛(3604)은, 취득 유닛(3601)에 의해 취득된 콘텐츠 데이터를 서브템플릿 내에 레이아웃하여, 콘텐츠 데이터의 레이아웃을 조정한다.
생성부(3605)는, 취득 유닛(3601)에 의해 취득된 콘텐츠 데이터가 영역에 레이아웃될 수 없는 경우, 그 영역을 갖는 페이지를 새롭게 생성한다.
설정 유닛(3606)은, 복수의 구획 방법 중 하나를 설정한다.
레이아웃 유닛 B(3607)는, 콘텐츠 데이터가 그 영역에 레이아웃되는 경우, 설정 유닛(3606)에 의해 설정된 구획 방법 중 하나에 의해서 문서를 구획함으로써, 취득 유닛(3601)에 의해 취득된 콘텐츠 데이터를 레이아웃하여 문서 데이터를 작성한다.
도 36에는 레이아웃 편집 애플리케이션(121)을 구성하는 구성요소에 대해 개시하고 있지만, 레이아웃 편집 애플리케이션(121)은 본 발명의 목적을 달성하기 위해, 취득 유닛(3601), 판정 유닛(3602), 레이아웃 유닛 A(3603)를 구비한다. 레이아웃 편집 애플리케이션(121)은 본 발명의 목적을 달성하기 위해, 대안으로 취득 유닛(3601) 및 생성 유닛(3605)을 구비할 수 있다. 또는, 레이아웃 편집 애플리케이션(121)은 본 발명의 목적을 달성하기 위해, 대안으로 취득 유닛(3601), 설정 유닛(3603), 레이아웃 유닛 B(3607)를 구비할 수 있다.
<기타 실시예>
본 발명은 단일의 기기를 구비하는 장치에도 적용될 수 있으며, 또한 복수의 기기로 구성된 시스템에 적용될 수 있다.
또한, 본 발명은 전술한 실시예의 기능을 구현하는 소프트웨어 프로그램을 시스템 또는 장치에 직접 또는 원격으로 공급하고, 그 시스템 또는 장치의 컴퓨터가 공급된 프로그램 코드를 판독하여 실행하여 구현될 수 있다. 이러한 경우, 시스템 또는 장치가 프로그램의 기능을 갖는 한, 구현의 형태는 프로그램에 의존할 필요는 없다.
따라서, 본 발명의 기능들은 컴퓨터에 의해 구현되므로, 본 발명을 구현하기 위하여 컴퓨터에 인스톨되는 프로그램 코드 자체도 본 발명을 구현하는 것이다. 즉, 본 발명의 청구범위는 본 발명의 기능을 구현하기 위한 컴퓨터 프로그램도 포 함하는 것이다.
이러한 경우, 시스템 또는 장치가 프로그램의 기능들을 갖는 한, 프로그램은 오브젝트 코드, 인터프리터에 의해 실행되는 프로그램, OS에 공급되는 스크립트 데이터, 등의 형태로 실행될 수 있다.
프로그램을 공급하기 위한 기록매체로서는, 예컨대, 플로피 디스크, 하드 디스크, 광 디스크, 자기광학 디스크, CD-ROM, CD-R, CD-RW, 자기 테이프, 비휘발성 메모리 카드, ROM, DVD(DVD-ROM 및 DVD-R), 등이 있다.
또한, 프로그램의 공급방법으로서는, 클라이언트 컴퓨터의 브라우저를 이용하여 인터넷 웹 페이지에 접속하여, 본 발명의 컴퓨터 프로그램 또는 자동 실행 기능을 포함하는 압축 파일을 하드디스크 등의 기록매체에 다운로드 함으로써 프로그램을 공급할 수 있다. 또한, 본 발명의 프로그램을 구성하는 프로그램 코드를 복수의 파일로 분할하여 각각의 파일이 다른 웹 페이지로부터 다운로드 될 수 있도록 하는 것도 가능하다. 즉, 본 발명의 기능 및 처리를 컴퓨터에서 실현하기 위한 프로그램 파일을 복수의 사용자에 대하여 다운로드할 수 있도록 하는 WWW 서버도 본 발명에 포함되는 것이다.
또한, 본 발명의 프로그램을 암호화하여, CD-ROM 등의 기억매체에 저장하여 사용자에게 배포하고, 소정의 조건을 만족하는 사용자가 인터넷을 통해 웹 페이지로부터 복호화를 위한 키 정보를 다운로드하고, 이 키 정보를 사용하여 암호화된 프로그램을 복호화하도록 하여, 프로그램이 사용자 컴퓨터에 인스톨될 수 있다.
또한, 컴퓨터가 독출된 프로그램을 실행함으로써 전술한 실시예의 기능이 실 현되는 경우 이외에, 컴퓨터 상에서 동작하는 OS 등이 실제 처리 중 일부 또는 전부를 수행하여, 전술한 실시예의 기능들이 이러한 처리에 의해 구현될 수도 있다.
또한, 기록매체로부터 판독된 프로그램이, 컴퓨터에 삽입되는 기능 확장 보드 또는 컴퓨터에 접속된 기능 확장 유닛에 대하여 구비되는 메모리에 기입된 후, 기능 확장 보드 또는 기능 확장 유닛에 구비되는 CPU 등이 실제 처리의 일부 또는 전부를 수행함으로써, 전술한 실시예의 기능이 이러한 처리에 의해 실현될 수 있다.
본 발명의 많은 광범위하고 명백한 다른 실시예들이 본 발명의 개념과 범주를 일탈하지 않고서 이루어질 수 있으므로, 본 발명은 첨부된 청구범위에 정의된 바 이외에 그 특정 실시예에 의해 제한되는 것으로 이해되어서는 아니된다.
전술한 바와 같이, 본 발명에 따르면, 적절한 사용자의 조작성을 유지한 채로 고객의 취향에 따른 다양한 출력 결과를 얻기 위해, 템플릿상의 영역에 조건식을 설정하고, 해당 조건식에 기초하여 추출된 레코드 데이터를 복수 종류의 서브템플릿에 레이아웃하고, 이 서브템블릿을 미리 정해진 영역내에 레이아웃하는 자동 레이아웃 기능을 갖는 문서 처리 장치 및 방법이 제공된다.
또한, 본 발명에 따르면, 레이아웃할 데이터의 사이즈를 축소하지 않고 사용자가 원하는 출력 결과를 얻기 위해, 추출된 레코드를 영역내에 레이아웃할 수 없는 경우, 해당 영역을 갖는 페이지를 자동적으로 생성하는 자동 레이아웃 기능을 갖는 문서 처리 장치 및 방법이 제공된다.
또한, 본 발명에 따르면, 문서의 단락 삽입의 자유도를 높임으로써, 정돈된 레이아웃 또는 사용자의 의지가 반영된 레이아웃을 실현할 수 있도록 한 멀티레코드 대응 자동 레이아웃 기능을 갖는 문서 처리 장치 및 방법이 제공된다.

Claims (22)

  1. 레이아웃되어야 할 콘텐츠 데이터를 포함하는 기록 데이터에 따라서, 상기 콘텐츠 데이터를 포함하는 기록 데이터를 데이터베이스로부터 추출하기 위한 추출 조건이 설정되어 있는 영역을 갖는 템플릿의 레이아웃 처리를 실행하는 문서 처리 장치로서,
    상기 추출 조건을 충족시키는 콘텐츠 데이터를 포함하는 복수의 기록 데이터를 상기 데이터베이스로부터 취득하는 취득부;
    상기 콘텐츠 데이터가 할당되는 복수 종류의 서브템플릿 각각에 대하여 서브 템플릿의 각각을 사용하기 위한 사용 조건을 설정하는 설정부;
    상기 복수의 기록 데이터 중 하나에 포함된 상기 사용 조건 및 콘텐츠 데이터에 기초하여 상기 복수 종류의 서브템플릿으로부터 상기 취득부에 의해 취득된 상기 복수의 기록 데이터 중 하나에 대해 사용될 서브템플릿을 결정하는 결정부; 및
    상기 복수의 기록 데이터 중 하나에 포함된 콘텐츠 데이터를 상기 결정부에 의해 결정된 서브템플릿에 할당하고, 상기 서브템플릿을 상기 영역에 레이아웃하는 레이아웃부
    를 포함하고,
    상기 결정부는 상기 복수의 기록 데이터 각각에 대하여 사용될 서브템플릿을 결정하고,
    상기 레이아웃부는 상기 복수의 기록 데이터 각각의 콘텐츠 데이터가 상기 영역에 할당된 복수 종류의 서브템플릿을 레이아웃하는 문서 처리 장치.
  2. 제1항에 있어서,
    상기 취득부에 의해 취득된 상기 콘텐츠 데이터를 서브템플릿 내에 레이아웃하여 레이아웃 조정을 수행하는 레이아웃 조정부를 더 포함하고,
    상기 레이아웃 조정부는 상기 콘텐츠 데이터의 데이터 사이즈에 따라서 레이아웃 조정을 수행하는 문서 처리 장치.
  3. 제2항에 있어서,
    상기 서브템플릿은 각각 상기 콘텐츠 데이터의 입력을 위한 부분 표시 영역을 가지며,
    상기 레이아웃 조정부는 상기 콘텐츠 데이터의 데이터 사이즈에 따라서 상기 서브템플릿 내에서의 상기 부분 표시 영역의 레이아웃 위치 및 상기 부분 표시 영역의 사이즈를 조정하는 문서 처리 장치.
  4. 삭제
  5. 제1항에 있어서,
    상기 취득부에 의해 취득된 콘텐츠 데이터를 상기 영역에 레이아웃할 수 없는 경우 상기 영역을 갖는 페이지를 새롭게 생성하는 생성부
    를 더 포함하는 문서 처리 장치.
  6. 제5항에 있어서,
    상기 생성부는 상기 취득부에 의해 취득된 상기 콘텐츠 데이터가 포함될 때까지 상기 영역을 갖는 페이지를 반복하여 생성하는 문서 처리 장치.
  7. 제5항에 있어서,
    상기 생성부는 상기 영역을 갖는 소정의 페이지를 복제하는 문서 처리 장치.
  8. 삭제
  9. 삭제
  10. 제1항 내지 제3항 또는 제5항 내지 제7항 중 어느 한 항에 있어서,
    상기 템플릿을 생성하는 템플릿 생성부를 더 포함하는 문서 처리 장치.
  11. 제1항 내지 제3항 또는 제5항 내지 제7항 중 어느 한 항에 있어서,
    상기 취득부에 의해 취득된 상기 콘텐츠 데이터를 상기 영역에 레이아웃하는 것에 따라 상기 콘텐츠 데이터가 레이아웃되는 문서 데이터를 표시하는 표시부, 및 상기 콘텐츠 데이터를 상기 영역에 레이아웃하는 것에 따라 상기 콘텐츠 데이터가 레이아웃되는 문서 데이터를 인쇄하는 인쇄부 중 적어도 하나를 더 포함하는 문서 처리 장치.
  12. 레이아웃되어야 할 콘텐츠 데이터를 포함하는 기록 데이터에 따라서, 상기 콘텐츠 데이터를 포함하는 기록 데이터를 데이터베이스로부터 추출하기 위한 추출 조건이 설정되어 있는 영역을 갖는 템플릿의 레이아웃 처리를 실행하는 문서 처리 방법으로서,
    상기 추출 조건을 충족시키는 콘텐츠 데이터를 포함하는 복수의 기록 데이터를 상기 데이터베이스로부터 취득하는 취득 단계;
    상기 콘텐츠 데이터가 할당되는 복수 종류의 서브템플릿 각각에 대하여 서브템플릿의 각각을 사용하기 위한 사용 조건을 설정하는 설정 단계;
    상기 복수의 기록 데이터 중 하나에 포함된 상기 사용 조건 및 콘텐츠 데이터에 기초하여 상기 복수 종류의 서브템플릿으로부터 상기 취득 단계에서 취득된 상기 복수의 기록 데이터 중 하나에 대해 사용될 서브템플릿을 결정하는 결정 단계; 및
    상기 복수의 기록 데이터 중 하나에 포함된 콘텐츠 데이터를 상기 결정 단계에서 결정된 서브템플릿에 할당하고, 상기 서브템플릿을 상기 영역에 레이아웃하는 레이아웃 단계
    를 포함하고,
    상기 결정 단계에서는 상기 복수의 기록 데이터 각각에 대하여 사용될 서브템플릿이 결정되고,
    상기 레이아웃 단계에서는 상기 복수의 기록 데이터 각각의 콘텐츠 데이터가 상기 영역에 할당된 복수 종류의 서브템플릿이 레이아웃되는 문서 처리 방법.
  13. 제12항에 있어서,
    상기 취득 단계에 의해 취득된 상기 콘텐츠 데이터를 상기 서브템플릿내에 레이아웃하고 상기 서브 템플릿 내에서 레이아웃 조정을 수행하는 레이아웃 조정 단계를 더 포함하되,
    상기 레이아웃 조정 단계는 상기 콘텐츠 데이터의 데이터 사이즈에 따라서 레이아웃 조정을 수행하는 것을 포함하는 문서 처리 방법.
  14. 제13항에 있어서,
    상기 서브템플릿은 상기 콘텐츠 데이터의 입력을 위한 부분 표시 영역을 가지며,
    상기 레이아웃 조정 단계는 상기 콘텐츠 데이터의 데이터 사이즈에 따라서 상기 서브템플릿내에서의 상기 부분 표시 영역의 레이아웃 위치 및 상기 부분 표시 영역의 사이즈를 조정하는 것을 포함하는 문서 처리 방법.
  15. 삭제
  16. 제12항에 있어서,
    상기 취득 단계에서 취득된 상기 콘텐츠 데이터를 상기 영역 내에 레이아웃할 수 없는 경우 상기 영역을 갖는 페이지를 새롭게 생성하는 생성 단계
    를 더 포함하는 문서 처리 방법.
  17. 제16항에 있어서,
    상기 생성 단계는 상기 취득 단계에 의해 취득된 상기 콘텐츠 데이터가 포함될 때까지 상기 영역을 갖는 페이지를 반복하여 생성하는 것을 포함하는 문서 처리 방법.
  18. 제16항에 있어서,
    상기 생성 단계는 상기 영역을 갖는 소정의 페이지를 복제하는 것을 포함하는 문서 처리 방법.
  19. 삭제
  20. 삭제
  21. 제12항 내지 제14항 또는 제16항 내지 제18항 중 어느 한 항에 있어서,
    상기 템플릿을 생성하는 템플릿 생성 단계를 더 포함하는 문서 처리 방법.
  22. 제12항 내지 제14항 또는 제16항 내지 제18항 중 어느 한 항에 있어서,
    상기 취득 단계에서 취득된 상기 콘텐츠 데이터를 상기 영역에 레이아웃하는 것에 따라 상기 콘텐츠 데이터가 레이아웃되는 문서 데이터를 표시하는 표시 단계, 및 상기 콘텐츠 데이터를 상기 영역에 레이아웃하는 것에 따라 상기 콘텐츠 데이터가 레이아웃되는 문서 데이터를 인쇄하는 인쇄 단계 중 적어도 하나를 더 포함하는 문서 처리 방법.
KR1020060018739A 2005-02-28 2006-02-27 문서 처리 장치 및 문서 처리 방법 KR100840863B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2005054534A JP4095617B2 (ja) 2005-02-28 2005-02-28 文書処理装置及び文書処理方法及びコンピュータプログラム
JPJP-P-2005-00054534 2005-02-28

Publications (2)

Publication Number Publication Date
KR20060095505A KR20060095505A (ko) 2006-08-31
KR100840863B1 true KR100840863B1 (ko) 2008-06-23

Family

ID=36586011

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020060018739A KR100840863B1 (ko) 2005-02-28 2006-02-27 문서 처리 장치 및 문서 처리 방법

Country Status (5)

Country Link
US (2) US20060193008A1 (ko)
EP (1) EP1696337A3 (ko)
JP (1) JP4095617B2 (ko)
KR (1) KR100840863B1 (ko)
CN (1) CN100409169C (ko)

Families Citing this family (87)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7500186B2 (en) * 2004-08-30 2009-03-03 Microsoft Corporation Systems and methods for efficiently generating table layouts using moveable items
JP4095617B2 (ja) * 2005-02-28 2008-06-04 キヤノン株式会社 文書処理装置及び文書処理方法及びコンピュータプログラム
GB2430060A (en) * 2005-09-08 2007-03-14 Hewlett Packard Development Co Flows for variable data printing
US11715067B2 (en) * 2006-07-28 2023-08-01 Messagepoint Inc. System and method for customer touchpoint management
GB2443448B (en) * 2006-10-31 2011-06-08 Hewlett Packard Development Co Variable data printing
JP2008129702A (ja) * 2006-11-17 2008-06-05 Canon Inc 情報処理装置および制御方法および制御プログラム
JP4912139B2 (ja) * 2006-12-22 2012-04-11 キヤノン株式会社 情報処理装置
JP4915237B2 (ja) * 2006-12-27 2012-04-11 大日本印刷株式会社 バリアブル印刷方法
US20080162539A1 (en) * 2006-12-28 2008-07-03 Sap Ag Dynamic cockpit creator
US20080250394A1 (en) * 2007-04-04 2008-10-09 Microsoft Corporation Synchronizing external documentation with code development
US7720885B2 (en) * 2007-04-04 2010-05-18 Microsoft Corporation Generating a word-processing document from database content
US7720814B2 (en) * 2007-04-04 2010-05-18 Microsoft Corporation Repopulating a database with document content
JP2008310525A (ja) * 2007-06-13 2008-12-25 Canon Inc 情報処理装置、情報処理方法、及び、情報処理プログラム
JP2009110391A (ja) 2007-10-31 2009-05-21 Canon Inc 情報処理装置および制御方法および制御プログラム
JP4631915B2 (ja) * 2008-02-14 2011-02-16 富士ゼロックス株式会社 画像形成装置、サーバ装置、画像形成システム及びプログラム
US8499247B2 (en) * 2008-02-26 2013-07-30 Livingsocial, Inc. Ranking interactions between users on the internet
JP5228569B2 (ja) * 2008-03-28 2013-07-03 大日本印刷株式会社 ウェブを利用したバリアブルプリント方法、ウェブを利用したバリアブルプリントシステムおよび入稿データ加工装置
US8225198B2 (en) * 2008-03-31 2012-07-17 Vistaprint Technologies Limited Flexible web page template building system and method
US20090249192A1 (en) * 2008-03-31 2009-10-01 Microsoft Corporation Creating a view from multiple templates
US8037101B1 (en) * 2008-04-08 2011-10-11 United Services Automobile Association (Usaa) Systems and methods for creating documents from templates
US8627192B2 (en) 2008-07-03 2014-01-07 Ebay Inc. System and methods for automatic media population of a style presentation
US10282391B2 (en) 2008-07-03 2019-05-07 Ebay Inc. Position editing tool of collage multi-media
US8893015B2 (en) 2008-07-03 2014-11-18 Ebay Inc. Multi-directional and variable speed navigation of collage multi-media
JP2010097564A (ja) * 2008-10-20 2010-04-30 Canon Inc 情報処理装置及びレイアウト処理方法
CN101393647B (zh) * 2008-10-23 2012-03-07 浙江大学 一种基于友好用户交互的文档排版方法
JP2010200062A (ja) * 2009-02-26 2010-09-09 Oki Data Corp 画像形成装置
US8181106B2 (en) * 2009-03-18 2012-05-15 Microsoft Corporation Use of overriding templates associated with customizable elements when editing a web page
JP2011008352A (ja) * 2009-06-23 2011-01-13 Canon Inc 文書処理装置、文書処理方法、及びプログラム
US11257112B1 (en) 2009-10-15 2022-02-22 Livingsocial, Inc. Ad targeting and display optimization based on social and community data
WO2011053282A1 (en) * 2009-10-28 2011-05-05 Hewlett-Packard Development Company, L.P. Methods and systems for preparing mixed-content documents
US20130014008A1 (en) * 2010-03-22 2013-01-10 Niranjan Damera-Venkata Adjusting an Automatic Template Layout by Providing a Constraint
US9135358B2 (en) 2010-10-20 2015-09-15 Microsoft Technology Licensing, Llc Result types for conditional data display
US9218323B2 (en) * 2010-10-30 2015-12-22 Hewlett-Parkard Development Company, L.P. Optimizing hyper parameters of probabilistic model for mixed text-and-graphics layout template
JP2012156797A (ja) * 2011-01-26 2012-08-16 Sony Corp 画像処理装置及び画像処理方法
JP2012203783A (ja) * 2011-03-28 2012-10-22 Fuji Xerox Co Ltd 画像処理装置およびプログラム
ES2870588T3 (es) * 2011-04-29 2021-10-27 American Greetings Corp Sistemas, procedimientos y aparatos para crear, editar, distribuir y visualizar tarjetas de felicitación electrónicas
US9396167B2 (en) * 2011-07-21 2016-07-19 Flipboard, Inc. Template-based page layout for hosted social magazines
CN102270193A (zh) * 2011-07-24 2011-12-07 珠海金山办公软件有限公司 对文档中选定区域进行可预览设置的装置及方法
CN103034624B (zh) * 2011-09-29 2015-12-16 北京大学 一种页面对象的精确定位方法和系统
US9269323B2 (en) * 2011-10-28 2016-02-23 Microsoft Technology Licensing, Llc Image layout for a display
US8910035B2 (en) * 2011-12-12 2014-12-09 Facebook, Inc. Display dialogs
US11308227B2 (en) 2012-01-09 2022-04-19 Visa International Service Association Secure dynamic page content and layouts apparatuses, methods and systems
US10223348B2 (en) 2012-03-06 2019-03-05 Hewlett-Packard Development Company, L.P. Hierarchical probabilistic document model based document composition
US20130332804A1 (en) * 2012-06-06 2013-12-12 Conrad Delbert Seaman Methods and devices for data entry
US10289661B2 (en) 2012-09-12 2019-05-14 Flipboard, Inc. Generating a cover for a section of a digital magazine
JP5954691B2 (ja) * 2012-09-28 2016-07-20 ブラザー工業株式会社 テンプレート処理プログラム及びテンプレート処理方法
US9460056B2 (en) * 2013-01-22 2016-10-04 Xerox Corporation Dynamic image layout for personalized packages
US9830304B1 (en) * 2013-02-22 2017-11-28 Swoop Inc. Systems and methods for integrating dynamic content into electronic media
US10007933B2 (en) * 2013-02-22 2018-06-26 Swoop Inc. Systems and methods for integrating dynamic content into electronic media
WO2014190297A1 (en) 2013-05-23 2014-11-27 Flipboard, Inc. Dynamic arrangement of content presented while a client device is in a locked state
US9880994B1 (en) * 2013-06-21 2018-01-30 Nativo, Inc. Detecting compatible layouts for content-based native ads
KR102082541B1 (ko) * 2013-06-28 2020-05-27 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 속성 그룹을 이용한 시각적 엘리먼트의 선택 및 편집 기법
US9489349B2 (en) 2013-07-09 2016-11-08 Flipboard, Inc. Page template selection for content presentation in a digital magazine
US9529790B2 (en) 2013-07-09 2016-12-27 Flipboard, Inc. Hierarchical page templates for content presentation in a digital magazine
US9483444B2 (en) 2013-07-09 2016-11-01 Flipboard, Inc. Dynamic layout engine for a digital magazine
US10990924B2 (en) 2013-08-30 2021-04-27 Messagepoint Inc. System and method for variant content management
CA2863748C (en) 2013-09-19 2023-06-27 Prinova, Inc. System and method for variant content navigation
WO2015042901A1 (en) 2013-09-29 2015-04-02 Microsoft Technology Licensing, Llc Media presentation effects
US9082069B1 (en) 2014-04-02 2015-07-14 Xerox Corporation Relocation of blank pages in booklet making
WO2015167550A1 (en) * 2014-04-30 2015-11-05 Hewlett-Packard Development Company, L.P. Providing print dimensions from a printer
US20160048605A1 (en) * 2014-08-14 2016-02-18 International Business Machines Corporation Integrating image renditions and page layout
US9378461B1 (en) * 2014-09-26 2016-06-28 Oracle International Corporation Rule based continuous drift and consistency management for complex systems
US20160110321A1 (en) * 2014-10-17 2016-04-21 Karol Kalisz Application customization through linked embedded areas
CN105677267B (zh) * 2014-11-19 2018-11-16 珠海金山办公软件有限公司 一种页面显示方法及装置
CN105740217B (zh) * 2014-12-08 2019-08-30 珠海金山办公软件有限公司 一种基于文档模板的文档生成方法及装置
US10204095B1 (en) * 2015-02-10 2019-02-12 West Corporation Processing and delivery of private electronic documents
KR101647765B1 (ko) * 2015-03-20 2016-08-12 (주)솔트웍스 문서 통합 관리 시스템
US10235417B1 (en) * 2015-09-02 2019-03-19 Amazon Technologies, Inc. Partitioned search of log events
US10853359B1 (en) 2015-12-21 2020-12-01 Amazon Technologies, Inc. Data log stream processing using probabilistic data structures
JP6558339B2 (ja) * 2016-10-06 2019-08-14 京セラドキュメントソリューションズ株式会社 画像処理装置及び画像処理プログラム
US10713430B2 (en) * 2016-11-30 2020-07-14 Google Llc Systems and methods for applying layout to documents
US10270934B2 (en) * 2016-12-01 2019-04-23 Kyocera Document Solutions Inc. Image processing apparatus and image forming apparatus
US9971963B1 (en) 2017-01-31 2018-05-15 Xerox Corporation Methods, systems, and devices for individualizing N-up raster images with background forms
JP6288597B2 (ja) * 2017-03-21 2018-03-07 株式会社スタディスト 電子マニュアルの配信・進捗管理システム
JP6819399B2 (ja) * 2017-03-24 2021-01-27 富士ゼロックス株式会社 操作画面生成装置及び操作画面生成プログラム
US10409895B2 (en) * 2017-10-17 2019-09-10 Qualtrics, Llc Optimizing a document based on dynamically updating content
US10402320B1 (en) * 2018-02-27 2019-09-03 Oracle International Corporation Verifying the validity of a transition from a current tail template to a new tail template for a fused object
JP6977661B2 (ja) * 2018-05-14 2021-12-08 コニカミノルタ株式会社 印刷制御装置、印刷制御プログラム及び印刷制御方法
CN108897728B (zh) * 2018-06-27 2023-04-07 平安科技(深圳)有限公司 短信拼接处理方法、装置、计算机设备和存储介质
US10795690B2 (en) 2018-10-30 2020-10-06 Oracle International Corporation Automated mechanisms for ensuring correctness of evolving datacenter configurations
US10892961B2 (en) 2019-02-08 2021-01-12 Oracle International Corporation Application- and infrastructure-aware orchestration for cloud monitoring applications
CN111612003A (zh) * 2019-02-22 2020-09-01 北京京东尚科信息技术有限公司 一种提取图片中的文本的方法和装置
CN111832261A (zh) * 2019-03-29 2020-10-27 珠海金山办公软件有限公司 一种文档样式选择方法、装置及电子设备
CN110210455B (zh) * 2019-06-18 2022-03-01 石家庄捷弘科技有限公司 一种打印内容格式化提取方法
WO2021034489A2 (en) * 2019-08-01 2021-02-25 Shift5, Inc. Systems, methods, and data structures for serial data collection and compression
US11341324B2 (en) 2019-11-18 2022-05-24 Docusign, Inc. Automatic template generation with inbuilt template logic interface
US11087124B1 (en) * 2020-09-24 2021-08-10 Fmr Llc Systems and methods for digital document field location identification

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5381523A (en) * 1992-04-06 1995-01-10 Fuji Xerox Co., Ltd. Document processing device using partial layout templates
JPH07129658A (ja) * 1993-11-02 1995-05-19 Toppan Printing Co Ltd レイアウトデザイン装置
US5845303A (en) * 1994-12-06 1998-12-01 Netpodium, Inc. Document processing using frame-based templates with hierarchical tagging
JPH11232270A (ja) 1998-02-13 1999-08-27 Dainippon Screen Mfg Co Ltd 可変文書作成システム、可変文書出力装置及び可変原稿作成装置
US6243172B1 (en) * 1995-01-18 2001-06-05 Varis Corporation Method and system for merging variable text and images into bitmaps defined by a page description language
KR20020050295A (ko) * 2000-03-17 2002-06-26 아끼구사 나오유끼 문서 작성 프로그램을 기록한 컴퓨터 판독 가능한 기록매체, 문서 작성 시스템 및 문서 작성 방법
KR20020077066A (ko) * 2001-03-30 2002-10-11 세이코 엡슨 가부시키가이샤 디지털 컨텐츠 작성 시스템 및 디지털 컨텐츠 작성 프로그램
KR20020081315A (ko) * 2000-02-09 2002-10-26 무어 노쓰 아메리카, 인코포레이티드 정적 컨텐츠 및 가변 데이터를 갖는 문서의 묘화
JP2005276161A (ja) 2004-02-26 2005-10-06 Seiko Epson Corp レイアウトシステム、レイアウト装置、レイアウトプログラム、テンプレート選択プログラム、レイアウトプログラムを記憶した記憶媒体およびテンプレート選択プログラムを記憶した記憶媒体、並びにレイアウト方法

Family Cites Families (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2855797B2 (ja) * 1990-06-15 1999-02-10 富士ゼロックス株式会社 文書処理装置
US6327599B1 (en) * 1995-06-07 2001-12-04 R. R. Donnelley & Sons Company Apparatus for controlling an electronic press to print fixed and variable information
US5956737A (en) * 1996-09-09 1999-09-21 Design Intelligence, Inc. Design engine for fitting content to a medium
US6596032B2 (en) * 1996-10-15 2003-07-22 Fujitsu Limited Document processing apparatus storing and modifying data using effect data
US7302438B1 (en) * 1997-07-18 2007-11-27 Tesseron Ltd. Method and system for flowing data to an arbitrary path defined by a page description language
JP2000048216A (ja) * 1998-07-24 2000-02-18 Dainippon Screen Mfg Co Ltd 画像部品ブロックのレイアウト処理方法及び装置、並びに、コンピュータ読み取り可能な記憶媒体
WO2000075768A1 (en) * 1999-06-07 2000-12-14 Hewlett-Packard Company An agent and method for dynamically scheduling publication in an automated document delivery system
US7039863B1 (en) * 1999-07-23 2006-05-02 Adobe Systems Incorporated Computer generation of documents using layout elements and content elements
US6826727B1 (en) * 1999-11-24 2004-11-30 Bitstream Inc. Apparatus, methods, programming for automatically laying out documents
EP1410226A1 (en) * 2000-02-03 2004-04-21 XMPIE Inc. A system and method for creating customized documents for cross media publishing
US6816615B2 (en) * 2000-11-10 2004-11-09 Microsoft Corporation Implicit page breaks for digitally represented handwriting
EP1244310A1 (en) * 2001-03-21 2002-09-25 Canal+ Technologies Société Anonyme Data referencing system
US20040205602A1 (en) * 2001-07-25 2004-10-14 Douglas Croeni Page layout design using geometric interference schema
JP4070643B2 (ja) * 2002-03-29 2008-04-02 株式会社リコー 表示用データ生成装置、表示用データ生成システム、データ管理装置、表示用データ生成方法、プログラム及び記録媒体
US20030189727A1 (en) * 2002-04-09 2003-10-09 Nexpress Solutions Llc Method and apparatus for using fields of data to organize variable data print jobs
US7375842B2 (en) * 2002-04-09 2008-05-20 Eastman Kodak Company Variable data printing using variants
JP4235441B2 (ja) * 2002-12-20 2009-03-11 キヤノン株式会社 文書処理プログラム、文書処理方法および装置
US7454699B2 (en) * 2003-03-24 2008-11-18 Microsoft Corporation Smart content insertion
US7325196B1 (en) * 2003-06-16 2008-01-29 Microsoft Corporation Method and system for manipulating page control content
US7325197B1 (en) * 2003-06-16 2008-01-29 Microsoft Corporation Method and system for providing page control content
US7380202B1 (en) * 2003-06-16 2008-05-27 Microsoft Corporation Method and system for customizing and personalizing page control content
US7554689B2 (en) * 2003-10-15 2009-06-30 Canon Kabushiki Kaisha Document layout method
GB2407677A (en) * 2003-10-31 2005-05-04 Hewlett Packard Development Co Post-rendering document space based on rules
US20060023238A1 (en) * 2004-07-30 2006-02-02 Eastman Kodak Company Select reprint of records in variable data printing
US7656543B2 (en) * 2004-11-12 2010-02-02 Hewlett-Packard Development Company, L.P. Albuming images
EP1836584A4 (en) * 2004-11-16 2009-05-06 Zalag Corp DISPLAY / PRESENTATION METHODS AND DEVICES CORRESPONDING TO CONTENT ELEMENTS AND DISPLAY CONTAINERS
US7383499B2 (en) * 2004-12-30 2008-06-03 Microsoft Corporation System and method for dynamically creating a destination template
US8245131B2 (en) * 2005-02-10 2012-08-14 Hewlett-Packard Development Company, L.P. Constraining layout variations for accommodating variable content in electronic documents
JP4095617B2 (ja) * 2005-02-28 2008-06-04 キヤノン株式会社 文書処理装置及び文書処理方法及びコンピュータプログラム
US7434159B1 (en) * 2005-05-11 2008-10-07 Hewlett-Packard Development Company, L.P. Automatically layout of document objects using an approximate convex function model
JP4732029B2 (ja) * 2005-06-29 2011-07-27 キヤノン株式会社 レイアウト決定方法および情報処理装置およびレイアウト決定プログラム
GB2430060A (en) * 2005-09-08 2007-03-14 Hewlett Packard Development Co Flows for variable data printing
GB2430061A (en) * 2005-09-08 2007-03-14 Hewlett Packard Development Co Templates for variable data printing
US7949948B2 (en) * 2007-05-09 2011-05-24 Microsoft Corporation Constraint and rule-based page layout

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5381523A (en) * 1992-04-06 1995-01-10 Fuji Xerox Co., Ltd. Document processing device using partial layout templates
JPH07129658A (ja) * 1993-11-02 1995-05-19 Toppan Printing Co Ltd レイアウトデザイン装置
US5845303A (en) * 1994-12-06 1998-12-01 Netpodium, Inc. Document processing using frame-based templates with hierarchical tagging
US6243172B1 (en) * 1995-01-18 2001-06-05 Varis Corporation Method and system for merging variable text and images into bitmaps defined by a page description language
JPH11232270A (ja) 1998-02-13 1999-08-27 Dainippon Screen Mfg Co Ltd 可変文書作成システム、可変文書出力装置及び可変原稿作成装置
KR20020081315A (ko) * 2000-02-09 2002-10-26 무어 노쓰 아메리카, 인코포레이티드 정적 컨텐츠 및 가변 데이터를 갖는 문서의 묘화
KR20020050295A (ko) * 2000-03-17 2002-06-26 아끼구사 나오유끼 문서 작성 프로그램을 기록한 컴퓨터 판독 가능한 기록매체, 문서 작성 시스템 및 문서 작성 방법
KR20020077066A (ko) * 2001-03-30 2002-10-11 세이코 엡슨 가부시키가이샤 디지털 컨텐츠 작성 시스템 및 디지털 컨텐츠 작성 프로그램
JP2005276161A (ja) 2004-02-26 2005-10-06 Seiko Epson Corp レイアウトシステム、レイアウト装置、レイアウトプログラム、テンプレート選択プログラム、レイアウトプログラムを記憶した記憶媒体およびテンプレート選択プログラムを記憶した記憶媒体、並びにレイアウト方法

Also Published As

Publication number Publication date
CN1828517A (zh) 2006-09-06
EP1696337A3 (en) 2009-06-10
EP1696337A2 (en) 2006-08-30
US20060193008A1 (en) 2006-08-31
CN100409169C (zh) 2008-08-06
JP2006243805A (ja) 2006-09-14
KR20060095505A (ko) 2006-08-31
US20120036427A1 (en) 2012-02-09
US8578269B2 (en) 2013-11-05
JP4095617B2 (ja) 2008-06-04

Similar Documents

Publication Publication Date Title
KR100840863B1 (ko) 문서 처리 장치 및 문서 처리 방법
US7814417B2 (en) Document processing method and system therefor
JP4332477B2 (ja) レイアウト調整方法及び装置並びにプログラム
KR100764953B1 (ko) 문서 처리 장치 및 문서 처리 방법
US7500203B2 (en) Document processing method and system
JP4091726B2 (ja) 構造化文書の表示規則の生成方法、システムおよびプログラムが記録された媒体ならびに構造化文書およびその文書型定義の変更方法、システムおよびプログラムが記録された媒体
JP5252933B2 (ja) 文書処理装置、文書処理方法、及びプログラム
KR100897635B1 (ko) 문서 관리 시스템 및 그 방법과 정보 처리 장치 및 그 제어 방법
JP3962721B2 (ja) 文書処理装置及び文書処理方法
US8788936B2 (en) Information processing apparatus and method
JP2008129702A (ja) 情報処理装置および制御方法および制御プログラム
US20090276693A1 (en) Document processing apparatus and document processing method
CA2945689C (en) Document page identifiers from selected page region content
JP2009110391A (ja) 情報処理装置および制御方法および制御プログラム
JP4549379B2 (ja) 文書処理装置及び文書処理方法及びプログラム
JP2007328516A (ja) 印刷制御装置、印刷制御方法、及びプログラム
CN101727042B (zh) 信息处理设备和信息处理设备的控制方法
JP2006107038A (ja) 情報処理装置および原稿編集方法およびコンピュータが読み取り可能なプログラムを格納した記憶媒体およびプログラム
KR20000049713A (ko) 인터넷신문의 저작시스템 및 저작방법
JP2006293430A (ja) 情報処理装置及び情報処理方法
JP2006344067A (ja) 情報処理装置、情報処理方法ならびにプログラム、記憶媒体

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20130528

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20140527

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20150527

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20160525

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20170526

Year of fee payment: 10

LAPS Lapse due to unpaid annual fee