2013-02-05 36 views
8

Với XSL-FO (Fop), tôi đã thành công trong việc tạo ra một liên kết đến một PDF bên ngoài:FOP XSL-FO Neo trong một điểm đến bên ngoài

<fo:basic-link show-destination="new"> 
<xsl:attribute name="external-destination">foo.pdf</xsl:attribute> 
</fo:basic-link> 

Nhưng bây giờ, tôi muốn đạt được neo ở đây PDF bên ngoài. Vì vậy, tôi đã cố gắng xây dựng một cái gì đó như thế:

<fo:basic-link show-destination="new"> 
<xsl:attribute name="external-destination">foo.pdf#anchorId</xsl:attribute> 
</fo:basic-link> 

Thật không may, khi tôi nhấp vào liên kết được tạo, tôi gặp lỗi. Nó cố mở tài liệu foo.pdf% 23anchorId.

Trong file .fo của tôi, liên kết là đúng với một # nhưng # này được hiểu sai trong việc chuyển đổi PDF.

Bạn có ý tưởng để giải quyết vấn đề này không?

Cảm ơn,

Johann

Trả lời

11

Đối FOP chúng ta có hai liên kết: Internal và External.

Đối với bên ngoài bạn có thể sử dụng:

<fo:basic-link 
    external-destination="url('http://www.paulmccartney.com')" 
    color="blue" text-decoration="underline"> 
    Paul McCartney 
    </fo:basic-link> 

và các liên kết nội bộ là các liên kết từ một vị trí trong một văn bản tới vị trí khác trong cùng một tài liệu. Có hai bước để tạo liên kết nội bộ:

Trước tiên, cung cấp ID duy nhất cho vị trí được liên kết đến. ID được chỉ định với thuộc tính id. Giá trị có thể được mã hóa cứng hoặc được tạo. Trong ví dụ bên dưới, chúng tôi sử dụng hàm generate-id() XSLT để tạo ID:

<fo:block font-weight="bold" font-size="larger" 
id="{generate-id(.)}" break-before="page"> 
    <xsl:value-of select="."/> 
</fo:block> 

Thứ hai, Tạo liên kết đến vị trí đó. Giống như với các liên kết bên ngoài, các liên kết bên trong được tạo bằng thẻ. Thuộc tính đích bên trong phải được đặt thành giá trị của ID ở nơi khác trong tài liệu.

<fo:basic-link internal-destination="{generate-id(.)}"> 
<xsl:value-of select="."/> 
</fo:basic-link> 

Tôi nghĩ rằng bạn bỏ lỡ bao gồm từ khoá 'url' trong 'bên ngoài điểm đến' thuộc tính

+0

Cảm ơn phản hồi của bạn Navin. Có vẻ như tôi không thể tạo một liên kết lai (cả bên ngoài lẫn bên trong). Bên cạnh đó, tôi nghĩ rằng tôi không cần phải bao gồm 'url' trong thuộc tính của mình vì tôi muốn tạo liên kết tới tệp PDF nằm trong cùng một thư mục. – Johann