我有一个很大的PDF目录,其中包含超过50K的零件号。想要编写一个将零件编号转换为可点击链接的过程。一直在与Acrobat,iTextSharp,PDFSharp和其他一些工具一起窥视,但是似乎无法查看以前是否做过类似的事情?

我需要手动更新每个链接,还是有希望实现此过程的自动化?

谢谢!

最佳答案

使用Docotic.Pdf library可以轻松完成此任务。

该库可以检索页面中带有边界矩形的所有单词。同样,该库可以在PDF页面的指定位置创建超链接。

这是您的任务的简短示例。以下代码打开指定的文件,查找所有以L开头的单词,并将这些单词“转换”为链接。

public static void makeWordsHyperlinks(string file, string outputFile)
{
    using (PdfDocument pdf = new PdfDocument(file))
    {
        foreach (PdfPage page in pdf.Pages)
        {
            PdfCollection<PdfTextData> words = page.GetWords();
            foreach (PdfTextData word in words)
            {
                // let's take anything starting from L
                // you can discriminate words as you like, of course
                if (word.Text.StartsWith("L", StringComparison.InvariantCultureIgnoreCase))
                {
                    // build lookup query. you can use any url, of course
                    string lookupUrl = string.Format(@"https://www.google.ru/#q={0}", word.Text);

                    // let's draw rectangle around word.
                    // just to make links easier to find
                    page.Canvas.DrawRectangle(word.Bounds, PdfDrawMode.Stroke);

                    page.AddHyperlink(word.Bounds, new Uri(lookupUrl));
                }
            }
        }

        pdf.Save(outputFile);
    }
}


我假设您的零件编号是XXX-YYYYY。如果您的零件号由几个单词组成,那么任务会有点困难。您将需要组合单词及其边界矩形。

免责声明:我为图书馆的供应商工作。

关于c# - PDF将零件号转换为链接,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11835446/

10-13 01:16