這個 HotPDF 示例展示如何在生成的 PDF 文件中放置可點選超連結。超連結看似只是小功能,但在發票、報表、產品資料、文件匯出以及需要把讀者帶回網站、訂單頁、支援表單或線上手冊的 PDF 中非常重要。
關鍵點是:可見文本和點選目標是兩個不同概念。PDF 可以顯示友好的標籤,而註釋目標指向完整 URL。實際應用中應保持兩者同步,讓使用者能看出連結會跳轉到哪裡。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
unit Main; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, StdCtrls, Forms, Dialogs, HPDFDoc; type TForm1 = class(TForm) HotPDF: THotPDF; HelloWorldButton: TButton; edtWeb: TEdit; edtProduct: TEdit; edtOrder: TEdit; edtContact: TEdit; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; procedure HelloWorldButtonClick(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.HelloWorldButtonClick(Sender: TObject); begin HotPDF.BeginDoc; HotPDF.CurrentPage.SetFont( 'Microsoft Sans Serif', [], 13 ); HotPDF.CurrentPage.TextOut(20,30,0,'Clickable links:'); HotPDF.CurrentPage.PrintHyperlink(20, 60, 'Company site: ' + edtWeb.Text, edtWeb.Text); HotPDF.CurrentPage.PrintHyperlink(20, 80, 'Product page: ' + edtProduct.Text, edtProduct.Text); HotPDF.CurrentPage.SetRGBHyperlinkColor(clRed); HotPDF.CurrentPage.PrintHyperlink(20, 100, 'Purchase link: ' + edtOrder.Text, edtOrder.Text); HotPDF.CurrentPage.SetRGBHyperlinkColor(clBlue); HotPDF.CurrentPage.PrintHyperlink(20, 120, 'Contact form: ' + edtContact.Text, edtContact.Text); HotPDF.EndDoc; end; end. |
適用場景
當連結在文件被郵件傳送、歸檔或從客戶門戶下載後仍應保持可用時,就適合使用 PDF 超連結。常見目標包括產品頁面、線上手冊、釋出說明、問題跟蹤系統、發票、許可證查詢頁面和文件驗證端點。
位置和樣式
PDF 連結本質上是放在頁面區域上的註釋。如果修改字型、文本位置、縮放或頁面座標系統,需要確認可點選矩形仍與使用者看到的文本對齊。即使 URL 正確,點選區域偏移幾畫素也會讓使用者感覺連結損壞。
顏色也是使用者體驗的一部分。藍色帶下劃線仍然是最清晰的網頁連結約定,但生成的報表有時需要更剋制的樣式。如果使用自定義顏色,周圍文本應足夠明確,讓讀者知道它可以點選。
驗證清單
- 公開文件使用完整的 HTTPS URL。
- 把使用者提供的 URL 寫入 PDF 前先驗證。
- 在多個 PDF 閱讀器中測試連結,因為不同閱讀器對註釋的處理可能不同。
- 修改頁面大小、頁邊距、字型或縮放後,重新檢查點選區域。
- 不要只用連結文字承載關鍵流程動作,應在 PDF 正文中提供上下文。
SEO 和文件分發提示
當 PDF 釋出到線上時,清晰的連結標籤能幫助使用者和搜尋引擎理解文件與目標資源的關係。優先使用“產品文件”或“客戶支援門戶”這類描述性文本,而不是“點選這裡”。