2009-10-08 61 views
13

Capisco che iTextSharp possa essere usato per convertire un documento in pdf.iTextSharp - Converti word doc/docx in pdf

Ma prima dobbiamo creare un documento da zero utilizzando iTextSharp.text.Document e quindi aggiungendo elementi a questo documento.

Cosa succede se ho un file doc esistente, è possibile convertire questo documento in pdf utilizzando iTextSharp.

Inoltre, voglio usare iTextSharp o qualsiasi altro strumento simile che può effettuare in seguito su un file doc:

  1. manipolazione del doc file/docx/di testo (come la sostituzione di alcuni segnaposto con i valori DB), così come
  2. converte loro di .pdf

Chiunque abbia idea su questo, si prega di condividere.

Grazie!

+0

Per la massima flessibilità, è possibile prendere in considerazione soluzioni separate "di prim'ordine" per ciascuna delle fasi di manipolazione e conversione. Questa è la bellezza dei formati di file standard (doc, docx). – JasonPlutext

risposta

13

Il componente Aspose.Words può farlo in modo affidabile (non sono affiliato o altro).

iTextSharp non ha la funzionalità richiesta per caricare ed elaborare i formati di file MS Word.

+1

Grazie a tutti per il vostro aiuto. Per il mio attuale scenerio, userò la libreria Aspose per fare manipolazione doc/docx e infine convertire il documento risultato in pdf dopo l'unione. Ho scaricato la versione di prova gratuita di 30 giorni e sembra che risolva tutti i miei problemi. Suggerirei a chiunque di utilizzare Aspose per avere prima la versione di prova e poi prendere la decisione. – iniki

+1

Aspose fa delle buone conversioni OpenXml-to-PDF nella maggior parte dei casi, ma ricorda che al momento ha un supporto scarso o inesistente per alcune funzionalità Open XML, come i controlli del contenuto e i nodi AltChunk. –

+0

Una recente alternativa è il convertitore docx/PDF commerciale di/Plutext; provalo su http://converter-eval.plutext.com/ – JasonPlutext

0

Per la manipolazione di docx, è necessario utilizzare il metodo Open XML nativo. Scarica Open XML SDK 2 di Microsoft.

E quindi è possibile convertire i file docx in pdf con questa libreria a pagamento: http://www.subsystems.com/dpw.htm. E 'davvero grandioso.

+1

non è eccezionale. Provato, cambia i caratteri ovunque e rimuove la formattazione della pagina. – Jerome

+0

Non è * ottimo *, @Franklin. Sono d'accordo. Ma una volta superata la curva di apprendimento puoi controllare la formattazione, i caratteri, ecc. Quella curva di apprendimento fa schifo, anche se – Rap

1

Se non ti interessa sapere se la formattazione sarà fedele a ciò che Word visualizzerà, c'è l'impressionante docx2tex che converte i file docx di Word 2007 in documenti Latex. Una volta in Latex, hai molto potere di riformattare il documento in modo programmatico e generare PDF da esso.

Dico di più sull'utilità in una risposta allo tex.stackexchange.

3

Aspose.Words è davvero una buona soluzione, ma non offre una perfetta fedeltà. Al momento della scrittura ha problemi con i linguaggi non romani, la formattazione complessa come elementi fluttuanti e una serie di altri problemi.

Si consiglia di dare un'occhiata a questo PDF Conversion Web Service che può essere utilizzato da qualsiasi ambiente in grado di servizi Web tra cui Java e .NET.

Nota che ho lavorato a questo progetto in modo da applicare le normali dichiarazioni di non responsabilità.

+0

Il servizio Web di conversione PDF invoca Microsoft Word per convertire i documenti in PDF. Questo è solo l'automazione di Word chiunque può farlo. – romeok

+4

In realtà è un bel po 'di più, ma sapendo chi sei sei così prevenuto come lo sono io :-) Bel lavoro su Aspose.Words, ottimo prodotto, lo consiglio tutto il tempo. –

+0

Il prezzo per il servizio di conversione è $ 1500 per 1 server. @iniki potrebbe essere meglio con DynamicPDF Converter o Aspose per lo stesso prezzo o meno, e funziona tutto in codice gestito e non richiede l'installazione di Word o la gestione di un servizio web. Tuttavia, a questo punto, nulla offrirà la fedeltà di conversione che può fare l'automazione delle parole interop. – MikeTeeVee

3

È possibile utilizzare il metodo esistente di Microsoft.Office

private Microsoft.Office.Interop.Word.ApplicationClass MSdoc; 

    //Use for the parameter whose type are not known or say Missing 
    object Unknown = Type.Missing; 

    private void word2PDF(object Source, object Target) 
    { //Creating the instance of Word Application 
     if (MSdoc == null)MSdoc = new Microsoft.Office.Interop.Word.ApplicationClass(); 

     try 
     { 
      MSdoc.Visible = false; 
      MSdoc.Documents.Open(ref Source, ref Unknown, 
       ref Unknown, ref Unknown, ref Unknown, 
       ref Unknown, ref Unknown, ref Unknown, 
       ref Unknown, ref Unknown, ref Unknown, 
       ref Unknown, ref Unknown, ref Unknown, ref Unknown, ref Unknown); 
      MSdoc.Application.Visible = false; 
       MSdoc.WindowState = Microsoft.Office.Interop.Word.WdWindowState.wdWindowStateMinimize; 

      object format = Microsoft.Office.Interop.Word.WdSaveFormat.wdFormatPDF; 

      MSdoc.ActiveDocument.SaveAs(ref Target, ref format, 
        ref Unknown, ref Unknown, ref Unknown, 
        ref Unknown, ref Unknown, ref Unknown, 
        ref Unknown, ref Unknown, ref Unknown, 
        ref Unknown, ref Unknown, ref Unknown, 
        ref Unknown, ref Unknown); 
      } 
      catch (Exception e) 
      { 
      MessageBox.Show(e.Message); 
      } 
     finally 
      { 
      if (MSdoc != null) 
      { 
       MSdoc.Documents.Close(ref Unknown, ref Unknown, ref Unknown); 
       //WordDoc.Application.Quit(ref Unknown, ref Unknown, ref Unknown); 
      } 
      // for closing the application 
      WordDoc.Quit(ref Unknown, ref Unknown, ref Unknown); 
     } 
    } 
+0

Certo, tieni presente che quando lavori in un Server ambiente, questo non è raccomandato. Vedi http://support.microsoft.com/kb/257757 – Daniel

+0

Sembra buono come un vaso di MS Office ma non ho avuto modo di usarlo nel mio programma. Non ho potuto ottenere il jar di Microsoft Office. Puoi aiutarmi per favore. –

+0

dovresti usare una sorta di libreria di interoperabilità COM come Jacob per essere in grado di gestire gli oggetti MS-Office direttamente dal codice Java (almeno questo era il caso di JDK 1.5) - anche allora il codice sarebbe un po 'più brutto. a giudicare dalla libreria "ref" e Interop, il codice sopra riportato è scritto in C# –

0

io ho lo stesso problema.
Dopo diversi giorni di tentativi di trovare una soluzione, sembra che Docx4J, uno strumento basato su Java o stampanti PDF come PDFCreator, possano essere tra la soluzione gratuita.
Di sicuro, solo uno strumento commerciale può effettivamente svolgere l'attività richiesta.
Sul lato Microsoft, è possibile utilizzare Sharepoint Word Automation Services abilitato sul lato server (controllare il 7 giugno 2016) o eseguire l'interoperabilità nel computer locale.
La conversione part-to-part suggerita (DOC o DOC in alcune lingue intermedie e poi in PDF) sembra, non è possibile, ciò che gli utenti hanno detto su StackOverflow o altri forum, perché il risultato non è quello atteso.