개발 관련/기타,연구
C# 에서 ms office 문서 PDF 로 변환하기
snoworca
2022. 1. 24. 13:42
참조 추가 => COM 에서 다음 항목들을 추가한다.
이후 아래의 코드를 사용하면 끝.
다만, 보안 문제가 있는 형식은 예외를 발생시키는데 이를 강제로 열 수 있는 방법을 찾아야한다.
public static void WordToPDF(string docPath, string exportPath)
{
Microsoft.Office.Interop.Word.Document wordDocument;
Microsoft.Office.Interop.Word.Application appWord = new Microsoft.Office.Interop.Word.Application();
// 경로, 파일 변환 대화상자 표시 안 함, 읽기 전용으로 열기
wordDocument = appWord.Documents.Open(docPath, true, true);
wordDocument.ExportAsFixedFormat(exportPath, Microsoft.Office.Interop.Word.WdExportFormat.wdExportFormatPDF);
wordDocument.Close(false);
appWord.Quit();
}
public static void ExcelToPDF(string xlsPath, string exportPath)
{
Microsoft.Office.Interop.Excel.Application appExcel = new Microsoft.Office.Interop.Excel.Application();
appExcel.Visible = false;
Microsoft.Office.Interop.Excel.Workbook workbook;
workbook = appExcel.Workbooks.Open(xlsPath, Type.Missing, true);
workbook.ExportAsFixedFormat(Microsoft.Office.Interop.Excel.XlFixedFormatType.xlTypePDF, exportPath, Microsoft.Office.Interop.Excel.XlFixedFormatQuality.xlQualityStandard, true, true, Type.Missing, Type.Missing, false, Type.Missing);
workbook.Close(false);
appExcel.Quit();
}
public static void PPTToPDF(string pptPath, string exportPath)
{
Microsoft.Office.Interop.PowerPoint.Application appPPT = new Microsoft.Office.Interop.PowerPoint.Application();
Microsoft.Office.Interop.PowerPoint.Presentation presentation = appPPT.Presentations.Open(pptPath, Microsoft.Office.Core.MsoTriState.msoTrue,
Microsoft.Office.Core.MsoTriState.msoTrue,
Microsoft.Office.Core.MsoTriState.msoFalse);
presentation.ExportAsFixedFormat(exportPath, Microsoft.Office.Interop.PowerPoint.PpFixedFormatType.ppFixedFormatTypePDF,
Microsoft.Office.Interop.PowerPoint.PpFixedFormatIntent.ppFixedFormatIntentPrint,
Microsoft.Office.Core.MsoTriState.msoFalse, Microsoft.Office.Interop.PowerPoint.PpPrintHandoutOrder.ppPrintHandoutVerticalFirst,
Microsoft.Office.Interop.PowerPoint.PpPrintOutputType.ppPrintOutputSlides, Microsoft.Office.Core.MsoTriState.msoFalse, null,
Microsoft.Office.Interop.PowerPoint.PpPrintRangeType.ppPrintAll, string.Empty, true, true, true, true, false, Type.Missing);
presentation.Close();
appPPT.Quit();
}