Convertir doc en pdf à l'aide d'Apache POI
Je suis en train de convertir doc en pdf à l'aide d'Apache POI, mais le document pdf résultant contient seulement du texte, c'est de ne pas avoir tout le formatage comme des images, des tableaux d'alignement etc.
Comment puis-je convertir doc en pdf avec avoir tous le formatage comme des tableaux, des images, des alignements?
Voici mon code:
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.OutputStream;
import com.lowagie.text.Document;
import com.lowagie.text.DocumentException;
import com.lowagie.text.Paragraph;
import com.lowagie.text.pdf.PdfWriter;
import org.apache.poi.hwpf.HWPFDocument;
import org.apache.poi.hwpf.extractor.WordExtractor;
import org.apache.poi.hwpf.usermodel.Range;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
public class demo {
public static void main(String[] args) {
POIFSFileSystem fs = null;
Document document = new Document();
try {
System.out.println("Starting the test");
fs = new POIFSFileSystem(new FileInputStream("Resume.doc"));
HWPFDocument doc = new HWPFDocument(fs);
WordExtractor we = new WordExtractor(doc);
OutputStream file = new FileOutputStream(new File("test.pdf"));
PdfWriter writer = PdfWriter.getInstance(document, file);
Range range = doc.getRange();
document.open();
writer.setPageEmpty(true);
document.newPage();
writer.setPageEmpty(true);
String[] paragraphs = we.getParagraphText();
for (int i = 0; i < paragraphs.length; i++) {
org.apache.poi.hwpf.usermodel.Paragraph pr = range.getParagraph(i);
paragraphs[i] = paragraphs[i].replaceAll("\\cM?\r?\n", "");
System.out.println("Length:" + paragraphs[i].length());
System.out.println("Paragraph" + i + ": " + paragraphs[i].toString());
//add the paragraph to the document
document.add(new Paragraph(paragraphs[i]));
}
System.out.println("Document testing completed");
} catch (Exception e) {
System.out.println("Exception during test");
e.printStackTrace();
} finally {
//close the document
document.close();
}
}
}
le document pdf résultant contient seulement du texte, c'est de ne pas avoir toute mise en forme tels que des images, des tableaux d'alignement - vous obtenez seulement le texte, car vous ne faites que de l'utilisation de la
Merci pour le lien , pouvez-vous me donner un exemple simple pour que. Encore Une Fois Merci.
Vous dites que votre tâche est de convertir doc en pdf avec avoir tous le formatage comme des tableaux, des images, des alignements. Pour faire une telle conversion complète, un exemple peut essentiellement être une autre conversion complète. Si vous voulez un exemple plus simple, les couper vers le bas de votre devoir de faire quelque chose de plus simple en fait. Je vais faire une réponse avec quelques explications.
WordExtractor.getParagraphText
de sortie. Si vous voulez extraire des styles, etc il ya beaucoup plus d'informations à prendre en compte. Jetez un oeil à la WordToHtmlConverter
pour avoir une idée de la façon d'extraire toutes les données dont vous avez besoin.Merci pour le lien , pouvez-vous me donner un exemple simple pour que. Encore Une Fois Merci.
Vous dites que votre tâche est de convertir doc en pdf avec avoir tous le formatage comme des tableaux, des images, des alignements. Pour faire une telle conversion complète, un exemple peut essentiellement être une autre conversion complète. Si vous voulez un exemple plus simple, les couper vers le bas de votre devoir de faire quelque chose de plus simple en fait. Je vais faire une réponse avec quelques explications.
OriginalL'auteur | 2013-07-24
Vous devez vous connecter pour publier un commentaire.
La tâche à accomplir est convertir doc en pdf avec avoir tous le formatage comme des tableaux, des images, des alignements.
La création d'une classe de convertisseur de
Il y a déjà
WordToXxxConverter
classes dans Apache POI, à savoir WordToFoConverter, WordToHtmlConverter, et WordToTextConverter. Ce dernier est probablement trop de perte de qualité pour servir d'exemple à vos exigences, mais les deux premiers sont adéquates.Tous ces convertisseur classes sont dérivées de la classe de base commune AbstractWordConverter qui fournit un cadre de base pour word de conversion les classes. En outre, toutes ces classes font usage d'une correspondance
*DocumentFacade
classe qui encapsule le béton de la cible (ou intermédiaire) format de création: FoDocumentFacade, HtmlDocumentFacade, ou TextDocumentFacade.Pour mettre en œuvre votre tâche convertir doc en pdf avec avoir tous le formatage comme les tableaux, les images, les alignements, les par conséquent, vous devez également dériver une classe de convertisseur de que AbstractWordConverter et pour mettre en œuvre les méthodes abstraites laissez-vous inspirer par les trois concrètes de mise en œuvre de classes. Comme dans les autres convertisseur de classes, en concentrant le très PDF de la bibliothèque de code spécifique dans un
PdfDocumentFacade
de la classe semble être une bonne idée.Si vous voulez commencer simple et ajouter le plus complexe de détails plus tard, vous pouvez commencer par utiliser beaucoup WordToTextConverter la mise en œuvre du premier code et dès que ça fonctionne au moins sur une preuve-de-concept de niveau, d'étendre les fonctionnalités pour couvrir également de plus en plus de la mise en forme de l'information.
Malheureusement ce convertisseur cadre est un peu l'élément DOM centrée sur: AbstractWordConverter rappels attendre et en avant des éléments du DOM comme des indicateurs de la cible actuelle du document de contexte; à première vue, il ne semble pas faire usage de ce contexte étant un élément du DOM, de sorte que vous pourriez sortir avec la copie de la classe de base et l'échange de celles de l'élément DOM paramètres avec un plus à propos de type ou encore mieux une classe générique paramètre.
À l'aide de Mot-pour-XXX convertisseurs en combinaison avec l'existant XXX-Pdf convertisseurs
Si cela semble trop complexe ou trop de temps pour vos ressources, vous pouvez essayer une approche différente: Vous pouvez essayer d'utiliser la sortie de l'un de ces convertisseurs mentionné ci-dessus comme l'entrée d'une autre conversion en Pdf.
À l'aide de conversion existants des classes va tourner résultats plus tôt, mais multi-étape de conversions ont tendance à être plus figé que d'une seule étape. La décision est à vous.
Dans le code que vous avez posté votre question que vous avez utilisé la bibliothèque iText classes. iText prend en charge la conversion de code HTML vers PDF avec certaines limitations à l'aide de la
XMLWorker
fourni dans le iText XML Travailleur sous-projet. Dans l'ancienne iText versions il y a également l'habitude d'être le maintenant obsolèteHTMLWorker
classe. Ainsi, à l'aide de la WordToHtmlConverter en combinaison avec la iTextXMLWorker
peut être une option pour vous.Sinon Apache fournit également XSL FO de traitement au format PDF. Ceci s'applique à la sortie de WordToFoConverter peut également être une option
OriginalL'auteur mkl
Comme une alternative à POI (mais toujours dans la Java de domaine), vous pourriez envisager de docx4j (qui, je le plomb/maintenir).
Pour les fichiers docx, docx4j pouvez convertir le fichier PDF en convertissant d'abord à FO, et ensuite à l'aide de FOP à convertir au format PDF.
Pour héritage binaire les fichiers doc (ainsi que les fichiers docx), nous avons une haute performance de la solution commerciale. Vous pouvez essayer à http://converter-eval.plutext.com/plutext/converter, ou obtenir plus d'informations à http://www.plutext.com/m/index.php/products-docx-to-pdf.html
OriginalL'auteur JasonPlutext
J'ai utilisé OpenOffice/LibreOffice pour l'exportation au format PDF, il a une certaine automatisation de soutien, c'est à dire quelque chose comme
vous permet de convertir le doc au format pdf.
OriginalL'auteur centic