我有一个项目,客户希望从XML数据集提供PDF文档。我已经与XSLT合作多年,但从未创建过PDF。我使用XSLT生成了新的XML和HTML,但从未使用过PDF。有没有人有将XML转换为PDF的实际经验?
1
A
回答
3
您将不得不采取两步法,首先应用xsl-fo转换,创建特定的fo标签,然后通过fo到pdf进程运行它。
下面是我为此使用的一段VB代码,再加上一小段我的xsl-fo。
'Transform to create fo file
foName = "C:\test\foName_test.fo"
xslName = "C:\test\xhtml2fo.xslt"
Call Transform(flName, xslName, foName)
'Call FOP PDF generator
Set shell = CreateObject("WScript.Shell")
pdfName = "C:\test\foName_test.pdf"
cmd = "java -Dfop.home=C:\fop -cp C:\fop\build\fop.jar org.apache.fop.cli.Main -fo " & foName & " -pdf " & pdfName
Call shell.Run(cmd, vbWindowFrame, True)
Private Sub Transform(sourceFile, stylesheetFile, resultFile)
Dim source As New MSXML2.DOMDocument60
Dim stylesheet As New MSXML2.DOMDocument60
Dim result As New MSXML2.DOMDocument60
Dim objStream As New ADODB.Stream
Dim msg As String
objStream.Open
objStream.Position = 0
objStream.Charset = "utf-8"
objStream.LoadFromFile (sourceFile)
' Load data
source.async = False
source.loadXML (objStream.ReadText())
' Load style sheet
stylesheet.async = False
stylesheet.Load stylesheetFile
' Do the transform
source.transformNodeToObject stylesheet, result
result.Save resultFile
End Sub
XSLT代码片段:
<xsl:template name="make-layout-master-set">
<fo:layout-master-set>
<fo:simple-page-master master-name="all-pages" xsl:use-attribute-sets="page">
<fo:region-body margin-top="{$page-margin-top}" margin-right="{$page-margin-right}" margin-bottom="{$page-margin-bottom}" margin-left="{$page-margin-left}" column-count="{$column-count}" column-gap="{$column-gap}"/>
<xsl:choose>
<xsl:when test="$writing-mode = 'tb-rl'">
<fo:region-before extent="{$page-margin-right}" precedence="true"/>
<fo:region-after extent="{$page-margin-left}" precedence="true"/>
<fo:region-start region-name="page-header" extent="{$page-margin-top}" writing-mode="lr-tb" display-align="before"/>
<fo:region-end region-name="page-footer" extent="{$page-margin-bottom}" writing-mode="lr-tb" display-align="after"/>
</xsl:when>
<xsl:when test="$writing-mode = 'rl-tb'">
<fo:region-before region-name="page-header" extent="{$page-margin-top}" display-align="before"/>
<fo:region-after region-name="page-footer" extent="{$page-margin-bottom}" display-align="after"/>
<fo:region-start extent="{$page-margin-right}"/>
<fo:region-end extent="{$page-margin-left}"/>
</xsl:when>
<xsl:otherwise><!-- $writing-mode = 'lr-tb' -->
<fo:region-before region-name="page-header" extent="{$page-margin-top}" display-align="before"/>
<fo:region-after region-name="page-footer" extent="{$page-margin-bottom}" display-align="after"/>
<fo:region-start extent="{$page-margin-left}"/>
<fo:region-end extent="{$page-margin-bottom}"/>
</xsl:otherwise>
</xsl:choose>
</fo:simple-page-master>
</fo:layout-master-set>
</xsl:template>
0
相关问题
- 1. 有没有人已经实施/将Prevalence/Prevaylor转换为Javascript/NodeJS?
- 2. 有没有人有与Clipsmm的经验?
- 3. 有没有人有UIAutomation Xcode的经验?
- 4. 有没有人有SSEPlus的经验?
- 5. 有没有人有专用Launchpad实例的经验?
- 6. 有没有人有Apache POI将PPTX转换为PNG的例子
- 7. 有没有Ruby或python中的任何方法将pdf转换为xml
- 8. 有没有人与buckminster真实世界的经验?
- 9. 任何具有VoltDB或MySQL集群实际经验的人?
- 10. 有没有任何Java库将文档从PDF转换为HTML?
- 11. 有没有一种方法可以将网页转换为pdf?
- 12. 有没有办法使用PHP将PDF转换为HTML/CSS?
- 13. 有没有办法将“QRST-code”转换为经度/纬度?
- 14. 有没有办法将PDF文件转换为jpg没有imagemagick或ghostscript。?
- 15. 没有第三方DLL转换为PDF
- 16. 更改字符串为byte [] - 由于没有实际的转换
- 17. 有没有人有任何经由midi-> wav转换或在iPhone上播放.midi文件的经验?
- 18. 有没有人有使用YAJL的Objective-C绑定的经验?
- 19. 有没有人有ClusterVisionOS上运行的集群的经验?
- 20. 有没有人有使用Grails的CloudFoundry的经验?
- 21. chosen.js ::有没有人有一个实际的工作示例?
- 22. 有没有办法在C++中将JSON转换为XML?
- 23. 有没有人有基于WebQuarters开发网站的经验?
- 24. 有没有人在这里有开发Minix的经验?
- 25. 有没有人有在JBoss 6下使用jsf4birt的经验?
- 26. 有没有人有在MATLAB中创建共享库的经验?
- 27. 有没有人有任何Hobo的经验?
- 28. 有没有人有使用Perl5i的经验?
- 29. 有没有人有使用ZFS的经验?
- 30. 有没有人有使用JacpFx的经验?
有这个[问题](http://stackoverflow.com/q/212577/229858),可能有所帮助。 – 2012-03-31 03:00:13
@DaveM良好的链接戴夫 - 当我提出我的答案时,我没有注意到你的评论! – Maestro13 2012-03-31 08:51:46
您可以使用Online Api http://www.convertapi.com – Tomas 2012-04-01 17:25:05