テキストとグラフィックスの出力を PDF ドキュメントにレンダリングできるライブラリを探しています。(カイロは確かにオプションです。) 同じライブラリを使用できるかどうかを確認するために、OpenOffice がどのように PDF ファイルを書き込むかを知りたいです。OpenOffice で PDF エクスポートに使用されているライブラリは何ですか?
編集: C または C++ ライブラリを探しています。
テキストとグラフィックスの出力を PDF ドキュメントにレンダリングできるライブラリを探しています。(カイロは確かにオプションです。) 同じライブラリを使用できるかどうかを確認するために、OpenOffice がどのように PDF ファイルを書き込むかを知りたいです。OpenOffice で PDF エクスポートに使用されているライブラリは何ですか?
編集: C または C++ ライブラリを探しています。
OpenOfficeを使用してドキュメントをPDFにエクスポートする方法を見つけるためにどこでも調べました。私はついにOpenOfficeフォーラムに埋もれた投稿を見つけ、90%そこにたどり着きました。これが私の100%ソリューションです。OpenOffice3.1で動作します。このコードを使用するには、OpenOfficeをインストールする必要があります。cli_basetypes、cli_cppuhelper、cli_oootypes、cli_ure、cli_uretypesへの参照を含める必要があります。これらのdll参照は、OpenOfficeSDKにあります。申し訳ありませんが、これはC#です。C/C++ではありません。HTH誰か。
unoidl.com.sun.star.langを使用します。 unoidl.com.sun.star.unoを使用する; unoidl.com.sun.star.bridgeを使用します。 unoidl.com.sun.star.frameを使用します。 unoidl.com.sun.star.beansを使用します。 public static void ConvertToPDF(string inputFile、string outputFile) {{ if(ConvertExtensionToFilterType(Path.GetExtension(inputFile))== null) 新しいInvalidProgramException("OpenOfficeの不明なファイルタイプ。File="+ inputFile);をスローします。 StartOpenOffice(); //ComponentContextを取得します unoidl.com.sun.star.uno.XComponentContext xLocalContext = uno.util.Bootstrap.bootstrap(); //MultiServiceFactoryを取得します unoidl.com.sun.star.lang.XMultiServiceFactory xRemoteFactory = (unoidl.com.sun.star.lang.XMultiServiceFactory) xLocalContext.getServiceManager(); //CompontLoaderを取得します XComponentLoader aLoader = (XComponentLoader)xRemoteFactory.createInstance( "com.sun.star.frame.Desktop"); //ソースファイルをロードします XComponent xComponent = null; 試す {{ xComponent = initDocument(aLoader、 PathConverter(inputFile)、 "_blank"); //読み込みを待ちます while(xComponent == null) {{ System.Threading.Thread.Sleep(1000); } //ドキュメントを保存/エクスポートします saveDocument(xComponent、inputFile、PathConverter(outputFile)); } キャッチ{スロー; } 最後に{xComponent.dispose(); } } private static void StartOpenOffice() {{ Process [] ps = Process.GetProcessesByName( "soffice.exe"); if(ps!= null) {{ if(ps.Length> 0) 戻る; そうしないと {{ プロセスp=new Process(); p.StartInfo.Arguments = "-headless -nofirststartwizard"; p.StartInfo.FileName = "soffice.exe"; p.StartInfo.CreateNoWindow = true; bool result = p.Start(); if(result == false) 新しいInvalidProgramException( "OpenOfficeを起動できませんでした。");をスローします。 } } そうしないと {{ 新しいInvalidProgramException( "OpenOfficeが見つかりません。OpenOfficeはインストールされていますか?");をスローします。 } } private static XComponent initDocument(XComponentLoader aLoader、string file、string target) {{ PropertyValue [] openProps = new PropertyValue [1]; openProps [0] = new PropertyValue(); openProps [0] .Name="非表示"; openProps [0] .Value = new uno.Any(true); XComponent xComponent = aLoader.loadComponentFromURL( ファイル、ターゲット、0、 openProps); xComponentを返します。 } private static void saveDocument(XComponent xComponent、string sourceFile、string destinationFile) {{ PropertyValue [] propertyValues = new PropertyValue [2]; propertyValues = new PropertyValue [2]; //上書きのフラグを設定します propertyValues [1] = new PropertyValue(); propertyValues [1] .Name="上書き"; propertyValues [1] .Value = new uno.Any(true); ////フィルター名の設定 propertyValues [0] = new PropertyValue(); propertyValues [0] .Name = "FilterName"; propertyValues [0] .Value = new uno.Any(ConvertExtensionToFilterType(Path.GetExtension(sourceFile))); ((XStorable)xComponent).storeToURL(destinationFile、propertyValues); } プライベート静的文字列PathConverter(文字列ファイル) {{ if(file == null || file.Length == 0) 新しいNullReferenceException( "OpenOfficeに渡されたNullまたは空のパス");をスローします。 String.Format( "file:/// {0}"、file.Replace(@ "\"、 "/"));を返します。 } public static string ConvertExtensionToFilterType(string extension) {{ スイッチ(延長) {{ ケース".doc": ケース".docx": ケース".txt": ケース".rtf": ケース".html": ケース".htm": ケース".xml": ケース「.odt」: ケース".wps": ケース".wpd": "writer_pdf_Export"を返します; ケース".xls": ケース".xlsb": ケース「.ods」: 「calc_pdf_Export」を返します。 ケース".ppt": ケース".pptx": ケース".odp": "impress_pdf_Export"を返します; デフォルト:nullを返します。 } } }
PDFCreator には、役立つ API があります。
http://www.pdfforge.org/forum/open-discussion/3063-api-sdk-pdf作成者
どの言語で作業していますか? そこには多くのPDFライブラリがあります。Stack Overflow で「pdf ライブラリ [プログラミング言語]」を検索します。すでにたくさんの推奨事項があります。
OpenOffice はSun PDF ライブラリを拡張機能として使用して PDF をインポートしますが、エクスポートに何を使用するかはわかりません。