计算机系统应用教程网站

网站首页 > 技术文章 正文

使用Aspose.Words将Word转PDF aspose word转pdf

btikc 2024-10-26 08:48:29 技术文章 7 ℃ 0 评论

起因

在项目中(2018年)用Office Com组件读取Word遇到很奇怪的问题,在一台机器(Windows XP系统)偶尔出现假死的情况,而异常没有捕获到.所以想尝试替换该组件.

因为项目是.Net Framework 3.5,可选的组件不多,最终在项目中使用第二种方式.在操作word/excel最好不好使用.Net自带Office的组件,因为该组件是要安装Office的,在客户电脑上可能安装WPS办公的.

使用Aspose.Words组件将word转pdf

使用老版Aspose.Words在doc转pdf的时候,发现pdf文件的样式总是出现对不齐.

1.第一种方式

aspose.words.nodecollection tables = doc.getchildnodes(nodetype.table, true);
for (int i = 0; i < tables.count - 1; i++)
{
    rowcollection rows = (tables[i] as aspose.words.tables.table).rows;
    foreach (aspose.words.tables.row row in rows)
    {
        cellcollection cells = row.cells;
        foreach (aspose.words.tables.cell cell in cells)
        {
            string txt = cell.gettext().replace("\a", "");    //将\a替换为空
            cell.firstparagraph.remove();
            aspose.words.paragraph p = new aspose.words.paragraph(doc);
            p.appendchild(new run(doc, txt));
            cell.appendchild(p);
        }
    }
}

2. 第二种方式,将doc升级为docx,主要使用

Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:fff"));

Aspose.Words.Document doc = new Aspose.Words.Document("提取pdf.docx");  //加载docx文档
DocumentBuilder builder = new DocumentBuilder(doc);

//替换文本
doc.Range.Replace("$title", "测试检查", false, false);
doc.Range.Replace("$dyrq", DateTime.Now.ToString("yyyy-MM-dd"), false, false);

//使用书签
builder.MoveToBookmark("qm1");
builder.InsertImage("1.jpg", 50, 30);

Guid guid = Guid.NewGuid();
doc.Save(string.Format("{0}.doc", guid), SaveFormat.Doc);   //生成doc
doc.Save(string.Format("{0}.pdf", guid), SaveFormat.Pdf);   //生成pdf
doc.Print();                                                //打印,可以指定打印机

Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:fff"));

个人能力有限,如果您发现有什么不对,请私信我

如果您觉得对您有用的话,可以点个赞或者加个关注,欢迎大家一起进行技术交流

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表