PDF 파일 생성하기 위한 방법은 여러가지가 있다.
프린터드라이브를 이용하는 방법도 있다.
웹에서 php 를 이용한 FPDF 는 처음부터 문서자체를 pdf 파일로 만든다.
그러나 실무에서 처음부터 매번 pdf 파일을 만드는 것 보다 이미 만들어진 양식파일(엑셀, 워드, html) 파일등에 값에 해당하는
자료만 넣어주고 pdf 파일을 로컬에서 만드는 것이 더 효율적일 것 같다.
예를 들어 엑셀파일로 만들어진 거래명세서 양식에 거래처, 품목, 수량 등을 기재하여 pdf 파일로 만들면 훨씬 효율적일 것이다.
var
ExcelApp, xlWorkBook, xlSheet: OLEVariant;
tFileName, tS, vFileName: string;
tReturn : Boolean;
begin
tFileName := ExtractFilePath(Application.ExeName) + 'aTest.xlsx';
if FileExists(tFileName) = False Then
begin
showmessage('"aTest.xlsx" 양식파일이 존재하지 않습니다!');
exit;
end;
ExcelApp := CreateOleObject('Excel.Application');
try
ExcelApp.Workbooks.Open(tFileName);
xlWorkBook := ExcelApp.ActiveWorkBook;
xlSheet := xlWorkBook.Sheets['거래명세서']; // xlSheet := xlWorkBook.ActiveSheet; 기본값
// Data 전달 ********************************************************************
xlSheet.Cells[15, 2].Value := '홍기동과장';
//Cells속성 이용 [행,열], 열은 "A" 가 1이다. Value는 기본값이라 xlSheet.Cells[15, 2].Value 처럼 표현안해도 된다.
tS := 'B16'; // QuotedStr('B16');
xlSheet.Range[tS].Value := '가나다주식회사.'; //Range속성 이용 Value는 기본값이라 xlSheet.Range[tS] 처럼 표현해도 된다.
xlSheet.Cells[17, 2] := '냉장고';
//PDF 인쇄 **********************************************************************
vFileName := ExtractFilePath(Application.ExeName) + 'abc.pdf';
xlSheet.ExportAsFixedFormat(
0 // Type xlTypePDF = 0, xlTypeXPS = 1
, vFileName // Filename
, 0 // 품질 xlQualityStandard =0, xlQualityMinimum = 1
, True // 문서정보 포함 여부
, False // 인쇄영역만 인쇄할지
, EmptyParam // 시작페이지 없으면 처음부터, EmptyParam은 파라미터를 생략할 때 사용
, EmptyParam // 끝페이지 없으면 끝까지
, True // 제작후 디스플에이할지
, EmptyParam // Pointer to the FixedFormatExt class
);
finally
ExcelApp.DisplayAlerts := False; // 저장여부를 경고창 비활성화(안보임)
ExcelApp.Quit; // 종료
ExcelApp.DisplayAlerts := True // 저장여부 경고창 다시 활성화
end;
end;
이제 PDF파일을 열때 암호를 넣는 것만 구현하면 베리베리 굿~
'델파이' 카테고리의 다른 글
델파이 VBA 엑셀 이미지 삽입 방법 2가지, Shapes.AddPicture, Pictures.Insert (0) | 2016.08.26 |
---|---|
와일드카드(*) 사용한 일괄 파일삭제 (0) | 2016.06.08 |
TPopupMenu , TMenuItem 을 사용하는 TComponent 알아내기 (0) | 2016.05.15 |
TDBCtrlGrid 마우스휠 이벤트 구현, TMessage 타입 변경이 원인 (0) | 2016.03.17 |
Copy, Length AnsiString UnicodeString 차이, IsCharAlphaA 알파벳 문자확인 (0) | 2016.03.12 |