У меня возникла проблема с отображением гиперссылки на документ (изображение/.pdf/.doc/.xls) внутри PDF. Когда пользователь нажимает на гиперссылку, соответствующий документ (изображение/.pdf/.doc/.xls) должен отображаться в новом окне.Как отобразить ссылку на другой документ (изображение/pdf/doc/xls) в формате PDF с помощью Apache FOP?
Books.xml
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Book xmlns="http://book.com/one/1.2/" xmlns:ns2="http://test2.com/one/1.2/" xmlns:ns3="http://test3.com/one/1.2/" >
<Title>Java</Title>
<ISBN>123</ISBN>
<Author>Test</Author>
<BookDocument>
<ns2:DocumentName>images1.jpeg</ns2:DocumentName>
<ns2:DocumentContent>/aN2r9pT8HwKXpmvvmt2ifpz5xvmt2ifpz5xukZHBb9Wn4FL0xwW/VpD=</ns2:DocumentContent>
</BookDocument>
<BookDocument>
<ns2:DocumentName>images2.jpeg</ns2:DocumentName>
<ns2:DocumentContent>/aN2r9pT8HwKXpmvvmt2ifpz5xvmt2ifpz5xukZHBb9Wn4FL0x/VpD=</ns2:DocumentContent>
</BookDocument>
</Book>
Books.xsl
<xsl:template match="*[local-name() = 'Book']">
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
<fo:layout-master-set>
<fo:simple-page-master master-name="ex"
page-height="29.7cm" page-width="21cm" margin-top="2cm"
margin-bottom="2cm" margin-left="2cm" margin-right="2cm">
<fo:region-body />
</fo:simple-page-master>
</fo:layout-master-set>
<fo:page-sequence master-reference="ex">
<fo:flow flow-name="xsl-region-body">
<fo:block space-after="15mm">
</fo:block>
<fo:block font-size="16pt" font-weight="bold" space-after="5mm">
Book Details
</fo:block>
<fo:block font-size="10pt">
<fo:table table-layout="fixed" width="100%"
border-collapse="collapse" border="solid 1px black">
<fo:table-body>
<fo:table-row>
<fo:table-cell border="solid 1px black" padding="1mm">
<fo:block font-weight="bold">Title :</fo:block>
</fo:table-cell>
<fo:table-cell padding="1mm" border="solid 1px black">
<fo:block>
<xsl:value-of select="*[local-name() = 'Title']" />
</fo:block>
</fo:table-cell>
</fo:table-row>
<fo:table-row>
<fo:table-cell border="solid 1px black" padding="1mm">
<fo:block font-weight="bold">ISBN :
</fo:block>
</fo:table-cell>
<fo:table-cell padding="1mm" border="solid 1px black">
<fo:block>
<xsl:value-of select="*[local-name() = 'ISBN']" />
</fo:block>
</fo:table-cell>
</fo:table-row>
<fo:table-row>
<fo:table-cell border="solid 1px black" padding="1mm">
<fo:block font-weight="bold">Author :</fo:block>
</fo:table-cell>
<fo:table-cell padding="1mm" border="solid 1px black">
<fo:block>
<xsl:value-of select="*[local-name() = 'Author']" />
</fo:block>
</fo:table-cell>
</fo:table-row>
<fo:table-row>
<fo:table-cell border="solid 1px black" padding="1mm">
<fo:block font-weight="bold">Image Names :</fo:block>
</fo:table-cell>
<fo:table-cell padding="1mm" border="solid 1px black">
<fo:block>
<xsl:for-each select="*[local-name() = 'BookDocument']">
<xsl:value-of select="*[local-name() = 'DocumentName']"/>
<xsl:text> </xsl:text>
</xsl:for-each>
</fo:block>
</fo:table-cell>
</fo:table-row>
</fo:table-body>
</fo:table>
</fo:block>
</fo:flow>
</fo:page-sequence>
</fo:root>
</xsl:template>
Данные внутри <ns2:DocumentContent>
в формате кодирования base64. Мне нужно отобразить документ в новом окне, используя содержимое <ns2:DocumentContent>
. Пожалуйста, помогите мне в этом.
Это ответ Кевин комментарий на 19/06/2013
Hi Kevin Я новичок в этом и XSLT XSL-FO, как вы сказали, я попытался дать гиперссылку с помощью <fo:basic-link>
, но ссылка не открывается, чтобы показать прикрепленный файл. ниже код, который я пытаюсь
<fo:basic-link padding-left="65mm" show-destination="new" text-decoration="underline">
<xsl:attribute name="external-destination">
<xsl:text>url('data:</xsl:text>
<xsl:value-of select="*[local-name() = 'FileType']" />
<xsl:text>;base64,</xsl:text>
<xsl:value-of select="*[local-name() = 'FileAttachment']" />
<xsl:text>')</xsl:text>
</xsl:attribute>
<fo:inline font-family="Arial" font-size="10pt" color="#0000ff" text-decoration="underline"><xsl:value-of select="*[local-name() = 'FileName']"/></fo:inline>
</fo:basic-link>
может у вас, пожалуйста, помогите в этом.
Спасибо Кевин Браун за помощь. Я использую приведенный выше фрагмент кода внутри, он отлично работает при отображении изображения внутри pdf. Но нужно показывать только ссылки на изображения, а не изображение в формате pdf. пожалуйста, помогите в этом, если есть какой-либо способ для этого. –
RaoPotla
Вопрос - ссылка для изображения на «где».Вы планируете разместить изображение в Интернете где-нибудь в известном и доступном месте? Вы не можете просто думать, что ссылка на что-то будет работать на файловой системе. Если вам нужна ссылка на изображение внутри PDF (или любой другой файл, если на то пошло), используйте fo: basic-link с URL-адресом в атрибуте external-destination. –
У вас также есть закодированные байты Base64 изображения. Единственный способ включить изображение или другой тип файла для открытия в отдельном окне - это то, как я указал выше. Вы вставляете файл внутри PDF в качестве вложения в файл, и вы можете поместить стандартную PDF-маркировку (например, бумажный клип или pushpin) в PDF-файл, чтобы запустить файл во внешнем приложении. Вот почему вам также нужен mimetype, потому что это говорит о том, какую файловую ассоциацию использовать для запуска соответствующего внешнего приложения. –