文档管理系统中 ,扫描模块将文档或证件扫描后。为了便于保存多个图片,拟将多个图片生成一个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. Android Studio:Error:Execution failed for task ':app:mergeDebugResources'. > Some file crunching failed, see logs for details

    Gradle 编译错误: 14:39:58 Executing tasks: [clean, :app:generateDebugSources, :app:mockableAndroidJar, : ...

  2. oracle修改字符集后数据库不能启动

    最近在做修改字符集的实验,悲剧的是修改后重启,数据库启动不了. SQL> alter system set nls_language='AMERICAN'   scope = spfile; S ...

  3. RMAN-configure命令

    在Oracle 10g中的配置情况 使用RMAN>show all; 可以显示出RMAN 配置参数为: CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # ...

  4. css画下图

    通常我看到这种效果,都是直接ps解决,但是不断重申性能的今天,显然不适应时代的需求啊! 今天看到群里有人问这种效果怎么做了,我在思考的时候,有人已经给出答案了: 我就测试了一下,发现确实可以实现,总结 ...

  5. ASP.Net MVC与WebForm的区别

  6. Java数据结构漫谈-Stack

    Stack(栈)是一种比较典型的数据结构,其元素满足后进先出(LIFO)的特点. Java中Stack的实现继承自Vector,所以其天然的具有了一些Vector的特点,所以栈也是线程安全的. cla ...

  7. visual studio 一直显示正在准备解决方案

    首先重启电脑,无法解决的情况下执行以下步骤: Kill Visual Studio Open Visual Studio without loading a solution Disable Ankh ...

  8. WCF入门教程系列四

    一.概述 配置也是WCF编程中的主要组成部分.在 以往的.net应用程序中,我们会把DBConn和一些动态加载类及变量写在配置文件里.但WCF有所不同.他指定向客户端公开的服务,包括服务的地址. 服务 ...

  9. 2、 Spark Streaming方式从socket中获取数据进行简单单词统计

    Spark 1.5.2 Spark Streaming 学习笔记和编程练习 Overview 概述 Spark Streaming is an extension of the core Spark ...

  10. ORACLE 数据库概述

    1,发展史: 1978年,Orcale诞生 1982年,Orcale3推出了,它是第一个能够运行在大型机和小型机上的关系型数据库 1997年,Orcale公司推出了基于java语言的Orcale8,并 ...