2012-04-04 2 views
2

BIRT 2.5.0을 사용하여 PDF 파일을 생성하려고합니다. BIRT는 pHp에서 호출됩니다 (JavaBridge 및 Tomcat 서버 덕분입니다).BIRT가 포함 된 PDF에 동적 이미지 포함

그리고 나는 단순히 특정 조건에서 확인 체크 박스를 만들기 위해 노력하고 있습니다. 인터넷에서 약간 보였고 두 가지 방법으로 찾아 냈습니다.

첫 번째 방법은 필드 "idclassebillet는"(있는 내가 테스트를 만드는 중이라서) 1의 값을 가지는 경우 가시성을 재생하는 것입니다 내가 이런 식으로했다 :

<image id="9010"> 
    <list-property name="visibility"> 
     <structure> 
      <property name="format">all</property> 
      <expression name="valueExpr" type="javascript">row["classEq1"]</expression> 
     </structure> 
    </list-property> 
    <list-property name="boundDataColumns"> 
     <structure> 
      <property name="name">classEq1</property> 
      <text-property name="displayName">classEq1</text-property> 
      <expression name="expression" type="javascript">dataSetRow["idclassebillet"] == 1</expression> 
      <property name="dataType">boolean</property> 
     </structure> 
    </list-property> 
    <property name="source">embed</property> 
    <property name="imageName">checkbox_unchecked.png</property> 
</image> 

을하지만 아무튼 일하지 마라.

그래서 내가 찾은 두 번째 솔루션은 간단한 URL과 함께 연주했다. 이 솔루션은 훨씬 더 편리하지만 작동하지 않습니다. 이것은 그렇게 보일 것입니다. 두 경우

<image id="9018"> 
    <property name="source">url</property> 
    <list-property name="boundDataColumns"> 
     <structure> 
      <property name="name">classEq1</property> 
       <text-property name="displayName">classEq1</text-property> 
       <expression name="expression" type="javascript">dataSetRow["idclassebillet"]</expression> 
      <property name="dataType">integer</property> 
     </structure> 
    </list-property> 
    <expression name="uri" type="javascript"> 
     if(row["classEq1"] == 1) 
      "http://my.server.com/checkbox_checked.png"+row["classEq1"]; 
     else 
      "http://my.server.com/checkbox_unchecked.png"+row["classEq1"]; 
    </expression> 
</image> 

은, 그와 같은 필드 "dataSetRow ["idfield를 "]"선언

<data-sets> 
    <oda-data-set extensionID="org.eclipse.birt.report.data.oda.jdbc.JdbcSelectDataSet" name="infoBordereau" id="178"> 
     <structure name="cachedMetaData"> 
      <list-property name="resultSet"> 
      ... 
       <structure> 
        <property name="position">9</property> 
        <property name="name">idclassebillet</property> 
        <property name="dataType">integer</property> 
       </structure> 
      ... 
     </structure> 
     <property name="dataSource">GestionBillet</property> 
     <list-property name="resultSet"> 
      ... 
      <structure> 
       <property name="position">8</property> 
       <property name="name">idclassebillet</property> 
       <property name="nativeName">idclassebillet</property> 
       <property name="dataType">integer</property> 
      </structure> 
      ... 
     </list-property> 
    .... 
    </oda-data-set> 
</data-sets> 

가 나는 "idclassebillet"의 콘텐츠에 액세스 할 수 있는지 조사했다. 나는 단순히 이런 식으로 인쇄하는 경우, 그것은 잘 작동 :

<data id="90060001"> 
    <property name="whiteSpace">nowrap</property> 
    <property name="dataSet">infoBordereau</property> 
    <list-property name="boundDataColumns"> 
     <structure> 
      <property name="name">classEq1</property> 
      <text-property name="displayName">classEq1</text-property> 
      <expression name="expression" type="javascript">dataSetRow["idclassebillet"]</expression> 
      <property name="dataType">integer</property> 
     </structure> 
    </list-property> 
    <property name="resultSetColumn">classEq1</property> 
</data> 

그리고 무엇 내 "역동적 인"이미지를 얻기 위해 선택하는 솔루션을, 난 항상 같은 이미지를 얻을, 어떤 "dataSetRow ["idclassebillet의 값 " ] "입니다. 이미지에 액세스하여 인쇄하는 데 문제가 없습니다. 문제는 "idclassebillet"필드의 값을 "테스트"하는 것입니다 (즉,이 필드에 어떻게 액세스 할 수 있습니까?).

난 당신이 내가 뭘하려고 오전 이해를 바랍니다. 당신이 더 나은 솔루션을 (및 코드의 예 가능한 경우) ^^ 공유 주저하지 않는 경우 :

많은 감사,

라파엘 POITTEVIN

NB : 처음에는 내 이미지를 문서에 임베드하고 싶습니다. (첫 번째 해결 방법에서 사용하는 것입니다.)하지만 작동하지 않았기 때문에 http://my.server.com에있는 이미지를 사용했습니다 ...

답변

1

귀하의 목표가 선택되지 않은/체크 박스에 체크 했더니 Wingdings 폰트를 0xA8과 0xFD 또는 0xFE 문자로 사용하는 것을 고려 했습니까?

+0

안녕하세요, 답변 해 주셔서 감사합니다. 이것은 꽤 좋은 생각입니다. 나는 ... 내 부분에 라인'<속성 이름 = "의 font"> Wingdings를을'추가 내 코드는 같은 비트 같습니다 경우 (dataSetRow [ "idclassebillet"] == 1) 문자열 .fromCharCode ('0xFD'); 다른 대신 String.fromCharCode ('내지 0xFE'); 하지만이 단지를 인쇄 'Y'자 ... 어떤 생각? (NB : [링크] (http://en.wikipedia.org/wiki/Checkbox) 나는 또한 시도 다른 사람은 U + 2610 같은 CHAR,하지만 아무것도 인쇄되지 않았다.) – PiroXXI

+0

@PiroXXI을 : 그 세 문자가'있다 일반 글꼴 (Arial, Times 등)에서는 각각 "¨", "ý"및 "þ"로 표시되지만 Wingdings에서는 빈 확인란, 교차 체크 박스 및 체크 표시가 각각 표시되어야합니다.글꼴이 제대로 표시되지 않는 것처럼 들립니다. 자신의 컴퓨터에서 미리보기를 시도 했습니까? –

+0

그것은 내 자신의 컴퓨터 (윈도우)에서 꽤 잘 작동하지만, 리눅스 서버에서 제대로 작동하도록 할 수는 없습니다. :/(폰트를 설치했지만 BIRT가 찾지 못하는 것과 같다). ' Wingdings "'을 추가하거나 제거하는 것은 글꼴이 다르기 때문에 효과가 있습니다. 그러나 내 창문에있는 글꼴 글꼴처럼 보이지 않습니다 ... – PiroXXI