๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
C++, MFC

[C++ / MFC] Ghostscript ์˜ˆ์ œ (ํŒŒ์ผํฌ๋งท ๋ณ€ํ™˜, ์ด๋ฏธ์ง€ ์ž๋ฅด๊ธฐ, ํ•ด์ƒ๋„ ๋ณ€ํ™˜ ๋“ฑ ..)

by dev_drive 2023. 1. 6.
๋ฐ˜์‘ํ˜•

 

๐Ÿ”ฝ ๊ณ ์ŠคํŠธ ์Šคํฌ๋ฆฝํŠธ ๊ธฐ๋ณธ ์„ธํŒ…์€ ์ด์ „ ๊ธ€์„ ์ฐธ๊ณ ํ•ด์ฃผ์„ธ์š”.

 

[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 ํŒŒ์ผ์„ ์ฐธ๊ณ ํ•˜์—ฌ ๊ตฌํ˜„ํ•˜์‹œ๊ธธ ๋ฐ”๋ž๋‹ˆ๋‹ค.

 

 

๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€