私はクライアントがXMLデータセットからPDF文書を提供したいというプロジェクトを持っています。私は何年もXSLTを扱ってきましたが、PDFを作成したことはありません。私はXSLTを使用して新しいXMLとHTMLを生成しましたが、決してPDFは生成しませんでした。誰かがXMLをPDFに変換した経験がありますか?
1
A
答えて
3
まず、xsl-fo変換を適用し、特定のfoタグを作成してからfo to pdfプロセスで実行するという2段階のアプローチが必要です。
以下は、これに使用する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. 誰でもFeinCMSやメザニンの経験がありますか?
- 2. 誰でもslide.show2の経験がありますか?
- 3. 誰もPerl5iの経験がありますか?
- 4. 誰かがmidi-> wav変換などのiPhoneで.midiファイルを再生する経験はありますか?
- 5. 誰かがJoomlaまたはRSフォームでPodio APIを使用した経験がありますか?
- 6. WeSetupYourWebViewAppの経験がありますか?
- 7. 誰もがWebアプリケーション用のJODBを経験しましたか?
- 8. 誰もがモノでCSLAを使っている経験がありますか?
- 9. 誰かがLoRaデバイスからArduinoに送受信した経験がありますか?
- 10. 誰かがitunesconnectでこれを経験していますか?
- 11. 誰かがMATLABで共有ライブラリを作成した経験がありますか?
- 12. 誰でもISOBUS(ISO 11783-10)バイナリタイムログファイルを読んだ経験がありますか?
- 13. 誰かがCodedUIとSeleniumを組み合わせた経験がありますか?
- 14. ドキュメンテーションサイトでCMSの経験があるのは誰ですか?
- 15. C#on Linux - 誰でもモノを使った経験に基づいて意見がありましたか?
- 16. 誰かがユニットテストのためにHWUTの経験を報告できますか?
- 17. 誰でもインデックスをカバーしている経験があります
- 18. 誰かがJava SWTブラウザコンポーネントを経験していますか?あなたはどう思いますか?
- 19. IE7でsIFR(436)が消えてしまった経験がありますか?
- 20. 誰でもGradleを使ってEclipse RCPアプリケーションを構築した経験がありますか?
- 21. 誰でもTelerikのRadGridページングを経験しましたか?
- 22. 誰でもSeam 3を経験しましたか?
- 23. Javaに経験的分解ライブラリがありますか?
- 24. PostSharpをReSharperで使用した経験があります
- 25. 誰かが2 Pi以上のzRotationを経験していますか?
- 26. 誰かが "encodeURIComponent(string)"でクロスブラウザーの問題を経験していますか?
- 27. ナショナルインスツルメンツのCVIおよびソースコントロールの経験がありますか?
- 28. 誰もがスフィンクスの音声認識を経験していますか?
- 29. オープンソースがありますか? "MSWord doc to PDF"変換ライブラリ
- 30. grailsでextjsを使った経験はありますか?
この[質問](http://stackoverflow.com/q/212577/229858)が役立ちます。 –
@DaveM良いリンクDave - 私は私の答えを策定したときにあなたのコメントに気付かなかった! – Maestro13
あなたはオンラインAPIを使用することができますhttp://www.convertapi.com – Tomas