Xslt 如何使用ApacheFop在pdf中显示指向另一个文档(image/pdf/doc/xls)的链接?
我在pdf中显示文档(image/.pdf/.doc/.xls)的超链接时遇到问题。当用户单击超链接时,相应的文档(image/.pdf/.doc/.xls)必须显示在新窗口中Xslt 如何使用ApacheFop在pdf中显示指向另一个文档(image/pdf/doc/xls)的链接?,xslt,xslt-1.0,xsl-fo,apache-fop,Xslt,Xslt 1.0,Xsl Fo,Apache Fop,我在pdf中显示文档(image/.pdf/.doc/.xls)的超链接时遇到问题。当用户单击超链接时,相应的文档(image/.pdf/.doc/.xls)必须显示在新窗口中 <fo:basic-link padding-left="65mm" show-destination="new" text-decoration="underline"> <xsl:attribut
<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>
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>
<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>
JAVA
123
试验
图像1.jpeg
/aN2r9pT8HwKXpmvvmt2ifpz5xvmt2ifpz5xukZHBb9Wn4FL0xwW/VpD=
images2.jpeg
/aN2r9pT8HwKXpmvvmt2ifpz5xvmt2ifpz5xukZHBb9Wn4FL0x/VpD=
Books.xsl
<?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>
<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>
<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>
书籍详情
标题:
国际书号:
作者:
图像名称:
<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>
中的数据采用base64编码格式。我需要使用
的内容在新窗口中显示文档。请帮我做这件事
<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>
这是2013年6月19日对凯文评论的回复
<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>
您好,凯文,我是新的xslt和xsl fo,正如您所说的,我尝试使用
提供超链接,但链接未打开以显示附加文件。下面是我正在尝试的代码
<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>
url('数据:
;base64,
')
您是否可以在这方面提供帮助。如果您打算在PDF中包含实际内容(基本上使用PDF作为容器),则只有在您选择的XSL FO呈现程序支持PDF附件的情况下才可以这样做。既然你说的是Excel之类的东西,我想这就是你的意思
<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>
如果您选择的XSL FO引擎在呈现过程中支持PDF文件附件,则需要将base64编码文档流的内容写入PDF附件FO构造。您可以将完整编码的文档传递到文档扩展名中文件附件的“src”属性中。使用RenderX XEP,您可以在此处查看FO执行此操作的文档:
<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>
<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>
您将使用与下面类似的模板(注意,本例中的“attachmentContentType”将包含所包含内容的mimetype,您需要将其添加到输入XML中):
<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>
url('数据:
;base64,
')
要构建具有以下内容的“src”属性(使用“data:”方案将整个文档存储在src属性中),这将是文件附件扩展名的“src”属性。这将把文件作为附件嵌入到PDF中,可以通过支持此功能的PDF查看器在其本机编辑器中打开
<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>
src=“'data:image/jpeg;base64,/an2r9pt8hwkxpmvt2ifpz5xvmt2ifpz5xukzhbb9wn4fl0xww…”感谢凯文·布朗的帮助。我在里面使用了上面的代码片段,它可以很好地在pdf中显示图像。但是需要只显示图像链接,而不是在pdf中显示图像本身。如果有任何方法,请在这方面提供帮助。问题是“何处”的图像链接。您是否计划将图像放到web上已知且可访问的位置?您不能仅仅认为在文件系统中放置指向某个对象的链接会起作用。如果您想要一个指向PDF(或任何其他文件)中图像的链接,那么在外部目标属性中使用fo:basic link和URL。您还有图像的Base64编码字节。您可以包含要在单独窗口中打开的图像或其他类型的文件的唯一方法是我上面指定的方法。您可以将文件插入PDF中
<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>