프로젝트

일반

사용자정보

통계
| 개정판:

hytos / ID2.Manager / MarkusImageCreate / Program.cs @ 685855be

이력 | 보기 | 이력해설 | 다운로드 (5.03 KB)

1 d1d8c5ea taeseongkim
using ID2.Manager.Dapper.Repository;
2
using System;
3
using System.Collections.Generic;
4
using System.Linq;
5
using System.Text;
6
using System.Threading.Tasks;
7
using System.IO;
8
using ID2.Manager.Dapper.Entities;
9
10
namespace MarkusImageCreate
11
{
12
    class Program
13
    {
14
        const string CONST_SETTINGS = "SETTINGS";
15
        const string CONST_ID2Manager_Connect = "ID2Manager";
16
        const string CONST_Markus_Connect = "Markus";
17
        const string CONST_ID2ProjectsPath = "ID2ProjectsPath";
18
        const string CONST_MarkusImagePath = "MarkusImagePath";
19
        const string CONST_Resolution = "Resolution";
20
        const string CONST_FontPath  = "FontPath";
21
        
22
23
        static string MarkusConnectionStr;
24
        static string ID2ConnectionStr;
25
        static string ID2ProjectsPath;
26
        static string MarkusImagePath;
27
        static int Resolution;
28
        static string FontPath;
29
30
        static void Main(string[] args)
31
        {
32
            
33
            Salaros.Configuration.ConfigParser config = new Salaros.Configuration.ConfigParser(Path.Combine(AppContext.BaseDirectory,"MarkusImageCreate.ini"));
34
            ID2ConnectionStr = config.GetValue(CONST_SETTINGS, CONST_ID2Manager_Connect);
35
            MarkusConnectionStr = config.GetValue(CONST_SETTINGS, CONST_Markus_Connect);
36
            //ID2ConnectionStr = Encoding.Unicode.GetString(Convert.FromBase64String(config.GetValue(CONST_SETTINGS, CONST_ID2Manager_Connect)));
37
            //MarkusConnectionStr = Encoding.Unicode.GetString(Convert.FromBase64String(config.GetValue(CONST_SETTINGS, CONST_Markus_Connect)));
38
            ID2ProjectsPath = config.GetValue(CONST_SETTINGS, CONST_ID2ProjectsPath);
39
            MarkusImagePath = config.GetValue(CONST_SETTINGS, CONST_MarkusImagePath);
40
            Resolution = config.GetValue(CONST_SETTINGS, CONST_Resolution,250);
41
            FontPath = config.GetValue(CONST_SETTINGS, CONST_FontPath);
42
43
            InitConvertPDF();
44
45
            Console.WriteLine("완료");
46
            Console.ReadKey();
47
        }
48
49
        static string[] ProjectCodes()
50
        {
51
            using (ProjectRepository rep = new ProjectRepository(ID2ConnectionStr))
52
            {
53
                var projects = rep.GetAllProjectList();
54
55
                return projects.Select(x => x.Code).ToArray();
56
            }
57
        }
58
59
        static void InitConvertPDF()
60
        {
61
            foreach (var code in ProjectCodes())
62
            {
63
                ConvertPDF(code);
64
            }
65
        }
66
67
        static void ConvertPDF(string code)
68
        {
69
            string sourcePath = Path.Combine(Path.Combine(ID2ProjectsPath, code), "drawings");
70
            string targetPath = Path.Combine(MarkusImagePath, code);
71
72
            if(!Directory.Exists(targetPath))
73
                Directory.CreateDirectory(targetPath);
74
75
            using (MarkusRepository rep = new MarkusRepository(MarkusConnectionStr))
76
            {
77
                var convertItems = rep.GetConvertDoc(0, code);
78
79
                foreach (var item in convertItems)
80
                {
81
                    try
82
                    {
83
                        var pdfFile = Path.Combine(sourcePath, item.DOCUMENT_URL);
84
85
                        using (Markus.MarkusPDF markusPDF = new Markus.MarkusPDF())
86
                        {
87
                            markusPDF.pdfLoad(pdfFile, -1, Resolution, FontPath);
88
89
                            if (markusPDF.PageCount() > 0)
90
                            {
91
                                var saveFileName = Path.Combine(targetPath, item.DOCUMENT_ID + ".png");
92
                                var result = markusPDF.SavePage(1, saveFileName);
93
94
                                if (result.StatusCode == Markus.Message.StatusCodeType.Completed)
95
                                {
96
                                    var docInfoID = rep.CreateDocInfo(item.ID, 1);
97
98
                                    var docPageResult = rep.CreateDocPage(new[]{
99
                                                new DocPage {
100
                                                    docinfo_id = docInfoID,
101
                                                    page_angle = 0,
102
                                                    page_width  = result.SavePageInfo.Width.ToString(),
103
                                                    page_height =  result.SavePageInfo.Height.ToString(),
104
                                                    page_number = 1
105
                                                } });
106
                                }
107
108
                                rep.UpdateStatusAsync(item.SERVICE_ID, item.ID, (int)result.StatusCode, 1, 1, result.Message);
109
                                Console.WriteLine($"Ok. {item.DOCUMENT_ID}");
110
                            }
111
                        }
112
                    }
113
                    catch (Exception ex)
114
                    {
115
                        Console.WriteLine($"Error. {item.DOCUMENT_ID} {ex.ToString()}");
116
                        rep.UpdateStatusAsync(item.SERVICE_ID, item.ID,(int)Markus.Message.StatusCodeType.Error, 1, 1, ex.ToString());
117
                    }
118
                }
119
            }
120
        }
121
    }
122
}
클립보드 이미지 추가 (최대 크기: 500 MB)