文档管理系统中 ,扫描模块将文档或证件扫描后。为了便于保存多个图片,拟将多个图片生成一个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. webpack的配置及使用

    webpack 安装 命令行输入 npm install webpack 配置文件 webpack.config.js moudule.exports = { //Import 入口文件 entry: ...

  2. .net的WebForm模拟MVC进行模型绑定,让自己少操劳

    一.前言 用过MVC的兄弟们都知道,MVC有模型绑定表单提交的数据功能,那么我也想偷个懒也写个WebForm版的模型绑定.这里主要定义一个泛型方法,然后通过反射把表单上对应属性名字的值赋值到反射创建类 ...

  3. AngularJs练习Demo12Provider

    @{ Layout = null; } <!DOCTYPE html> <html> <head> <meta name="viewport&quo ...

  4. 关于垂直切分Vertical Sharding的粒度

    转载原文地址 http://blog.csdn.net/bluishglc/article/details/6274841 垂直切分的粒度指的是在做垂直切分时允许几级的关联表放在一个shard里.这个 ...

  5. struts 标签引用出错

    几句句话概括 1.检查 web.xml  出现错误自己改 配置后filter  jsp-config 2.检查 tld 目录下的东西 是否缺少 3. 将包复制到web的lib目录下后    之后  b ...

  6. objective-C nil,Nil,NULL 和NSNull的小结

    nil用来给对象赋值(Object-C的任何对象都属于id类型),NULL则给任何指针赋值,NULL和nil不能互换,nil用于类指针赋值(在Object-C中类是一个对象,是类的meta-class ...

  7. OD学习笔记10:一个VB程序的加密和解密思路

    前边,我们的例子中既有VC++开发的程序,也有Delphi开发的程序,今天我们给大家分析一个VB程序的加密和解密思路. Virtual BASIC是由早期DOS时代的BASIC语言发展而来的可视化编程 ...

  8. Private Members in JavaScript

    Private Members in JavaScript Douglas Crockford www.crockford.com JavaScript is the world's most mis ...

  9. css 文本域textarea显示成label标签

    <html> <head>     <title>textarea显示为label</title> <style type="text/ ...

  10. CM3存储器系统

    1.位带(Bit-Band):如1M的地址都可以用bit访问,然后用32M的地址对应这1M的地址.其中这32M地址的每个字的最低位对应那1M可bit寻址的每个位.