Win32ole - Come specificare il formato con SaveAs


#1

Con office 2007 c’è la possibilità di salvare un documento in pdf ma non
capisco come scegliere il formato di salvataggio, prima di perderci del
tempo provo a chiedere magari qualcuno ci è già passato, questo è il
codice di esempio:

require ‘win32ole’
word = WIN32OLE.new(‘Word.Application’)
document = word.Documents.Open(‘C:\prova.doc’)
document.SaveAs(‘C:\out.doc’, 0)
document.close
word.quit

ho provato cambiando l’estensione ma da questa non rileva il tipo
document.SaveAs(‘C:\out.pdf’, 0)


#2

Qua’ c’è scritto di impostare il numero dopo il nome ma come trovare a
cosa corrisponde il pdf?

http://rubyonwindows.blogspot.com/search/label/word


#3

Grazie per la risposta Michele, a quanto pare non è un problema comune.

Comunque ho trovato il sistema ed estendo quanto si può trovare nel blog
che ho citato prima.

Dal blog:
document.SaveAs(‘c:\temp\MyDocument.doc’, 0) # Word document
(default)
document.SaveAs(‘c:\temp\MyDocument.dot’, 1) # Word template
document.SaveAs(‘c:\temp\MyDocument.txt’, 2) # Text
document.SaveAs(‘c:\temp\MyDocument.rtf’, 6) # Rich Text Format (RTF)

Da office 2003 in poi:
document.SaveAs(‘c:\temp\MyDocument.xml’, 11) # Xml format

Da office 2007 + plugin pdf in poi:
document.SaveAs(‘c:\temp\MyDocument.pdf’, 17) # Pdf format

Ciao


#4

Marco M. wrote:

Con office 2007 c’è la possibilità di salvare un documento in pdf ma non
capisco come scegliere il formato di salvataggio, prima di perderci del
tempo provo a chiedere magari qualcuno ci è già passato, questo è il
codice di esempio:

require ‘win32ole’
word = WIN32OLE.new(‘Word.Application’)
document = word.Documents.Open(‘C:\prova.doc’)
document.SaveAs(‘C:\out.doc’, 0)
document.close
word.quit

ho provato cambiando l’estensione ma da questa non rileva il tipo
document.SaveAs(‘C:\out.pdf’, 0)

Io ho lavorato con xls.
Ho creato una classe per semplificarmi la vita (per la gestione dei
fogli e delle celle). Tornando al tuo problea. Spezzoni della classe
[…]
def initialize(nomefile, fogli)
#inizializza le variabili e prepara i fogli di lavoro
@nome_file = nomefile
@excel = WIN32OLE.new(“excel.application”)
@excel.visible = false
@excel.DisplayAlerts = false
@workbook = @excel.workbooks.add
[…]

def salva_file
@workbook.saveas @nome_file
end
[…]

Le differenze (rispetto al tuo codice) sono 3

  1. non uso il metodo saveas sull’oggetto excel ma su workbook
  2. il metodo saveas è minuscolo
  3. senza parentesi e senza il parametro zero

P.S. ricordati di liberare la memoria chiudendo word.

Ciao Michele.