使用Aspose Words用条形码替换页码

时间:2017-07-09 18:32:39

标签: c# aspose aspose.words

这可能是一个愚蠢的问题,但我无法找到答案,过了一天我转向社区寻求帮助......

我正在使用Aspose for Word(C#或.Net),我正在尝试替换为我自己创建的条形码图像生成的页面编号。我目前可以使用字体来完成它但是我发现它们对我的条形码阅读器不太可靠,因此需要能够从页面编号中读取值并将其替换为我自己创建的图像。

所以我真的需要找到编号容器,读取其中的值并替换它。一旦我创建条形码并插入它很容易。

有人可以帮忙吗?

目前的方法(对不起它很乱,但我一直在尝试新事物):

internal static void SetFooters(ref Document doc)
    {
        doc.FirstSection.HeadersFooters.LinkToPrevious(false);
        var builder = new DocumentBuilder(doc);
        builder.MoveToDocumentStart();
        Section currentSection = builder.CurrentSection;
        PageSetup pageSetup = currentSection.PageSetup;
        int totalPages = doc.PageCount;
        int j = 1;
        foreach (Section sect in doc.Sections)
        {
            //Loop through all headers/footers
            foreach (HeaderFooter hf in sect.HeadersFooters)
            {
                if (
                hf.HeaderFooterType == HeaderFooterType.FooterPrimary || hf.HeaderFooterType == HeaderFooterType.FooterEven || hf.HeaderFooterType == HeaderFooterType.FooterFirst)
                {
                    builder.MoveToHeaderFooter(hf.HeaderFooterType);
                    Field page = builder.InsertField("PAGE");
                    builder.Document.UpdatePageLayout();
                    try
                    {
                        page.Update();
                    }
                    catch { }

                    int pageNumber = j;
                    if (int.TryParse(page.Result, out pageNumber))
                    { j++; }
                    // Remove PAGE field.
                    page.Remove();
                    builder.Write(string.Format("{0}/{1}", pageNumber, totalPages));
                }
            }
        }
    }

1 个答案:

答案 0 :(得分:0)

HeaderFooter是一个节级节点,只能是Section的子节点。页眉/页脚内的页面字段返回最新更新的值,对于节的所有页面,它将是相同的值。

在您的情况下,我建议您在每个页面的顶部/底部插入文本框,并在其中插入所需的内容。下面的代码示例在文档的每个页面上插入文本框,并在其中插入页面字段和一些文本。希望这对你有所帮助。

{{1}}

我与Aspose一起担任开发人员传播者。