文档管理系统中 ,扫描模块将文档或证件扫描后。为了便于保存多个图片,拟将多个图片生成一个PDF文档进行保存。

这里我们就需要PDF生成工具了。你可以在这里下载。PDFCreator

主要使用了开源工具ITextSharp生成PDF文档。

测试界面如下:

选择图片,可多选

生成PDF

生成的PDF文件:

目前只是生成图片的pdf文件,至于更高级的应用的探索,以后写文章再说吧。

其中关键代码PDFCreator如下

using System;
using System.Collections.Generic;
using System.Text;
using System.IO; namespace PDFCreator
{
public class PDFCreator
{
iTextSharp.text.Document pdfdoc;
iTextSharp.text.Image pdfImg;
iTextSharp.text.pdf.PdfWriter pdfwriter; string tmpFilePath;
public PDFCreator()
{
pdfdoc = new iTextSharp.text.Document(); try
{
tmpFilePath = Environment.GetFolderPath(Environment.SpecialFolder.Personal) + @"\~tmpPdfCreatorFile.pdf";
if (File.Exists(tmpFilePath))
File.Delete(tmpFilePath);
pdfwriter = iTextSharp.text.pdf.PdfWriter.GetInstance(pdfdoc, new FileStream(tmpFilePath, FileMode.CreateNew));
pdfdoc.Open();
}
catch
{
throw new Exception("此文件已存在!");
}
}
public bool AddURIImage(string imageUrl)
{
try
{
//pdfdoc.Open();
pdfdoc.NewPage();
//String imageUrl = "http://jenkov.com/images/" +
// "20081123-20081123-3E1W7902-small-portrait.jpg";
pdfImg = iTextSharp.text.Image.GetInstance(new Uri(imageUrl));
pdfImg.Alignment = iTextSharp.text.Image.MIDDLE_ALIGN;
//pdfImg.SetAbsolutePosition(500f, 650f);
pdfdoc.Add(pdfImg); //pdfdoc.Close();
}
catch (Exception e)
{
return false;
}
return true;
} public bool AddImageFromFile(string imageFilePath)
{
try
{ pdfdoc.NewPage();
pdfImg = iTextSharp.text.Image.GetInstance(imageFilePath);
pdfImg.Alignment = iTextSharp.text.Image.MIDDLE_ALIGN;
// pdfImg.SetAbsolutePosition((iTextSharp.text.PageSize.POSTCARD.Width - pdfImg.ScaledWidth) / 2,
//(iTextSharp.text.PageSize.POSTCARD.Height - pdfImg.ScaledHeight) / 2);
// pdfwriter.DirectContent.AddImage(pdfImg);
pdfdoc.Add(pdfImg);
//pdfdoc.Close();
}
catch (Exception e)
{
return false;
}
return true;
} public void SaveToFile(string fileName)
{ //pdfwriter.Close();
//pdfwriter.Dispose();
pdfdoc.Dispose();
File.Copy(tmpFilePath, fileName, true);
File.Delete(tmpFilePath);
}
}
}

调用代码如下:

 private void btnCreatePDF_Click(object sender, EventArgs e)
{
SaveFileDialog sdiag = new SaveFileDialog();
sdiag.Filter = "PDF文档|*.pdf";
if (sdiag.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
PDFCreator creator = new PDFCreator();
foreach (object obj in listBox1.Items)
{
if (obj == null)
continue;
string imgFilePath = obj.ToString();
creator.AddImageFromFile(imgFilePath); }
//
creator.SaveToFile(sdiag.FileName);
}
}

你可以在这里下载。PDFCreator

使用itextsharp创建PDF文档——图片集合的更多相关文章

  1. .net快速创建PDF文档 by c#

    原文地址:http://www.cnblogs.com/Creator/archive/2010/03/13/1685020.html C#引用IText创建PDF文档 先引用IText    可以从 ...

  2. 利用ItextSharp 生成PDF文档改进版

    导入的ItextSharp.dll一定要是较高的版本 数据库表结构 生成的PDF样式 代码: namespace WebPDF { public partial class _Default : Sy ...

  3. ABBYY FineReader 14创建PDF文档功能解析

    使用ABBYY FineReader,您可以轻松查看和编辑任何类型的 PDF,真的是一款实至名归的PDF编辑转换器,您知道的,它能够保护.签署和编辑PDF文档,甚至还可以创建PDF文档,本文和小编一起 ...

  4. ABBYY PDF Transformer+从文件选项中创建PDF文档的教程

    可使用OCR文字识别软件ABBYY PDF Transformer+从Microsoft Word.Microsoft Excel.Microsoft PowerPoint.HTML.RTF.Micr ...

  5. 基于iTextSharp的PDF文档操作

    公司是跨境电商,需要和各种物流打交道,需要把东西交给物流,让他们发到世界各地.其中需要物流公司提供一个运单号,来追踪货物到达哪里?! 最近在和DHL物流公司(应该是个大公司)对接,取运单号的方式是调用 ...

  6. 【转载】 C#工具类:使用iTextSharp操作PDF文档

    iTextSharp是一个用于操作PDF文件的组件DLL程序,在C#程序中可以引用iTextSharp组件,用于开发与PDF文件相关的报表等功能,利用iTextSharp组件提供出来的方法接口,我们可 ...

  7. iTextSharp生成pdf文档案例

    1.using iTextSharp.text;using iTextSharp.text.pdf; 2.设置页面大小 iTextSharp.text.Rectangle pageSize = new ...

  8. C#创建PDF文档

    说明:本实例用到了第三方组件ICSharpCode.SharpZipLib.dll.itextsharp.dll,该组件可到网上下载. 代码: using System; using System.C ...

  9. .net core 使用Rotativa创建PDF文档

    一.下载Rotaiva 工具  = >  NuGet包管理器  = >  管理解决方案的NuGet程序包 在打开的页面中搜索 Rotativa.AspNetCore 如下图: 选中红框的记 ...

随机推荐

  1. Struts2小结

    Struts 2是在WebWork2基础发展而来的. 注意:struts 2和struts 1在代码风格上几乎不一样. Struts 2 相比Struts 1的优点: 1.在软件设计上Struts 2 ...

  2. Hive2.0函数大全(中文版)

    摘要 Hive内部提供了很多函数给开发者使用,包括数学函数,类型转换函数,条件函数,字符函数,聚合函数,表生成函数等等,这些函数都统称为内置函数. 目录 数学函数 集合函数 类型转换函数 日期函数 条 ...

  3. Android 按二次后退键退出应用程序

    前言          欢迎大家我分享和推荐好用的代码段~~ 声明          欢迎转载,但请保留文章原始出处:          CSDN:http://www.csdn.net        ...

  4. 3DShader之移位贴图(Displacement Mapping)

    我们知道法线贴图是只是改了物体的法线属性,用来计算光照,但是并没有改变物体本身的网格.但是移位贴图就不一样了,它会移动物体的顶点.我用移位贴图做了个海洋,好了,上了图再讲: 注意看海的边缘的顶点,已经 ...

  5. [RxJS] Handling a Complete Stream with Reduce

    When a stream has completed, you often need to evaluate everything that has happened while the strea ...

  6. IOS Layer的使用

    CALayer(层)是屏幕上的一个矩形区域,在每一个UIView中都包含一个根CALayer,在UIView上的所有视觉效果都是在这个Layer上进行的. CALayer外形特征主要包括: 1.层的大 ...

  7. Dynamics CRM 2016 使用Plug-in Trace Log调试插件

    1.写插件 首先,让我们写一个简单的插件来测试新插件跟踪日志功能.请注意,在下面的示例代码中,我们增加ITracingService的一个实例,以及记录有关插件的执行信息记录的一些键值: 2.注册插件 ...

  8. .Net的PDF转图片

    用的是破解版的 O2S.Components.PDFRender4NET.dll 插件, 简单引用即可 public static class PdfToImage { , , ) { try { / ...

  9. Oracle存储过程procedure

    --给plsql块设置一个名称保存下来便于调用 /* Create or replace procedure 名称 As 声明变量 Begin //代码块 End; --plsql块 Declare ...

  10. Silverlight Visifire控件 .net后台控制aspx页面控件的显示与隐藏,动态给控件赋值,选定默认值的设定

    .net后台代码: 控件的显示与隐藏: this.dateStart.Visibility = Visibility.Collapsed;//不显示控件 this.dateYear.Visibilit ...