本次程序编写主要为了将pdf word等文档转换为图片后设置不同的打印排版

前提 目标文件夹中的图片高宽都是一致的

        /// <summary>
/// 合并图片
/// </summary>
/// <param name="savedictory">文件保存目录</param>
/// <param name="singlePageNumber">单页排版</param>
/// <param name="path">文件列表</param>
///
public static void MergedImage(string[] path, SinglePageNumber singlePageNumber,string savedictory)
{
//获取目录路径列表
var i = path.Length % (int)singlePageNumber > 0 ? (path.Length / (int)singlePageNumber + 1) : path.Length / (int)singlePageNumber;
for (int s = 0; s < i; s++)
{
List<Bitmap> bitmapList = new List<Bitmap>();
List<string> imgPathTake = path.Skip((s - 1) * (int)singlePageNumber).Take((int)singlePageNumber).ToList();
foreach (var pathItem in imgPathTake)
bitmapList.Add(new Bitmap(pathItem));
//2=1x2 4=2x2 6=2x3 9=3x3 16=4x4
Bitmap map = null;
switch (singlePageNumber)
{
case SinglePageNumber.two:
map = mergeImage(2, 1, bitmapList);
break;
case SinglePageNumber.four:
map = mergeImage(2, 2, bitmapList); break;
case SinglePageNumber.six:
map = mergeImage(3, 2, bitmapList); break;
case SinglePageNumber.nine:
map = mergeImage(3, 3, bitmapList); break;
case SinglePageNumber.Sixteen:
map = mergeImage(4, 4, bitmapList);
break;
default:
break;
}
map.Save(savedictory + "\\" + s+".png");
} }
/// <summary>
/// 合并图片文件 传入的图片宽高要一致
/// </summary>
/// <param name="wi">一排有几张</param>
/// <param name="hi">一列有几张</param>
/// <param name="mapList"></param>
public static Bitmap mergeImage(int wi, int hi, List<Bitmap> mapList)
{ int width = mapList.First().Width;
int height = mapList.First().Height;
Bitmap bitmap = new Bitmap(width * wi, height * hi);
//x表示图片在第几行y表示图片在第几列
int mapIndex = 0;
for (int y = 1; y <= hi; y++)
{
for (int x = 1; x <= wi; x++)
{
if (mapIndex == mapList.Count )
{
foreach (var item in mapList)
item.Dispose();
return bitmap;
}
var map = mapList[mapIndex];
mapIndex++;
for (int w = 1; w <= width; w++)
for (int h = 1; h <= height; h++)
{
var color = map.GetPixel(w - 1, h - 1);
bitmap.SetPixel(((x-1)*width)+w - 1, ((y - 1) * height) + h - 1, color);
} }
}
foreach (var item in mapList)
item.Dispose();
return bitmap; }
    /// <summary>
/// 每版打印几页 单页的不用处理
/// </summary>
public enum SinglePageNumber {
two = 2,
four = 4,
six = 6,
nine = 9,
Sixteen = 16,
}

  

  

设置图片排版为2*3的效果

     string dictory = @"D:\test\testpdf2convert\";
string[] path = System.IO.Directory.GetFiles(dictory);
ImagePrintHp.MergedImage(path, SinglePageNumber.six, dictory);

  效果

2*2效果

C#合并文件夹图片列表 自定义排版顺序的更多相关文章

  1. PDF 补丁丁 0.4.1.804 测试版发布:合并文件夹的图片和PDF文件,自由生成多层次书签

    新的测试版增强了合并文件的功能,可以合并文件夹内的图片和PDF文件,还可以在合并文件列表上直接指定与合并文件对应的PDF书签标题.通过拖放文件项目生成多层次的PDF书签.如下图所示: 另外,新的测试版 ...

  2. 152-技巧-Power Query 快速合并文件夹中表格之自定义函数 TableXlsxCsv

    152-技巧-Power Query 快速合并文件夹中表格之自定义函数 TableXlsxCsv 附件下载地址:https://jiaopengzi.com/2602.html 一.背景 在我们使用 ...

  3. windows合并文件夹窗口

      windows合并文件夹窗口 CreateTime--2017年7月26日16:28:14Author:Marydon 右击任务栏-->属性-->任务栏按钮选项-->选择“始终合 ...

  4. Python win32com模块 合并文件夹内多个docx文件为一个docx

    Python win32com模块 合并文件夹内多个docx文件为一个docx #!/usr/bin/env python # -*- coding: utf-8 -*- from win32com. ...

  5. Winform文件夹图片批量压缩整理修改

    效果图: 窗体设计器生成的代码: namespace ImageCompact { partial class MainForm { /// <summary> /// 必需的设计器变量. ...

  6. android红米等关于读取本地文件夹图片获取路径的问题的解决

    在Android开发中,有从本地文件夹中读取图片的功能,使用一下代码打开图片选择列表: Intent intent = new Intent();   intent.setAction(Intent. ...

  7. iOS-iOS 获取蓝色文件夹图片

    Xcode创建的iOS项目内存在两种文件夹:Group(黄色, 伪文件夹) 和Folder(蓝色, 真文件夹): Group: Folder: Images.xcassets或Group文件夹内的PN ...

  8. Python - 调用接口合并文件夹下多个Excel表

    在工作中经常遇到需要打开许多个excel表格,然后合并的需求,合并的同时要求格式必须原汁原味的保留.利用VBA代码可以比较轻松的解决,现在我们来看Python中如何实现. 上代码: from open ...

  9. 用 OUTLOOK VBA 生成 自定义文件夹 邮件列表

    Option Explicit Sub TestFolder() 'Dim outlookapp, myitem, myfolder 'Dim mailcounts As Integer ' ' 'S ...

随机推荐

  1. 微博与Redis系统技术文章记录

    Redis 持久化,有两种: rdb 和 aof, rdb是记录一段时间内的操作,一盘的配置是一段时间内操作超过多少次就持久化. aof可以实现每次操作都持久化. 这里我们使用aof. 配置方式,打开 ...

  2. Android studio 中NameValuePair跟BasicNameValuePair 不能正常导包问题

    Android studio 中NameValuePair跟BasicNameValuePair 不能正常导包问题 针对一个post请求,android studio中无法正常导入以下两个包: imp ...

  3. python pandas.Series&&DataFrame&& set_index&reset_index

    参考CookBook :http://pandas.pydata.org/pandas-docs/stable/cookbook.html Pandas set_index&reset_ind ...

  4. 职场菜鸟初窥Ant

    对于新入职的新人来说,学校的那一套东西于实际的工作根本不够.诸多的技术知识还得自己去慢慢掌握和理解.对于项目的发布笔者以前也就仅仅使用开发工具集成的发布功能,并未使用过Ant进行项目的发布.因此需要做 ...

  5. JSON字符串转换为Map

    本文是利用阿里巴巴封装的FastJSON来转换json字符串的.例子如下: package com.zkn.newlearn.json; import com.alibaba.fastjson.JSO ...

  6. 【PHP 】伪静态 - 4. 实际运用

    伪静态的实际运用 1. 在一个项目中有两个文件夹,public和private, public文件夹的图片可以被所有人访问,private只能被自己访问.如何实现? 第一个方法是: 在public和p ...

  7. 算法(第四版)学习笔记之java实现希尔排序

    希尔排序思想:使数组中随意间隔为h的元素都是有序的. 希尔排序是插入排序的优化.先对数组局部进行排序,最后再使用插入排序将部分有序的数组排序. 代码例如以下: /** * * @author seab ...

  8. 怎样增加Dave 英语学习小组

    一.     增加小组 英语对IT 是非常重要的,但非常多人都不能坚持去学习,Dave 英语学习小组成立与已经超过半年,如今进行扩招.欢迎想提高英语,而且能够坚持每天学习的人,增加Dave 的小组.并 ...

  9. MVC 之 属性详解

    一.System [AttributeUsage]:指定另一特性类的用法.无法继承此类. [CLSCompliant]:指示程序元素是否符合公共语言规范 (CLS).无法继承此类. [ContextS ...

  10. PHP 表单 - 3(PHP 表单 - 必需字段)

    PHP 表单 - 必需字段 本章节我们将介绍如何设置表单必需字段及错误信息. PHP - 必需字段 在上一章节我们已经介绍了表的验证规则,我们可以看到"名字", "E-m ...