5 万を超える部品番号を含む非常に大きな PDF カタログがあります。パーツ番号をクリック可能なリンクに変換するプロセスをスクリプト化したいと考えています。Acrobat、iTextSharp、PDFSharp、およびその他のいくつかを調べてみましたが、以前にそのようなものが行われたかどうかはわかりませんか?
各リンクを手動で更新する必要がありますか? または、このプロセスを自動化する希望はありますか?
ありがとう!
5 万を超える部品番号を含む非常に大きな PDF カタログがあります。パーツ番号をクリック可能なリンクに変換するプロセスをスクリプト化したいと考えています。Acrobat、iTextSharp、PDFSharp、およびその他のいくつかを調べてみましたが、以前にそのようなものが行われたかどうかはわかりませんか?
各リンクを手動で更新する必要がありますか? または、このプロセスを自動化する希望はありますか?
ありがとう!
このタスクは、Docotic.Pdf ライブラリを使用して簡単に実行できます。
ライブラリは、ページからすべての単語を、境界を示す四角形で取得できます。また、ライブラリは、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 のようなものだと思います。部品番号が複数の単語で構成されている場合、作業は少し難しくなります。単語とその外接する四角形を組み合わせる必要があります。
免責事項: 私はライブラリのベンダーで働いています。