使用Aspose.Words将Word转PDF

起因


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

使用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"));
秋风 2018-04-12