๐ฝ ๊ณ ์คํธ ์คํฌ๋ฆฝํธ ๊ธฐ๋ณธ ์ธํ ์ ์ด์ ๊ธ์ ์ฐธ๊ณ ํด์ฃผ์ธ์.
[C++ / MFC] Ghostscript ๋ค์ด๋ก๋ ๋ฐ ์ฌ์ฉ ๋ฐฉ๋ฒ
ํ๋ก๊ทธ๋จ์์ PDF ํ์ผ์ ํ์์ ๋ฐ๊พธ๊ฑฐ๋ ๋ถ๋ฌ์์ ์ด๋ฏธ์งํ ์ํค๋๊ฒ์ ์ผ๋ฐ์ ์ธ ๋ฐฉ๋ฒ์ผ๋ก๋ ๋ถ๊ฐ๋ฅํ๊ณ ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค. ๊ทธ์ค ๊ฐ์ฅ ๋์ค์ ์ผ๋ก ์ฌ์ฉํ๋ ๊ณ ์คํธ์คํฌ๋ฆฝ
dev-drive.tistory.com
๊ธฐ๋ณธ์ ์ผ๋ก ํ์ํ in, out ํ์ผ ๋ฐ exe ํ์ผ๊ฒฝ๋ก, ShellExecute๋ ๋์ผํ๊ฒ ์ฌ์ฉํ๊ณ
์ด๋ค ์ต์ ์ ์ฃผ๋๋์ ๋ฐ๋ผ ๋ช ๋ น์ด ๋ฌ๋ผ์ง๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์
์๋ ๊ฐ์ ์๋ตํ๊ณ sCommand๋ง ์์ ๋ก ์์ฑํ๊ฒ ์ต๋๋ค.
CString sExeFilePath = _T("C:\\Program Files\\gs\\gs10.00.0\\bin\\gswin64.exe");
CString sOutFileFile = _T("C:\\Temp\\out.png");
CString sInFileFile = _T("C:\\Temp\\state.eps");
CString sCommand;
sCommand.Format(_T("..."));
ShellExecute(NULL, _T("open"), sExeFilePath, sCommand, NULL, SW_HIDE);
โป ์ต์ ์ ๋ํ ์ค๋ช ์ doc/src/Use.rst ํ์ผ์ ์ฐธ๊ณ ํ์ธ์
1. ํ์ผ ํฌ๋งท ๋ณ๊ฒฝ (ps, pdf, eps)
// PostScript to png
sCommand.Format(_T(" -dNOPAUSE -dBATCH -dSAFER -sDEVICE=pngalpha -sOutputFile=\"%s\" \"%s\""), sOutFileFile, sInFileFile);
// PostScript to jpg
sCommand.Format(_T(" -dNOPAUSE -dBATCH -dSAFER -sDEVICE=jpeg -sOutputFile=\"%s\" \"%s\""), sOutFileFile, sInFileFile);
// DPI์ค์ ์ -r์ซ์๋ก ex) -r300 = 300dpi
2. ์ด๋ฏธ์ง ๊ฐ์ ์๋ฅด๊ธฐ
sCommand.Format(_T(" -dDEVICEWIDTHPOINTS=%d -dDEVICEHEIGHTPOINTS=%d -dFIXEDMEDIA -dNOPAUSE -dBATCH -sDEVICE=pngalpha -sOutputFile=\"%s\" \"%s\""), 500, 500, sOutFileFile, sInFileFile);
// ์ด๋ฏธ์ง๋ฅผ ์๋ฅผ ๋ ํ์ด์ง ํฌ๊ธฐ์ ๋ง๊ฒ ์ด๋ฏธ์ง๋ฅผ fit ํ๋ ค๋ฉด -dPDFFitPage ์ต์
์ ์ถ๊ฐํฉ๋๋ค.
3. ํน์ ํ์ด์ง ๋ณํ (ps, pdf, eps)
// PostScript to png (2page)
sCommand.Format(_T(" -dNOPAUSE -dBATCH -dSAFER -dFirstPage=2 -sDEVICE=pngalpha -sOutputFile=\"%s\" \"%s\""), sOutFileFile, sInFileFile);
// pdf๋ ํ์ด์ง ๊ฐ๋
์ด ์์ด์ ์ผ๋ฐ์ ์ผ๋ก๋ 1ํ์ด์ง๋ง ๋ณํ๋๋๋ฐ FirstPage๋ฅผ ์ค์ ํ์ฌ ๋ค๋ฅธํ์ด์ง๋ฅผ ์ถ๋ ฅํ ์ ์์ต๋๋ค.
๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ด์ฉํด์ผ๋ผ์ ๋ง์๋๋ก ์ด๋ฏธ์ง๋ฅผ ์ ์ดํ ์๋ ์์ง๋ง ๋จ์ํ ์์ ๋ค์ ์ถฉ๋ถํ ํ์ฉ๊ฐ๋ฅํฉ๋๋ค.
์์ ๋ ์ด์ ๋๋ง ์ค๋ช ํด๋๋ฆฌ๊ณ ๋ค๋ฅธ ๊ธฐ๋ฅ์ด ํ์ํ์ ๊ฒฝ์ฐ
Ghostscript/doc/src/Use.rst ํ์ผ์ ์ฐธ๊ณ ํ์ฌ ๊ตฌํํ์๊ธธ ๋ฐ๋๋๋ค.
๋๊ธ