itextsharp、Aspose.Words、Aspose.Cells联合使用
最近做了一个系统需要把文件转换为pdf然后把转换后的pdf合成一个pdf文件,网上搜索了半天,最终决定使用itestsharp.dll配合Aspose.words和Aspose.cells来做,废话少说,上代码……
#region 文件转换pdf
public void ConvertImageToPdf(string inputFileName, string outputFileName)
{
Aspose.Words.Document doc = new Aspose.Words.Document();
DocumentBuilder builder = new DocumentBuilder(doc);
using (System.Drawing.Image image = System.Drawing.Image.FromFile(inputFileName))
{
FrameDimension dimension = new FrameDimension(image.FrameDimensionsList[0]);
int framesCount = image.GetFrameCount(dimension);
for (int frameIdx = 0; frameIdx < framesCount; frameIdx++)
{
if (frameIdx != 0)
builder.InsertBreak(BreakType.SectionBreakNewPage);
image.SelectActiveFrame(dimension, frameIdx);
Aspose.Words.PageSetup ps = builder.PageSetup;
if (image.Width > 2000)
{
ps.PageWidth = ConvertUtil.PixelToPoint(image.Width / 2, image.HorizontalResolution);
ps.PageHeight = ConvertUtil.PixelToPoint(image.Height / 2, image.VerticalResolution);
}
else
{
ps.PageWidth = ConvertUtil.PixelToPoint(image.Width-300, image.HorizontalResolution);
ps.PageHeight = ConvertUtil.PixelToPoint(image.Height-100, image.VerticalResolution);
}
builder.InsertImage(image, RelativeHorizontalPosition.Page,100, RelativeVerticalPosition.Page, 0, ps.PageWidth, ps.PageHeight, WrapType.Inline);
}
}
doc.Save(outputFileName);
} //Word转换成pdf
/// <summary>
/// 把Word文件转换成为PDF格式文件
/// </summary>
/// <param name="sourcePath">源文件路径</param>
/// <param name="targetPath">目标文件路径</param>
/// <returns>true=转换成功</returns>
public bool DOCConvertToPDF(string sourcePath, string targetPath)
{
try
{
Aspose.Words.Document doc = new Aspose.Words.Document(sourcePath); doc.Save(targetPath, Aspose.Words.SaveFormat.Pdf);
return true;
}
catch (Exception ex)
{
return false;
}
} /// <summary>
/// 把Excel文件转换成PDF格式文件
/// </summary>
/// <param name="sourcePath">源文件路径</param>
/// <param name="targetPath">目标文件路径</param>
/// <returns>true=转换成功</returns>
public bool XLSConvertToPDF(string sourcePath, string targetPath)
{
try
{
Workbook workbook = new Workbook(sourcePath);
workbook.CreateStyle();
workbook.Save(targetPath, Aspose.Cells.SaveFormat.Pdf);
return true;
}
catch (Exception ex)
{
return false;
}
}
/// <summary>
/// txt转pdf
/// </summary>
/// <param name="sourcePath"></param>
/// <param name="targetPath"></param>
/// <returns></returns>
public bool TxtConvertToPDF(string sourcePath, string targetPath)
{
try
{
StreamReader reader = new StreamReader(sourcePath, Encoding.Default); //使用默认编码,否则转换后乱码
string text = reader.ReadToEnd();
Aspose.Words.Document doc = new Aspose.Words.Document();
Aspose.Words.DocumentBuilder builder = new DocumentBuilder(doc);
builder.Write(text);
doc.Save(targetPath, Aspose.Words.SaveFormat.Pdf);
reader.Close(); return true;
}
catch (Exception ex)
{
return false;
}
}
//Word转换成pdf
/// <summary>
/// 把Word文件转换成为PDF格式文件
/// </summary>
/// <param name="sourcePath">源文件路径</param>
/// <param name="targetPath">目标文件路径</param>
/// <returns>true=转换成功</returns>
public bool ConvertCebToPdf(string sourcePath, string targetPath)
{
try
{
Aspose.Words.Document doc = new Aspose.Words.Document(sourcePath); doc.Save(targetPath, Aspose.Words.SaveFormat.Pdf);
return true;
}
catch (Exception ex)
{
return false;
}
}
#endregion
<p>/// <summary>
/// 合并pdf
/// </summary>
/// <param name="fileList">pdf路径集合</param>
/// <param name="outMergeFile"></param>
public void mergePDFFiles(List<string> fileList, string outMergeFile, string headerText)
{
iTextSharp.text.Document document = new iTextSharp.text.Document(iTextSharp.text.PageSize.A4, 25, 25, 25, 25);
try
{
PdfWriter instance = PdfWriter.GetInstance(document, new FileStream(outMergeFile, FileMode.Create));
document.Open();
PdfContentByte directContent = instance.DirectContent;
BaseFont baseFont = BaseFont.CreateFont(@"C:\Windows\Fonts\simsun.ttc,0", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
#region 目录
{
document.Add(new iTextSharp.text.Paragraph("\r\r\r"));</p><p> iTextSharp.text.Paragraph p1 = new iTextSharp.text.Paragraph(new Phrase(headerText, new iTextSharp.text.Font(baseFont)));
p1.Alignment = iTextSharp.text.Rectangle.ALIGN_CENTER; //居中
document.Add(p1);
document.Add(new iTextSharp.text.Paragraph("\r\r"));
int num = 2;
for (int i = 0; i < fileList.Count; i++)
{
PdfReader pdfReader = new PdfReader(fileList[i].Split('$')[0]);
int numberOfPages = pdfReader.NumberOfPages;
string text = string.Format("{0}. {1}{2}\n\n", (i + 1), fileList[i].Split('$')[2].PadRight((80 - fileList[i].Split('$')[2].Length), '.'), num);
iTextSharp.text.Anchor anchor = new iTextSharp.text.Anchor(text, new iTextSharp.text.Font(baseFont));
anchor.Reference = "#link" + i;
document.Add(anchor);
num += numberOfPages;
}
/*for (int i = 0; i < fileList.Count; i++)
{
PdfReader pdfReader = new PdfReader(fileList[i].Split('$')[0]);
string text = string.Format("{0}. {1}\n\n", (i + 1), fileList[i].Split('$')[2]);
iTextSharp.text.Anchor anchor = new iTextSharp.text.Anchor(text, new iTextSharp.text.Font(baseFont));
anchor.Reference = "#link" + i;
document.Add(anchor);
}*/</p><p> }
#endregion</p><p> #region 页码
{
iTextSharp.text.HeaderFooter footer = new iTextSharp.text.HeaderFooter(new iTextSharp.text.Phrase("Page:"), true);
footer.Border = iTextSharp.text.Rectangle.TITLE;
document.Footer = footer;
}
#endregion</p><p> #region 文件合并
int nn = 0;
for (int i = 0; i < fileList.Count; i++)
{
document.NewPage();
PdfReader pdfReader = new PdfReader(fileList[i].Split('$')[0]);
//添加锚点
Anchor anchor = new Anchor((i + 1) + "、 " + fileList[i].Split('$')[2] + "\n\n", new iTextSharp.text.Font(baseFont));
anchor.Name = "link" + i;
document.Add(anchor);</p><p> int numberOfPages = pdfReader.NumberOfPages;
for (int j = 1; j <= numberOfPages; j++)
{
if (nn == numberOfPages)
document.NewPage();
PdfImportedPage importedPage = instance.GetImportedPage(pdfReader, j);
directContent.AddTemplate(importedPage, 0f, 0f);
nn = numberOfPages;
}</p><p> }
#endregion
document.Close();
}
catch (Exception ex)
{
document.Close();
}
}</p>
itextsharp、Aspose.Words、Aspose.Cells联合使用的更多相关文章
- EpPlus读取生成Excel帮助类+读取csv帮助类+Aspose.Cells生成Excel帮助类
大部分功能逻辑都在,少量自定义异常类和扩展方法 ,可用类似代码自己替换 //EpPlus读取生成Excel帮助类+读取csv帮助类,epplus只支持开放的Excel文件格式:xlsx,不支持 xls ...
- 关于Aspose对于Word操作的一些扩展及思考
Aspose.word Aspose.Words是一款先进的类库,通过它可以直接在各个应用程序中执行各种文档处理任务.Aspose.Words支持DOC,OOXML,RTF,HTML,OpenDocu ...
- Aspose系列实现docx转PDF,PPT转PDF,EXCEL转PDF
没有什么营养,就是调用一下这个组件.其实一开始用的是Microsoft.Office.Interop.Excel;Microsoft.Office.Interop.Word 但是在服务器要注意,服务器 ...
- Java使用Aspose组件进行多文档间的转换操作
首先,祝大家新年快乐,2019诸事顺利,很久没有更新博客,今天要给大家说的是 ”Aspose“ 组件,作为2019年第一篇博客,希望大家能够多多支持,2019年要继续加油. 什么是Aspose? As ...
- aspose words 介绍
Aspose.Words是一个商业.NET类库,可以使得应用程序处理大量的文件任务.Aspose.Words支持Doc,Docx,RTF,HTML,OpenDocument,PDF,XPS,EPUB和 ...
- Aspose最新版文档格式转换使用破解
Aspose简介 Aspose.Total是Aspose公司旗下全套文件格式处理解决方案,提供最完整.最高效的文档处理解决方案集,无需任何其他软件安装和依赖.主要提供.net.java.C++d三个开 ...
- net 预览文件 转换文件
预览SWF文件 swfobject.js (google浏览器 会阻止 需设置) @{ ViewBag.Title = "PdfPreview"; Layout = " ...
- 【狼窝乀野狼】Excel那些事儿
在工作中我们常常遇到Excel表格,不管是数据的导入导出,还是财务统计什么都,都离不开Excel,Excel是我见过的最牛逼的一个软件(可能我的见识少)没有之一:如果你只停留在Excel处理数据,统计 ...
- [Asp.net] C# 操作Excel的几种方式 优缺点比较
在项目中我们常常需要将数据库中的数据导出成Excel文件 有一次工作中我的目的就是读取Excel到内存中,整理成指定格式 整理后再导出到Excel. 因为我要处理的每个Excel表格文件很大.一个表格 ...
随机推荐
- JSTL标准标签库
有时使用EL和标准动作达不到目的,于是就引入定制标记. 对于JSP页面创作人员来说,定制标记使用起来比脚本要容易一些.不过对于JAVA程序员来说,简历定制标记处理器反而更困难.幸运的是,已经有了一个标 ...
- CodeForces 534D Program B
Description On February, 30th n students came in the Center for Training Olympiad Programmers (CTOP) ...
- 建议入门-用ArcMap进行空间查询与空间连接
1.打开arcmap并导入数据(如本图导入美国地图(usa.mxd)): 2.空间查询操作,在地图上的某片区域点击右键,得到下图,点击identify,此时我在阿拉斯加上面点击的 地图会闪现一下被查询 ...
- linux exec用法总结
Linux中exec的用法总结 先总结一个表: exec命令 作用 exec ls 在shell中执行ls,ls结果显示结束后不返回原来的的目录中,而是/(根目录) exec <file 将fi ...
- 【温故知新C/C++/opencv】取址符&||cv::groupRectangles||引用与值传递
cv::groupRectangles void groupRectangles(vector<Rect>& rectList, int groupThreshold, doubl ...
- 算法导论 第六章 思考题 6-3 d叉堆
d叉堆的实现相对于二叉堆变化不大,首先看它如何用数组表示. 考虑一个索引从1开始的数组,一个结点i最多可以有d个子结点,编号从id - (d - 2) 到 id + 1. 从而可以知道一个结点i的父结 ...
- UIkit框架之Uivew
1.继承链:UIresponder:NSObject 2.通过使用 addGestureRecognizer:方法可以为视图添加手势 3.下面的属性都可以用来用于动画 @property frame ...
- Interview----判断整数序列是否是二叉搜索树的后序遍历结果
题目:输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果. 如果是返回true,否则返回false. 例如输入5.7.6.9.11.10.8,由于这一整数序列是如下树的后序遍历结果: ...
- PHP输出缓冲控制
说到输出缓冲,首先要说的是一个叫做缓冲器(buffer)的东西.举个简单的例子说明他的作用:我们在编辑一篇文档时,在我们没有保存之前,系统是不会 向磁盘写入的,而是写到buffer中,当buffer写 ...
- 浅谈Android应用性能之内存
本文来自http://blog.csdn.net/liuxian13183/ ,引用必须注明出处! 文/ jaunty [博主导读]在Android开发中,不免会遇到许多OOM现象,一方面可能是由于开 ...