代码写了两个小时,速度太慢(包括学习文档的时间)
cpp
#include <stdio.h>
#include <Windows.h>
#include <gdiplus.h>
#include <string.h>
using namespace Gdiplus;
#pragma comment(lib, "Gdiplus.lib")
enum {
IDLEN=30,
FNAME=IDLEN+5,//.pdf
};
int main(void) {
GdiplusStartupInput gsi;
ULONG_PTR tok;
GdiplusStartup(&tok,&gsi,nullptr);
HDC print=CreateDCA("WINSPOOL","Microsoft Print to PDF",nullptr,nullptr);
SetCurrentDirectoryA("D:\\pic2pdf");
WIN32_FIND_DATAW fd;
HANDLE hf=FindFirstFileW(L"*.jpg",&fd);
if (hf) {
puts("找到了jpg文件");
wchar_t f[FNAME];
wchar_t* p=wcschr(fd.cFileName,L'_');
wcsncpy(f,fd.cFileName,p-fd.cFileName);
wcscpy(p-fd.cFileName+f,L".pdf");
DOCINFOW doc{};
doc.cbSize=sizeof doc;
doc.lpszDocName=doc.lpszOutput=f;
StartDocW(print,&doc);
StartPage(print);
Graphics g(print);
while (true) {
Image img(fd.cFileName);
g.DrawImage(&img,0,0);
EndPage(print);
if (FindNextFileW(hf,&fd)) {
wchar_t f1[FNAME];
p=wcschr(fd.cFileName,L'_');
wcsncpy(f1,fd.cFileName,p-fd.cFileName);
wcscpy(p-fd.cFileName+f1,L".pdf");
if (wcscmp(f,f1)) {
EndDoc(print);
wprintf(L"%s\n",f);
wcscpy(f,f1);
StartDocW(print,&doc);
}
} else {
EndDoc(print);
wprintf(L"%s\n",f);
break;
}
};
}
return 0;
}