本次程序编写主要为了将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. mahout源码KMeansDriver分析之四

    昨天说到为什么Configuration没有设置conf.set("mapred.job.tracker","hadoop:9000")仍然可以访问hdfs文件 ...

  2. js list数据 转 树状 层级 JSON,递归生成树状 层级 JSON

    <!DOCTYPE html> <html> <head> <script> var data=[ {"id":"aaa& ...

  3. maven 将jar 下载到工程当前目录下

    在 pom.xml 的目录下,运行cmd命令 : call mvn -f pom.xml dependency:copy-dependencies 然后在同一目录下出现文件夹target,内容就是ja ...

  4. Proguard随笔

    - ProGuard是一个压缩.优化和混淆Java字节码,它能够删除字节码中无用的类.字段.方法和无用的凝视,还能够对类.字段.方法和属性进行混淆. - 字节码事实上包括了大量的调试信息,从而非常ea ...

  5. InitialContext和lookup(转)

    原文地址:http://wxg6203.iteye.com/blog/680830 最近因为工作需要开始学习Ejb3,遇到了一个让我很郁闷的事情,做一下小小的总结——小心new InitialCont ...

  6. PyQt5教程——介绍(1)

    PyQt5教程阅读须知 “PyQt5教程”系列若不做明显提示,默认翻译自zetcode. 有需要翻译精度的朋友可以自行阅读英文文档. 如果本系列博文侵犯了您的合法权益,请在博客中留下评论或联系:che ...

  7. poj 1286 Necklace of Beads &amp; poj 2409 Let it Bead(初涉polya定理)

    http://poj.org/problem?id=1286 题意:有红.绿.蓝三种颜色的n个珠子.要把它们构成一个项链,问有多少种不同的方法.旋转和翻转后同样的属于同一种方法. polya计数. 搜 ...

  8. Linux学习笔记——Ubuntu更新软件源

    0.前言     通过改动ubuntu软件源可提高apt命令下载安装软件的速度.     參考资料     [官方资料]--配置文件改动方法     [Ubuntu如何改动软件源地址]--使用ubun ...

  9. 算法笔记_172:历届试题 波动数列(Java)

    目录 1 问题描述 2 解决方案   1 问题描述 问题描述 观察这个数列: 1 3 0 2 -1 1 -2 ... 这个数列中后一项总是比前一项增加2或者减少3. 栋栋对这种数列很好奇,他想知道长度 ...

  10. Discuz的sc 和tc版本有什么区别

    Discuz的sc 和tc版本有什么区别 简单的来说: sc 是tc 是繁体中文 简体中文Simplified Chinese 繁体中文traditional Chinese