• 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:WindowsFontssimsun.ttc,0", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
                    #region 目录
                    {
                        document.Add(new iTextSharp.text.Paragraph("
    
    
    "));</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("
    
    "));
                        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}
    
    ", (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}
    
    ", (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] + "
    
    ", 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>


     

    学无先后,达者为师
  • 相关阅读:
    [jQuery学习系列六]6-jQuery实际操作小案例
    [Java拾遗一] XML的书写规范与解析.
    [数据库操作]Java中的JDBC的使用方法.
    [Java拾遗二]Tomact及Http 部分总结.
    [Java拾遗三]JavaWeb基础之Servlet
    [Java拾遗四]JavaWeb基础之Servlet_Request&&Response
    [Java拾遗五]使用Session防止表单重复提交
    [数据库连接池] Java数据库连接池--DBCP浅析.
    [开发工具]Java开发常用的在线工具
    [数据库连接池二]Java数据库连接池--C3P0和JDNI.
  • 原文地址:https://www.cnblogs.com/seanchang/p/5202751.html
Copyright © 2020-2023  润新知