화면에 나타나는 Gallery 데이터를 PDF로 변환하여 메일로 보내거나 혹은 다운로드 받아 사용하고 싶다.
기존 방식은 Gallery를 HTML로 변경하고 다시 PDF로 변경 하여야만 가능했으며
한글이 깨지는 현상으로 Gallery 데이터를 HTML로 변경 후 JPEG로 다시 변경한 이후 PDF로 변경해야만 했다.
이 경우 HTML에서 JPEG로 변경할 때 일부 스타일이 적용되지 않는 문제가 발생했다.
아래 기능을 사용하면 위의 문제를 모두 해결할 수 있었다.
Power Apps의 PDF viewer 컨트롤(실험)
https://learn.microsoft.com/ko-kr/power-apps/maker/canvas-apps/controls/control-pdf-viewer
실험적 기능은 기본적으로 Off 되어 있어 아래와 같이 오류가 발생 함.
설정 – 예정된 기능 – 실험적 – PDF 함수
Screen, Gallery, Container 등 화면에 나타나는 데이터를 PDF 함수를 사용하여 PDF 작업이 가능하다.
위의 실험적 기능을 설정하면 아래와 같이 PDF 뷰어 기능을 활용하여 결과 화면을 미리 볼 수 있다.
왼쪽 Container 정보를 Pdf로 변환하여 PDF 뷰어로 확인한 내용이다.
아래 내용은 varPDFBlob 변수에 PDF 함수를 이용하여 A4 사이즈에 맞게 마진 설정한 내용을 저장
ExpandContainers: true
위의 옵션을 사용하지 않으면 화면에 보이는 내용만 PDF로 변환하기 때문에 A4 용지에 맞게 구성하려면 옵션을 true로 설정해야 한다.
Set(varPDFBlob,PDF(Container1_1,{ExpandContainers: true,Size:PaperSize.A4, Margin:"24pt 24pt 24pt 24pt"})); |
PDF 내용을 메일로 보내려고 한다면 아래와 같이 설정하면 현재 로그온한 사용자에게 메일을 발송하게 된다.
Office365Outlook.SendEmailV2(User().Email,"PDF 메일 보내기","첨부된 PDF 문서를 확인해 주시기 바랍니다.", {Attachments:Table({Name:"sample.pdf",ContentBytes:PDF(Container1_1,{ExpandContainers: true,Size:PaperSize.A4, Margin:"24pt 24pt 24pt 24pt"})})}) |
메일 수신 내용
문서를 SharePoint에 만들고 웹에서 실행
Set(varPDFFile,FilePDFSave.Run({file:{name:TitleLabel1_2.Text & ".pdf", contentBytes: PDF(Main2Container1_2,{ExpandContainers: true,Size:PaperSize.A4, Margin:"30pt 25pt 40pt 25pt"})}}).linkoutput;); Launch(Last(Split(varPDFFile,"-")).Value); |
아래는 Power Automate에서 FilePDFSave 실행에 대한 설정입니다.
SharePoint의 경로는 사용자가 접근 가능한 경로 임으로 Pdf 파일이 남아 있어서는 안 된다.
이 경우 파일을 삭제하고자 한다면 어떻게 해야 하나?
아래 글에 나와 있는 파일 일괄 삭제 기능을 활용하여 파일을 삭제하면 된다.
Power Automate - SharePoint 파일 일괄 삭제
예약 – 지연 활용하여 5초 지연을 설정하면 원하는 값을 얻을 수 있다.
지연을 설정하지 않으면 만들고 바로 삭제하여 파일을 다운 받을 수 없게 된다.
아래가 실제 제가 사용한 내용입니다.
item()?['{Identifier}']
댓글