! 제품 버전을 정확하게 입력해 주세요.
제품 버전이 정확하게 기재되어 있지 않은 경우,
최신 버전을 기준으로 안내 드리므로
더욱 빠르고 명확한 안내를 위해
제품 버전을 정확하게 입력해 주세요!

여러개의 grid 를 하나의 pdf 로 export > Q&A | 토론

본문 바로가기

Wijmo

Q&A | 토론

VueJS 여러개의 grid 를 하나의 pdf 로 export

페이지 정보

작성자 한효창 작성일 2024-03-22 09:36 조회 52회 댓글 0건
제품 버전 : 5.20211.794, 5.20231.888
컨트롤 이름 : FlexGridPdfConverter

본문

안녕하세요?


SK C&C 한효창 매니저입니다.

Wijmo 솔루션 사용중 pdf export 중 오류가 발생하여 문의드립니다.



1.     Flex Grid 1개는 PDF Export 처리 아래 API로 정상 처리 됨.


FlexGridPdfConverter.export


2.    Flex Grid 여러 개 PDF Export 처리는 아래 API로 하는데, 정상 작동이 안되고 오류 발생(Assertion failed in Wijmo: Invalid argument: "value". Error)


FlexGridPdfConverter.draw


https://codesandbox.io/p/sandbox/wijmo-pdf-export-multiple-grid-tm2jbf?file=%2Fsrc%2FApp.js%3A47%2C9

인터넷에 예제들을 찾아 보면 draw 방식으로 해서 grid 두개가 한 pdf 파일에 출력되어지는 데 저희소스에 적용하면 grid 내부에서 오류 발생 하여 개발자 분이 소스 코드 분석 해보니 grid 내에서 pdf 생성 시 PdfFont를 비교 하는 구문이 있는데, 이때 font type 이 안 맞아서 발생하는 오류로 짐작된다고 합니다.



node_modules\.vite\deps\@grapecity_wijmo__grid__pdf.js 파일을 보면 아래 구문이 있는데

_FlexGridPdfCoreConverter2.DefFont = new pdf.PdfFont();


여기서 new 로 생성되는 폰트는 PdfFont2 로 생성이 되고


node_modules\@grapecity\wijmo.pdf\es5-esm.js 파일에서 비교 구문에서


e instanceof PdfFont,_Errors.InvalidArg("value"))


비교하는 font 는 PdfFont 로 type 이 맞지 않아 발생하는 오류로 확인됩니다.


혹시 해당 이슈를 해결하는 방법이 있는지, 아니면 오류를 회피 할 수 있는 다른 방법이 있는지

가이드 부탁드립니다.


감사합니다.

한효창 드림.

  • 페이스북으로 공유
  • 트위터로  공유
  • 링크 복사
  • 카카오톡으로 보내기

댓글목록

등록된 댓글이 없습니다.

2 답변

VueJS Re: 여러개의 grid 를 하나의 pdf 로 export

추천0 이 글을 추천하셨습니다 비추천0

페이지 정보

작성자 MESCIUS루시 작성일 2024-03-26 16:37 댓글 3건

본문

안녕하세요 메시어스입니다.


문의하신 내용과 관련하여 저희 쪽에서 재현이 되지 않아 정확한 원인 파악이 어려운 상황입니다. 


관련하여 기본 샘플을 공유드리오니 문제가 되는 샘플을 비교하여 저희 쪽으로 재현 가능한 샘플 프로젝트를 공유해주시기 바랍니다.


 

더불어 현재 기록해주신 제품 버전이 2021 v1(5.20211.794), 2023 v1(5.20231.888)으로 파악됩니다. 상이한 버전이기에 고객님이 실제 개발 중인 버전 재확인 및 현재 적용 중인 font 정보 공유 부탁드립니다.


정확한 답변을 위해 요청드리오니 확인 후 회신 주시면 해당 정보를 바탕으로 재현 및 디버깅 후 안내드리겠습니다.


감사합니다.

메시어스 드림

댓글목록

한효창님의 댓글

한효창 작성일

안녕하세요. 한효창 매니저입니다.

위의 게시글에서 언급한 font 관련 내용은 저희가 구현한 소스가 아니며, 별도로 사용중인 font가 없습니다.

저희 소스로 일부 첨부하였습니다. 해당 소스 적용 후 다운로드 시 유사 오류 발생합니다.

그리고 위즈모 버전 정보를 알려 드리겠습니다.
아래 버전으로 package.json 등록 시 발생합니다.

"@grapecity/wijmo.all": "5.20211.794",
"@grapecity/wijmo.input": "^5.20231.888",
"@grapecity/wijmo.vue2.all": "5.20211.794", 


확인 후 회신 부탁드립니다.

감사합니다. 
한효창드림

<template>
<div class="container-fluid">
<!-- Export button -->
<button class="btn btn-default" @click="exportPDF">Export</button>

<!-- FlexGrid -->
<wj-flex-grid class="grid" selectionMode="ListBox" headersVisibility="All"
    :itemsSource="data" :initialized="initializeGrid">

</wj-flex-grid>
</div>
    </wj-flex-grid>

    <wj-flex-grid class="grid" selectionMode="ListBox" headersVisibility="All"
    :itemsSource="dataTwo" :initialized="initializeGridTwo">
</wj-flex-grid>
</div>
    </wj-flex-grid>
  </div>
</template>
<script>
import * as wjGrid from '@grapecity/wijmo.grid';

import dayjs from "dayjs";

//pdf 관련 import
import * as wijmo from '@grapecity/wijmo';
import * as pdf from '@grapecity/wijmo.pdf';
import * as gridPdf from '@grapecity/wijmo.grid.pdf';

import { getData,getDataTwo } from './data';

export default {
  name: 'HelloWorld',
  components: {
    wjGrid, wijmo, pdf, gridPdf
  },
  data: function () {
    return {
      data: getData(10),
      dataTwo: getDataTwo(10),
      flexGrid:null,
      flexGridTwo:null,
    };
  },
  methods: {
    initializeGrid(ctl) {
      this.flexGrid = ctl;
  },
  initializeGridTwo(ctl) {
    this.flexGridTwo = ctl;
},
  exportPDF() {
         const doc = new pdf.PdfDocument({
        compress: true,
        version: pdf.PdfVersion.v1_5,
        header: { declarative: { text: '\t&[Page]\\&[Pages]', 
                                 brush: '#bfc1c2' 
                               } 
                },
        lineGap: 2,
        pageSettings: {
            margins: {
                left: 12,
                right: 12,
                top: 12,
                bottom: 12
            }
        },
        ended: (sender, args) => pdf.saveBlob(args.blob, 'LPG Stock Report_' + dayjs().format('YYYY-MM-DD') + '.pdf')
//        ended: function (sender, args) {
//            pdf.saveBlob(args.blob, 'LPG Stock Report_' + dayjs().format('YYYY-MM-DD') + '.pdf');
//        }
    });

//    console.log("@==> doc: ", doc);

    const settings = {
        styles: {
            cellStyle: { backgroundColor: '#ffffff', borderColor: '#c6c6c6', font: {size: 8 } },
            altCellStyle: { backgroundColor: '#f9f9f9', font: {size: 8 } },
            groupCellStyle: {font: { weight: "bold", size: 8 }, backgroundColor: '#dddddd' },
            headerCellStyle: { backgroundColor: '#eaeaea', font: {size: 8 } }
        }
    };

    gridPdf.FlexGridPdfConverter.draw(this.flexGrid, doc, 600, 600, {maxPages: 10, settings});

    doc.moveDown();

    gridPdf.FlexGridPdfConverter.draw(this.flexGridTwo, doc, 600, 600, {maxPages: 10, settings});

    doc.end();

   
  }
}

};
</script>

<!-- Add "scoped" attribute to limit CSS to this component only -->
<style>
label {
  display: block !important;
}
.wj-flexgrid {
  margin: 10px 0;
}

/* highlight the main column in the group */
.wj-flexgrid .wj-cells .wj-cell.main-column {
  background: #e3f4ff;
}

/* some conditional formatting */
.big-val {
  font-weight: bold;
  color: darkgreen;
}
.small-val {
  font-style: italic;
  color: rgb(202, 0, 0);
}

/* some animation when collapsing/expanding the groups */
.animated .wj-flexgrid .wj-colheaders .wj-header.wj-cell.wj-colgroup {
  transition: all 0.2s;
}
</style>

한효창님의 댓글

한효창 작성일

추가적으로 저희쪽에서 발생하는 에러 상세 전달드립니다.

Uncaught ** Assertion failed in Wijmo: Invalid argument: "value". Error
    at assert (https://127.0.0.1:5173/node_modules/.vite/deps/chunk-THDFGZUK.js?v=5d7632bc:458:13)
    at _asPdfFont (https://127.0.0.1:5173/node_modules/.vite/deps/@grapecity_wijmo__pdf.js?v=af916bbc:14459:3)
    at PdfPageArea2.measureText (https://127.0.0.1:5173/node_modules/.vite/deps/@grapecity_wijmo__pdf.js?v=af916bbc:14820:21)
    at _CellRenderer2._calculateTextRect (https://127.0.0.1:5173/node_modules/.vite/deps/@grapecity_wijmo__grid__pdf.js?v=207b8a42:775:31)
    at _CellRenderer2.renderCell (https://127.0.0.1:5173/node_modules/.vite/deps/@grapecity_wijmo__grid__pdf.js?v=207b8a42:632:44)
    at https://127.0.0.1:5173/node_modules/.vite/deps/@grapecity_wijmo__grid__pdf.js?v=207b8a42:568:19
    at RowRange2.forEach (https://127.0.0.1:5173/node_modules/.vite/deps/@grapecity_wijmo__grid__pdf.js?v=207b8a42:988:25)
    at PanelSectionRenderer2.render (https://127.0.0.1:5173/node_modules/.vite/deps/@grapecity_wijmo__grid__pdf.js?v=207b8a42:539:9)
    at FlexGridRenderer2.render (https://127.0.0.1:5173/node_modules/.vite/deps/@grapecity_wijmo__grid__pdf.js?v=207b8a42:376:24)
    at _FlexGridPdfCoreConverter2._drawInternal (https://127.0.0.1:5173/node_modules/.vite/deps/@grapecity_wijmo__grid__pdf.js?v=207b8a42:238:9)
logError @ chunk-LR6Z6VXI.js?v=5d7632bc:1926
handleError @ chunk-LR6Z6VXI.js?v=5d7632bc:1913
callWithErrorHandling @ chunk-LR6Z6VXI.js?v=5d7632bc:1865
callWithAsyncErrorHandling @ chunk-LR6Z6VXI.js?v=5d7632bc:1871
invoker @ chunk-LR6Z6VXI.js?v=5d7632bc:10527

한효창님의 댓글

한효창 작성일

추가로 아래 버전으로 변경 후 테스트를 진행 해 보았으나 동일한 오류가 발생합니다.
"@grapecity/wijmo.all": "5.20232.939",
    "@grapecity/wijmo.input": "5.20232.939",
    "@grapecity/wijmo.vue2.all": "5.20232.939",

VueJS Re: 여러개의 grid 를 하나의 pdf 로 export

추천0 이 글을 추천하셨습니다 비추천0

페이지 정보

작성자 MESCIUS루시 작성일 2024-03-28 17:12 댓글 0건

본문

안녕하세요 메시어스입니다.


문의하신 내용과 관련해서 저희 쪽에서 여러 방법으로 재현해보고자 했으나 안타깝게도 재현이 되지 않아 안내에 어려움이 있습니다. 


이전에 고객님의 svg 파일의 path가 잘못 설정되어 그리드 기능에 영향을 주었던 사례가 있었습니다. 앞서 언급한 사례와 같이 예상치 못한 변수들이 있기 때문에 저희 쪽에서 재현이 되지 않는다면 정확한 안내를 드리기 어렵습니다. 


따라서 저희 측에서 재현 및 디버깅할 수 있는 샘플 프로젝트를 zip파일로 첨부하여 공유해주신다면 재현 및 디버깅 후 안내드리겠습니다. 


만일 포럼 게시판에 샘플 프로젝트를 공유하는 것이 부담스러우시다면 저희 세일즈 메일(sales-kor@mescius.com)로 회신주시기 바랍니다.


다른 궁금한 점이 생기면 문의주시기 바랍니다.


감사합니다.

메시어스 드림

댓글목록

등록된 댓글이 없습니다.

메시어스 홈페이지를 통해 제품에 대해서 더 자세히 알아 보세요!
홈페이지 바로가기
메시어스 홈페이지를 통해 제품에 대해서 더 자세히 알아 보세요!
홈페이지 바로가기
이메일 : sales-kor@mescius.com | 전화 : 1670-0583 | 경기도 과천시 과천대로 7길 33, 디테크타워 B동 1107호 메시어스(주) 대표자 : 허경명 | 사업자등록번호 : 123-84-00981 | 통신판매업신고번호 : 2013-경기안양-00331 ⓒ 2024 MESCIUS inc. All rights reserved.