Pemimpin:
Selama proses distribusi, Java sering digunakan untuk mengubah dokumen seri kantor menjadi PDF, dan umumnya menggunakan OpenOffice+JodConverter yang disediakan oleh Microsoft untuk mengonversi dokumen.
OpenOffice memiliki versi Windows dan Linux. Jangan khawatir tentang lingkungan produksi menjadi sistem Linux.
1. OpenOffice tergantung pada toples, ambil Maven sebagai contoh:
<dependency> <GroupId> com.artofsolving </groupid> <ArTifactId> jodconverter </arttifactid> <version> 2.2.1 </version> </dependency> <dependency> <groupid> org.openoffice </groupId> <ArtifactId> Jurt </Artifactid> </Groupid> <titifactid> Jurt </Artifactid> versi 3.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0. <groupid> org.openoffice </groupId> <ArtifactId> ridl </t Artifactid> <version> 3.0.1 </version> </dependency> <dependency> <groupid> org.openoffice </groupid> <ArTifactId> JUH </Artifactid> <version> versi 3.0.1 </Version> </Version> </Version> </Version> </artifactid </ArtifactId </Artifactid </art <ArTifactId> unoil </stifactid> <version> 3.0.1 </version> </dependency> <!-jodconverter2.2.1 harus bergantung pada slf4j-jdk14, jika tidak log akan melaporkan kesalahan dalam kode sumber. Ini adalah masalah yang sangat rendah-> <dependency> <GroupId> org.slf4j </groupId> <ArTifactId> slf4j-jdk14 </t Artifactid> <version> 1.4.3 </version> </dependensi>
2. Untuk langsung mengunggah kode, Anda perlu mendengarkan port 8100 dari aplikasi OpenOffice.
public void convert (File SourceFile, File TargetFile) {coba {// 1: Buka koneksi OpenOfficeConnection Connection = SocketOpenOfficeConnection baru (8100); connection.connect (); DocumentConverter converter = OpenOffeFofFICECUCECUCMERVERTER baru (koneksi); // 2: Dapatkan format DocumentFormatRegistry Factory = BASICDOCUMENTFORMATRegistry Baru (); DocumentFormat inputDocumentFormat = factory .getFormatByFilextension (getExtensionName (sourceFile.getAbsolutePath ())); DocumentFormat outputDocumentFormat = factory .getFormatByFileExtension (getExtensionName (targetFile.getAbsolutePath ())); // 3: Jalankan konversi converter.convert (SourceFile, InputDocumentFormat, TargetFile, OutputDocumentFormat); } catch (ConnectException e) {log.info ("Konversi dokumen gagal"); }}3. Catatan: JodConverter akan melaporkan kesalahan setelah mengonversi dokumen XXX.DOCX setelah versi 2007. Semua orang tahu bahwa akhiran 03 adalah xxx.doc. Versi 07 akan menjadi xxx.docx.
Memeriksa kode sumber JodConverter, ditemukan bahwa DocumentFormat tidak mendukung format xxx.docx. BASICDOCUCUMENTFORMATRegistry. Public DocumentFormat GetFormatByFileExtension (String Extension) didukung secara default. Format DOC digunakan.
BASICDOCUCUMENTERFORTREGRISTRIST Kode Sumber Kelas
// // JodConverter - Java Opendocument Converter // Hak Cipta (C) 2004-2007 - Mirko Nasato <[email protected]> // // Perpustakaan ini adalah perangkat lunak gratis; Anda dapat mendistribusikannya dan/atau // memodifikasinya berdasarkan ketentuan lisensi publik GNU yang lebih rendah // seperti yang diterbitkan oleh Yayasan Perangkat Lunak Gratis; Salah satu // Versi 2.1 dari lisensi, atau (atas opsi Anda) versi selanjutnya. // // Perpustakaan ini didistribusikan dengan harapan akan berguna, // tetapi tanpa jaminan apa pun; bahkan tanpa jaminan tersirat dari // dapat diperjualbelikan atau kebugaran untuk tujuan tertentu. Lihat Lisensi Publik Umum GNU // yang lebih rendah untuk lebih jelasnya. // http://www.gnu.org/copyleft/lesser.html // package com.artofsolving.jodconverter; impor java.util.arraylist; impor java.util.iterator; impor java.util.list; Public Class BasicDocumentFormatRegistry mengimplementasikan DocumentFormatRegistry {Private List/*<Procumformat>*/ documentFormats = arrayList baru (); public void addDocumentFormat (DocumentFormat DocumentFormat) {documentFormats.add (DocumentFormat); } Daftar Protected/*<CocumentFormat>*/ getDocumentFormats () {return DocumentFormats; } / ** * @param Extension Ekstensi file * @Return The DocumentFormat untuk ekstensi ini, atau null jika ekstensi tidak dipetakan * / publicFormat getFormatByFileExtension (ekstensi string) {if (extension == null) {return null; } String lowerextension = extension.tolowercase (); untuk (iterator it = documentFormat.iterator (); it.hasnext ();) {DocumentFormat format = (DocumentFormat) it.next (); if (format.getFileExtension (). Equals (lowerextension)) {return format; }} return null; } public DocumentFormat getFormatByMimeType (String mimetype) {for (iterator it = documentFormat.iterator (); it.hasnext ();) {DocumentFormat format = (DocumentFormat) it.next (); if (format.getMimetype (). Equals (mimetype)) {return format; }} return null; }}
Format file yang didukung dalam kelas implementasi default DefaultDocumentFormatTregistry adalah sebagai berikut
// // JodConverter - Java Opendocument Converter // Hak Cipta (C) 2004-2007 - Mirko Nasato <[email protected]> // // Perpustakaan ini adalah perangkat lunak gratis; Anda dapat mendistribusikannya dan/atau // memodifikasinya berdasarkan ketentuan lisensi publik GNU yang lebih rendah // seperti yang diterbitkan oleh Yayasan Perangkat Lunak Gratis; Salah satu // Versi 2.1 dari lisensi, atau (atas opsi Anda) versi selanjutnya. // // Perpustakaan ini didistribusikan dengan harapan akan berguna, // tetapi tanpa jaminan apa pun; bahkan tanpa jaminan tersirat dari // dapat diperjualbelikan atau kebugaran untuk tujuan tertentu. Lihat Lisensi Publik Umum GNU // yang lebih rendah untuk lebih jelasnya. // http://www.gnu.org/copyleft/lesser.html // package com.artofsolving.jodconverter; Public Class DefaultDocumentFormatRegistry Extends BasicDocumentFormatRegistry {public DefaultDocumentFormatRegistry () {final DocumentFormat PDF = new DocumentFormat ("Format Dokumen Portabel", "Application/PDF", "PDF"); pdf.setExportFilter (documentfamily.drawing, "draw_pdf_export"); pdf.setExportFilter (DocumentFamily.presentation, "Impress_PDF_Export"); pdf.setExportFilter (DocumentFamily.spreadsheet, "calc_pdf_export"); pdf.setExportFilter (DocumentFamily.text, "writer_pdf_export"); addDocumentFormat (pdf); Final DocumentFormat SWF = new DocumentFormat ("MacRomedia Flash", "Application/X-Shockwave-Flash", "SWF"); swf.setExportFilter (documentfamily.drawing, "draw_flash_export"); swf.setExportFilter (DocumentFamily.presentation, "Impress_Flash_Export"); addDocumentFormat (SWF); Final DocumentFormat xhtml = new DocumentFormat ("xhtml", "Application/XHTML+XML", "XHTML"); xhtml.setExportFilter (documentfamily.presentation, "file xhtml mengesankan"); xhtml.setExportFilter (DocumentFamily.spreadsheet, "file calc xhtml"); xhtml.setExportFilter (DocumentFamily.text, "file penulis xhtml"); addDocumentFormat (xhtml); // HTML diperlakukan sebagai teks ketika disuplai sebagai input, tetapi sebagai output juga // tersedia untuk mengekspor spreadsheet dan format presentasi Final DocumentFormat html = new DocumentFormat ("html", documentfamily.text, "text/html", "html"); html.setExportFilter (DocumentFamily.presentation, "Impress_html_Export"); html.setExportFilter (documentfamily.spreadsheet, "html (starcalc)"); html.setExportFilter (DocumentFamily.text, "html (starwriter)"); addDocumentFormat (html); Final DocumentFormat ODT = new DocumentFormat ("Teks OpenDocument", DocumentFamily.Text, "Application/vnd.oasis.opendocument.text", "odt"); odt.setExportFilter (DocumentFamily.text, "writer8"); addDocumentFormat (ODT); Final DocumentFormat SXW = Dokumen baru ("OpenOffice.org 1.0 Dokumen Teks", DocumentFamily.Text, "Application/Vnd.sun.xml.Writer", "SXW"); sxw.setExportFilter (DocumentFamily.text, "Staroffice XML (Writer)"); addDocumentFormat (SXW); Final DocumentFormat doc = new DocumentFormat ("Microsoft Word", DocumentFamily.text, "Application/Msword", "Doc"); doc.setExportFilter (DocumentFamily.text, "MS Word 97"); addDocumentFormat (DOC); Final DocumentFormat rtf = new DocumentFormat ("Rich Text Format", DocumentFamily.Text, "Text/RTF", "RTF"); rtf.setExportFilter (DocumentFamily.text, "Rich Text Format"); addDocumentFormat (RTF); Final DocumentFormat wpd = new DocumentFormat ("WordPerFect", DocumentFamily.Text, "Application/WordPerFect", "WPD"); addDocumentFormat (WPD); final documentFormat txt = new DocumentFormat ("Plain Text", DocumentFamily.Text, "Text/Plain", "TXT"); // Atur filtername ke "teks" untuk mencegah ooo dari tryign untuk menampilkan dialog "ASCII Filter" // Alternatifnya nama filterning dapat menjadi "teks (dikodekan)" dan filteroption yang digunakan untuk mengatur pengkodean jika diperlukan txt.setImportOption ("filtername", "text"); txt.setExportFilter (DocumentFamily.Text, "Teks"); addDocumentFormat (txt); Final DocumentFormat waitext = new DocumentFormat ("MediaWiki Wikitext", "Text/X-Wiki", "Wiki"); wikuxext.setExportFilter (DocumentFamily.text, "MediaWiki"); addDocumentFormat (wikuxt); Final DocumentFormat ODS = DocumentFormat baru ("OpenDocument Spreadsheet", DocumentFamily.spreadsheet, "Application/vnd.oasis.opendocument.spreadsheet", "ODS"); ods.setExportFilter (DocumentFamily.spreadsheet, "calc8"); addDocumentFormat (ODS); Final DocumentFormat SXC = DocumentFormat baru ("OpenOffice.org 1.0 Spreadsheet", DocumentFamily.spreadsheet, "Application/vnd.sun.xml.calc", "SXC"); sxc.setExportFilter (DocumentFamily.spreadsheet, "Staroffice XML (Calc)"); addDocumentFormat (SXC); Final DocumentFormat XLS = new DocumentFormat ("Microsoft Excel", DocumentFamily.spreadsheet, "Application/VND.MS-EXCEL", "XLS"); xls.setExportFilter (DocumentFamily.spreadsheet, "MS Excel 97"); addDocumentFormat (XLS); Dokumen akhir CSV = DocumentFormat baru ("CSV", DocumentFamily.spreadsheet, "Teks/CSV", "CSV"); csv.setImportOption ("filtername", "text - txt - csv (starcalc)"); CSV.SetImportOption ("FilterOptions", "44,34,0"); // pemisah lapangan: ','; Pembatas Teks: '"' CSV.SetExportFilter (DocumentFamily.spreadsheet," Text - TXT - CSV (StarCalc) "); CSV.SetExportOption (DocumentFamily.spreadsheet," FilterOptions "," 444,34,0 "); addDocumentSheet (CSOCUMENTER (DOCMORTOR (" 444,34,0 "); addDocumentFaTension (csoCumentFaPet (" 444,34,0 "); AddDocumentFaTFATET (CSOUTCOUTIONS; DocumentFormat (Nilai-Nilai yang Dipisahkan Tab ", DocumentFamily.spreadsheet," Teks/Tab-terpisah-Nilai "," TSV "); '/t'; Pembatas teks: '"' TSV.SetExportFilter (DocumentFamily.spreadsheet," Text - TXT - CSV (StarCalc) "); tsv.setExportOption (DocumentFamily.spreadsheet, "FilterOptions", "9,34,0"); addDocumentFormat (TSV); Final DocumentFormat ODP = DocumentFormat baru ("Presentasi OpenDocument", DocumentFamily.presentation, "Application/vnd.oasis.opendocument.presentation", "ODP"); ODP.SetExportFilter (DocumentFamily.pesentation, "Impress8"); addDocumentFormat (ODP); Final DocumentFormat sxi = new DocumentFormat ("OpenOffice.org 1.0 Presentasi", DocumentFamily.presentation, "Application/vnd.sun.xml.impress", "sxi"); sxi.setExportFilter (DocumentFamily.presentation, "Staroffice XML (Impress)"); addDocumentFormat (SXI); Final DocumentFormat ppt = new DocumentFormat ("Microsoft PowerPoint", DocumentFamily.pesentation, "Application/VND.MS-PowerPoint", "ppt"); ppt.setExportFilter (DocumentFamily.presentation, "MS PowerPoint 97"); addDocumentFormat (ppt); Final DocumentFormat ODG = DocumentFormat baru ("OpenDocument Drawing", DocumentFamily.drawing, "Application/vnd.oasis.opendocument.graphics", "odg"); odg.setExportFilter (documentfamily.drawing, "draw8"); addDocumentFormat (ODG); Final DocumentFormat svg = new DocumentFormat ("Scalable Vector Graphics", "Image/SVG+XML", "SVG"); svg.setExportFilter (documentfamily.drawing, "draw_svg_export"); addDocumentFormat (SVG); }}
Solusi: Tulis ulang metode dokumen publik getFormatByFilextension (string extension) Metode dalam kelas BasicDocumentFormatRegistry. Selama nama sufiks berisi Doc, gunakan format DocumentFormat Doc
// // JodConverter - Java Opendocument Converter // Hak Cipta (C) 2004-2007 - Mirko Nasato <[email protected]> // // Perpustakaan ini adalah perangkat lunak gratis; Anda dapat mendistribusikannya dan/atau // memodifikasinya berdasarkan ketentuan lisensi publik GNU yang lebih rendah // seperti yang diterbitkan oleh Yayasan Perangkat Lunak Gratis; Salah satu // Versi 2.1 dari lisensi, atau (atas opsi Anda) versi selanjutnya. // // Perpustakaan ini didistribusikan dengan harapan akan berguna, // tetapi tanpa jaminan apa pun; bahkan tanpa jaminan tersirat dari // dapat diperjualbelikan atau kebugaran untuk tujuan tertentu. Lihat Lisensi Publik Umum GNU // yang lebih rendah untuk lebih jelasnya. // http://www.gnu.org/copyleft/lesser.html // package com.artofsolving.jodconverter; impor java.util.arraylist; impor java.util.iterator; impor java.util.list; / *** Tulis ulang format dokumen BasicDocumentFormatRegistry* @Author Huguangjun*/ kelas publik BASICDOCUMENTFORMATRegistry mengimplementasikan DocumentFormatRegistry {Private List/* <CocumentFormat>*/ DocumentFormats = new ArrayList (); public void addDocumentFormat (DocumentFormat DocumentFormat) {documentFormats.add (DocumentFormat); } Daftar Protected/ * <CocumentFormat> */ getDocumentFormats () {return DocumentFormats; } / ** * @param Extension * Ekstensi file * @return The DocumentFormat untuk ekstensi ini, atau null jika ekstensi * tidak dipetakan * / public documentFormat getFormatByFilextension (string extension) {if (extension == null) {return null; } // sufiks nama file terpadu if (extension.indexof ("doc")> = 0) {extension = "doc"; } if (extension.indexof ("ppt")> = 0) {extension = "ppt"; } if (extension.indexof ("xls")> = 0) {extension = "xls"; } String lowerextension = extension.tolowercase (); untuk (iterator it = documentFormat.iterator (); it.hasnext ();) {DocumentFormat format = (DocumentFormat) it.next (); if (format.getFileExtension (). Equals (lowerextension)) {return format; }} return null; } public DocumentFormat getFormatByMimeType (String mimetype) {for (iterator it = documentFormat.iterator (); it.hasnext ();) {DocumentFormat format = (DocumentFormat) it.next (); if (format.getMimetype (). Equals (mimetype)) {return format; }} return null; }}
Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.