Newsgroup: it.comp.lang.visual-basic
Titolo: Manipolare file PDF

Ciao a tutti,
in un programma ho la possibilit� di aprire/modificare un file di word (o
xls).
Io so gi� quando l'utente ha chiuso e salvato il file, per adesso lo
salvo nel DB come blob.
Parallelamente a questo dovrei creare in modo invisibile un PDF di
quel file in una certa cartella. Se possibile imprimendo nelle pagine
Data/Ora/Note (oppure alla peggio allegare in coda una pagina con le info
che mi servono).
Inoltre dovrei avere la possibilit� di prendere es. 5 file PDF creati
e accodarli uno all'altro in un unico file PDF.
C'� qualche componente anche a pagamento, o � qualcosa di fattibile al
limite in .NET?
Grazie a tutti
XPost: it.comp.lang.visual-basic, microsoft.public.it.dotnet.vb
FwUp: it.comp.lang.visual-basic

limite in .NET?
Qui c'� una classe che permette di creare facilmente un PDF da VB, non so se fa
tutto quello di cui hai bisogno, comunque dacci un'occhiata:
http://www.luigimicco.altervista.org/index.php?mod=00_News#
--
ciao
  Stefano

 
http://www.luigimicco.altervista.org/index.php?mod=00_News#
Io non mi fiderei troppo ad usare quella classe in un mio applicativo 
commerciale in quanto i termini di licenza non sono chiari
e la "donazione" che chiedere per avere la versione full � di 200 euro!
Riporto direttamente dalle FAQ
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
4. Se uso la versione FULL, devo pagare royalties, spese annuali o qualsiasi 
altra cosa ?
NO. La classe vbPDF � completamente libera da royalties dopo che hai dato il 
contributo allo sviluppo iniziale. Non ci sono ulteriori spese o pagamenti 
di qualsiasi tipo. Ricorda, per�, che dopo che ottenuto il codice, tu non 
diventi proprietario del codice, ma ha la licenza per usarlo, in qualsiasi 
modo tu voglia. L'UNICO limite nell'uso � che tu NON puoi creare componenti 
software, librerie o classi, o qualsiasi altra applicazione che � o sar� 
concorrente a clsPDFCreator. In altre parole, non puoi usare il mio codice 
per farmi concorrenza (credo sia il minimo che posso chiederti).
[Indice]
5. Posso usare clsPDFCreator nelle mie applicazioni per scopi commerciali ?
La classe clsPDFCreator NON E' UNA CLASSE FREEWARE, ma essendo solo puro 
codice � un po' difficile controllarne l'utilizzo. Quello che ti chiedo � di 
comunicarmi almeno l'uso che vuoi farne.
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Che significa che non � una classe freeware? Che io la uso e se poi te ne 
accorgi mi chiedi i soldi? Bah...
Comunque tornando a noi una buona libreria per creare PDF (compilata con il 
framework 1.0 purtroppo) � ItextSharp 
http://itextsharp.sourceforge.net/
 , 
assolutamente Open Source
un PDF merger invece lo trovi qui 
http://www.paologios.com/products/?type=src
 l'esempio � in C# ma la libreria 
una volta compilata la puoi usare tranquillamente in 
vb.net
 

 
http://www.luigimicco.altervista.org/index.php?mod=00_News#
Grazie l'avevo vista.
Ho scaricato la free e non mi pare faccia quel che mi serve.
Riepilogando ho trovato un sw da riga di comando che mi dovrebbe fare il
merge di alcuni PDF: 
http://www.pdfsam.org/
 e comunque questa sarebbe la
parte meno importante.
Mi serve per� qualcosa che da un file di DOC o XLS o altro, mi permetta di
creare un PDF, magari facendomi aggiungere delle note, data/ora ecc in
intestazione/Pi�, come fossero scritte nel file di word.
Se gestisse poi un discorso di firma digitale sarebbe il top.
Se si tratta di componente mi servirebbe per VB6 dato che .NET lo sto
studiando ora. Se invece c'� del codice .NET potrei approfittarne per
"metterlo in produzione".
Ora sto provando a vedere se BullZip fa qualcosa.

Ho scaricato la free e non mi pare faccia quel che mi serve.
Sul sito comune c'� qualche sorgente, non so se ci hai gi� dato un occhiata.
http://www.it-lang-vb.net/archivio.asp?subMenu=Tutte&FullText=on&TypeRic=AND&keyword=PDF&x=0&y=0
--
ciao
  Stefano

 
http://www.it-lang-vb.net/archivio.asp?subMenu=Tutte&FullText=on&TypeRic=AND&keyword=PDF&x=0&y=0
Ho visto che di norma si parla di creare un PDF dal nulla.
A me basterebbe convertire un file .doc.
Per assurdo potrei dirgli di stamparlo su una stampante "pdfcreator" o
simile, per� con i punti dell'altro post.
Comunque sto guardando, e vediamo che viene fuori.
Tnx

 FwUp: it.comp.lang.visual-basic
vedi un po tu se ti serve....si parla di java c# et similia
per creare pdf (non so se anche per convertire da doc..)
http://sourceforge.net/projects/itextsharp/
per unire più pdf in un file unico pdf
http://www.wacdesigns.com/2008/10/03/merge-pdf-files-using-c/
non vorrei contraddirti...ma per la conversione in pdf di un doc o
altro non ho mai trovato un componente che fosse freeware che non
passasse attraverso l'installazione di una stampante virtuale!
Tanto vale usare pdf creator....comunque se lo trovi ed è
freeware...batti un colpo!

 passasse attraverso l'installazione di una stampante virtuale!
Secondo me si pu� fare tranquillamente usando il framework UNO di 
OpenOffice, installabile anche in versione stand-alone (URE).
Vedere qui sotto "Simple Save as PDF demo":
http://www.kalitech.fr/clients/doc/VB_APIOOo_en.html
-- 
news:it-alt.comp.software.openoffice : Il newsgroup dedicato a
OpenOffice.org, la suite open source di applicazioni per ufficio.
Scarica "OpenOffice.org 3.0 Soluzioni a raccolta", molto pi� di semplici 
FAQ! 
http://it.openoffice.org/doc/manuali/

 freeware...batti un colpo!
Allora a me va pure bene usare una stampante virtuale, basta che possa fare
tutto da codice.
Son riuscito a fare qualcosa di accettabile con BullZip.
In pratica stampo un documento word settando la stampante, e mi fai il PDF
senza far vedere niente:
http://www.biopdf.com/guide/settings.php
Devo cercare di tunizzare la shellexecute che mi fa vedere comunque word, o
usare l'oggetto word in late binding.
Const PRINTER_PROGID = "Bullzip.PDFPrinterSettings"
Private Sub cmdCreaFile_Click()
    Dim prtidx As Integer
    Dim obj As Object
 
    Rem -- Configure the PDF print job
    Set obj = CreateObject(PRINTER_PROGID)
    obj.SetValue "Output", "<desktop>\myfile.pdf"
    obj.SetValue "ConfirmOverwrite", "no"
    obj.SetValue "ShowSaveAS", "never"
    obj.SetValue "ShowSettings", "never"
    obj.SetValue "ShowProgress", "no"
    obj.SetValue "ShowProgressFinished", "no"
 
    obj.SetValue "ShowPDF", "no"
    obj.SetValue "RememberLastFileName", "no"
    obj.SetValue "RememberLastFolderName", "no"
 
    ' watermark
    obj.SetValue "WatermarkHorizontalPosition", "right"
    obj.SetValue "WatermarkVerticalPosition", "top"
    obj.SetValue "WatermarkFontSize", 10
    obj.SetValue "WatermarkTransparency", 50
    obj.SetValue "WatermarkVerticalAdjustment", 1
    obj.SetValue "WatermarkText", "Test Watermark: " & Now & " - Utente:
Pippo -"
    obj.SetValue "WatermarkRotation", 0
    obj.SetValue "WatermarkOutlineWidth", 0
 
    obj.WriteSettings True
    Rem -- Find the index of the printer
    prtidx = PrinterIndex(PDF_PRINTERNAME)
    If prtidx < 0 Then Err.Raise 1000, , "No printer was found by the name
of '" & PDF_PRINTERNAME & "'."
 
    Rem -- Set the current printer
    Set Printer = Printers(prtidx)
 
    Rem -- Print something
    ''''''''''''''''''''''''''''''''''''''''''''''''''
    ' versione generica
      Dim nRet As Long
      nRet = ShellExecute(Me.hwnd, "Print", Text1.Text, vbNullString, 0&,
0)
 
    ' versione oggetto Word
'      Dim OggettoWord As New Word.Application
'      Dim Documento As Word.Document
'
'      Set OggettoWord = New Word.Application
'      OggettoWord.Visible = False
'
'
'      'Crea nuovo documento con un modello
'
'      Set Documento = OggettoWord.Documents.Open(Text1.Text)
'      Documento.PrintOut
'      Documento.Close
'      OggettoWord.Quit (True)
 
    ''''''''''''''''''''''''''''''''''''''''''''''''''
 
    Rem -- Wait for runonce settings file to disappear
    Dim runonce As String
    runonce = obj.GetSettingsFileName(True)
    While Dir(runonce, vbNormal) <> ""
        Sleep 100
    Wend

 comunicarmi almeno l'uso che vuoi farne.
ti confermo che puoi usare tranquillamente la classe che ho scritto:
ti chiedo solo di conoscerne l'uso. Come è scritto nelle FAQ, essendo
puro codice, non posso controllarne in alcun modo l'utilizzo, se non
fidandomi della bontà degli utenti.
Luigi