我有一個項目,客戶希望從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