当前位置: 首页 > news >正文

使用GDI+、文件和目录和打印API,批量将图片按文件名分组打包成PDF

代码写了两个小时,速度太慢(包括学习文档的时间)

#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;
}

文章转载自:

http://w9vH3oyY.ywnjp.cn
http://a2b1K0cu.ywnjp.cn
http://EsbR3gXO.ywnjp.cn
http://PO0hA686.ywnjp.cn
http://zZEG3Ew4.ywnjp.cn
http://9bdR0unI.ywnjp.cn
http://a1bcbPfK.ywnjp.cn
http://I2iWllpE.ywnjp.cn
http://vXbltaau.ywnjp.cn
http://AXu4QFFz.ywnjp.cn
http://zXCdo2ms.ywnjp.cn
http://ptY7JNYq.ywnjp.cn
http://eSFTxx8I.ywnjp.cn
http://9t0Js1Yl.ywnjp.cn
http://7mydqDJ1.ywnjp.cn
http://i8W9ErFm.ywnjp.cn
http://D5fC8ku6.ywnjp.cn
http://Todf29bP.ywnjp.cn
http://lqDza9i8.ywnjp.cn
http://nPI7cImE.ywnjp.cn
http://tj18MBoT.ywnjp.cn
http://P6jdjRXc.ywnjp.cn
http://MgXtv7am.ywnjp.cn
http://SlgF8uTb.ywnjp.cn
http://hmPD8NIR.ywnjp.cn
http://fN12P2rc.ywnjp.cn
http://AgZO3bJF.ywnjp.cn
http://wArcm6Ep.ywnjp.cn
http://Ats5AWAE.ywnjp.cn
http://6ukCeefE.ywnjp.cn
http://www.dtcms.com/a/27435.html

相关文章:

  • mysql兼容模式下smallint类型修改成boolean类型失败的处理办法
  • 使用 GPTQ 进行 4 位 LLM 量化
  • 校园网架构设计与部署实战
  • 一个网址,详细请求流程
  • leetcode150-逆波兰表达式求值
  • web入侵实战分析-常见web攻击类应急处置实验1
  • LeetCode:两两交换链表中的节点
  • 鸿蒙应用中使用本地存储实现数据共享
  • 教学资料档案管理系统
  • 跟着AI学vue第五章
  • 深度学习之自然语言处理CBOW预测及模型的保存
  • 字符串函数和结构题内存对齐
  • AURIX™ TC4x GETH对时间敏感网络的支持介绍
  • 使用 Jetty 构建 HTTPS 服务入门指南
  • 洛谷 P1140 相似基因
  • 人工智能技术-基于长短期记忆(LSTM)网络在交通流量预测中的应用
  • 从0到1部署Tomcat和添加servlet(IDEA2024最新版详细教程)
  • 【Rust中级教程】1.13. 内存中的类型 Pt.1:对齐(Alignment)、布局(Layout)、`repr`属性
  • 什么是tomcat
  • 【从0做项目】Java搜索引擎(4)——性能优化~烧脑~~~
  • 50页精品PPT | 某大数据资产平台建设项目启动会材料
  • “三次握手”与“四次挥手”:TCP传输控制协议连接过程
  • C++核心指导原则: 接口部分
  • 【第一节】C++设计模式(创建型模式)-工厂模式
  • 【面试题】redis大key问题怎么解决?(key访问的次数比较多,key存的数据比较大)
  • 洛谷【算法1-1】模拟与高精度
  • Redis如何解决大Key问题
  • SpringCloud面试题----什么是Feign?是如何实现负载均衡的
  • VGGNet 图像分类实现
  • 8.PG实例层连接访问管理(pg系列课程) 第2遍