使用itextsharp创建PDF文档——图片集合
文档管理系统中 ,扫描模块将文档或证件扫描后。为了便于保存多个图片,拟将多个图片生成一个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文档——图片集合的更多相关文章
- .net快速创建PDF文档 by c#
原文地址:http://www.cnblogs.com/Creator/archive/2010/03/13/1685020.html C#引用IText创建PDF文档 先引用IText 可以从 ...
- 利用ItextSharp 生成PDF文档改进版
导入的ItextSharp.dll一定要是较高的版本 数据库表结构 生成的PDF样式 代码: namespace WebPDF { public partial class _Default : Sy ...
- ABBYY FineReader 14创建PDF文档功能解析
使用ABBYY FineReader,您可以轻松查看和编辑任何类型的 PDF,真的是一款实至名归的PDF编辑转换器,您知道的,它能够保护.签署和编辑PDF文档,甚至还可以创建PDF文档,本文和小编一起 ...
- ABBYY PDF Transformer+从文件选项中创建PDF文档的教程
可使用OCR文字识别软件ABBYY PDF Transformer+从Microsoft Word.Microsoft Excel.Microsoft PowerPoint.HTML.RTF.Micr ...
- 基于iTextSharp的PDF文档操作
公司是跨境电商,需要和各种物流打交道,需要把东西交给物流,让他们发到世界各地.其中需要物流公司提供一个运单号,来追踪货物到达哪里?! 最近在和DHL物流公司(应该是个大公司)对接,取运单号的方式是调用 ...
- 【转载】 C#工具类:使用iTextSharp操作PDF文档
iTextSharp是一个用于操作PDF文件的组件DLL程序,在C#程序中可以引用iTextSharp组件,用于开发与PDF文件相关的报表等功能,利用iTextSharp组件提供出来的方法接口,我们可 ...
- iTextSharp生成pdf文档案例
1.using iTextSharp.text;using iTextSharp.text.pdf; 2.设置页面大小 iTextSharp.text.Rectangle pageSize = new ...
- C#创建PDF文档
说明:本实例用到了第三方组件ICSharpCode.SharpZipLib.dll.itextsharp.dll,该组件可到网上下载. 代码: using System; using System.C ...
- .net core 使用Rotativa创建PDF文档
一.下载Rotaiva 工具 = > NuGet包管理器 = > 管理解决方案的NuGet程序包 在打开的页面中搜索 Rotativa.AspNetCore 如下图: 选中红框的记 ...
随机推荐
- Java 内存区域和GC机制-java概念理解
推荐几篇关于java内存介绍的文章 Java 内存区域和GC机制 http://www.cnblogs.com/hnrainll/archive/2013/11/06/3410042.html ...
- poj 2251 Dungeon Master(bfs)
Description You are trapped in a 3D dungeon and need to find the quickest way out! The dungeon is co ...
- java 实例化是调用了子类重写方法
java 实例化时调用了抽象方法或者class里面某个方法,如果子类有重写改方法,实际运行的是子类重写方法 package auto.test; //抽象父类 public abstract clas ...
- testng xml 示例
TestNG的DTD检查文件:http://testng.org/testng-1.0.dtd.php 更多testng配置及说明,请移步http://testdoc.org/docmaster?pi ...
- [Javascript] lodash: memoize() to improve the profermence
Link: https://lodash.com/docs#memoize Example: .service('UserPresenter', function(UserConstants){ va ...
- 多路复用I/O epoll()
epoll 是Linux内核中的一种可扩展IO事件处理机制,最早在 Linux 2.5.44内核中引入,可被用于代替POSIX select 和 poll 系统调用,并且在具有大量应用程序请求时能够获 ...
- python - 执行父类中的方法
执行父类中的方法: class C1: def f1(self): print('c1.f1') return 123 class C2(C1): def f1(self): #主动执行父类的f1方法 ...
- DotNet程序汉化过程--SnippetCompiler准确定位
开篇前言 上一篇简单介绍了一下怎么汉化.Net程序,但那也仅仅是最基础的工作,要想汉化好一款软件基础我们得做扎实了,但是对于一些需要技巧的也不能不会啊,这一篇就介绍一下怎么准确定位字符串. 主要使用工 ...
- 使用Dataset
string sqlStr="Select * from Tb_news"; SqlDataAdapter myDa=new SqlDataAdapter(SqlStr,myCon ...
- 华为oj - 统计大写字母个数
练手而已. 给初学者参考 #include <stdio.h> #include <string.h> int main(void) { char string[200]={' ...