SmartSketch는 도면을 PDF로 저장할 수 있는 함수를 제공하고 있습니다.
느낌으로는 SmartSketch도 하나의 도면에 여러개의 Sheet를 가질 수 있으니,
SheetArraySize는 Sheet의 갯수, SheetArray는 Sheet를 담은 배열이라 생각하고 값을 입력했더니 프로그램 오류가 발생했습니다.
그래서 궁리끝에 SheetArraySize에 0 , SheetArray에 null을 넘겨주니 에러없이 동작하였습니다.
아래는 PDF로 저장하는 예제 코드입니다.
void SaveAsPDF(string fileName, bool Bookmarks, PDFResolutionConstants Resolution, PDFColorModeConstants ColorMode, PDFJpegCompressionConstants JpegCompression, int SheetArraySize, object SheetArray);
다른 인자들은 쉽게 알수 있는데 제일 뒤 SheetArraySize , SheetArray가 뭔지 모호합니다.느낌으로는 SmartSketch도 하나의 도면에 여러개의 Sheet를 가질 수 있으니,
SheetArraySize는 Sheet의 갯수, SheetArray는 Sheet를 담은 배열이라 생각하고 값을 입력했더니 프로그램 오류가 발생했습니다.
그래서 궁리끝에 SheetArraySize에 0 , SheetArray에 null을 넘겨주니 에러없이 동작하였습니다.
아래는 PDF로 저장하는 예제 코드입니다.
public bool SaveAsPDF(string sPDFFilePath , string sShaFilePath , ref string sLog)
{
var app = ComInterop.GetInstance<SmartSketch.Application>("SmartSketch.Application");
if (app != null)
{
try
{
app.Visible = true; /// Make application visible
var doc = app.Documents.Open(sShaFilePath); /// Document Open
doc.SaveAsPDF(sPDFFilePath, false,
SmartSketch.PDFResolutionConstants.igPDFResolution1200DPI,
SmartSketch.PDFColorModeConstants.igPDFColorModeColor,
SmartSketch.PDFJpegCompressionConstants.igPDFJpegGoodQualityGoodCompression,
0 , null); /// Now can use the SaveAs method on the open file(all sheets)
doc.Close(false);
return true;
}
catch(Exception ex)
{
sLog += ex.Message;
return false;
}
finally
{
///app.Quit();
}
}
else
{
return false;
}
}
댓글
댓글 쓰기