Tisk souboru, vybírání stránek k tisku   zodpovězená otázka

VB.NET, WinForms, Tisk

Dobrý den,

Povedlo se mi najít jeden skript na tisk souboru, ale nemohu nalézt, jak vytisknout jenom 1,2 a 4 stránku. Jde to nějak?

Dim MyProcess As New Process
        MyProcess.StartInfo.CreateNoWindow = False
        MyProcess.StartInfo.Verb = "print"
        MyProcess.StartInfo.FileName = "C:\Texty.doc"
        MyProcess.Start()
        MyProcess.WaitForExit(10000)
        MyProcess.Close()

Děkuji

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Tímto způsobem půjde vytisknout pouze celý dokument.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

A je nějaký jiný způsob?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Mohlo by to jít použitím COM rozhraní Wordu, ale nezkoušel jsem to, tak si nejsem na 100% jist. Podmínkou je samozřejmě aby na všech počítačích kde to má chodit byl nainstalován Word.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Podívejte se na článek na tomto webu (i když je už staršího data), tam je vysvětleno, jak vytvořit programově instanci Wordu a otevřít v ní dokument.

Pak stačí zavolat metodu PrintOut, které dáte do parametru Pages to samé, co byste napsal do příslušného políčka dialogu pro tisk, např. 1-3,4,17-19,20.

http://msdn.microsoft.com/en-us/library/...

nahlásit spamnahlásit spam 0 odpovědětodpovědět

No však to je právě ono použití COM rozhraní Wordu. Šlo by to udělat i pomocí obyčejného VBScriptu, ve kterém by se vytvořila instance pomocí CreateObject.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

A lze tím vytisknout i soubor MS Publisher? Je ten postup stejný?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Možná ta funkce bude jiná, ale ten dialog pro tisk určitě nějakou funkci volá a co má tisknout, jí předává.

Interop pro Publisher existuje, takže by to mělo jít.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Nevim proč, ale píše mi to chybu :(.

Type 'Microsoft.Office.Interop.Word.Application' is not defined.

Dim w As New Microsoft.Office.Interop.Word.Application()
        w.Documents.Open(IO.Path.Combine(Application.StartupPath, "C:\Texty.doc")).Activate()

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Vsadím se, že jste se neobtěžoval přidat referenci na to COM rozhraní...

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Pro Publisherové dokumenty samozřejmě musíte použít COM rozhraní Publisheru a ne Wordu.

Není to žádná univerzální věc (ta ani neexistuje), pro každý dokument musíte použít COM rozhraní příslušné aplikace, pokud ho má a pokud přes něj podporuje tisk.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Píše to ještě chybu, že tu knihovnu nemůže nalézt.

Přídával jsem tam oboje a psalo to u obou.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Nesmysl. Nemohl jste to tam přidávat když to hlásí tuto chybu. Víte vůbec o čem mluvím? Pokud ne, řekněte to rovnou a lidé se tu nebudou snažit radit zbytečně.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Asi ano. Ve Visual Basicu dám nahoře "Project", "Add references...", vyberu "COM" a "Microsoft Publisher nebo Word Library 11.0".

Poté to ihned napíše:

"The referenced component 'Publisher' could not be found."

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Musíte vybrat tu knihovnu Publisheru. Pak by to mělo jít, samozřejmě použijte Object Browser a podívejte se, ve kterém jmenném prostoru ta třída je.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Už jsem zjistil, proč to nešlo, jsem neměl nainstalovany ty knihovny. Word funguje bezvadně, ale mám problém s otevřením:

Dim w As New Microsoft.Office.Interop.Publisher.Application()
w.document.Open(IO.Path.Combine(Application.StartupPath, "C:\Pub.pub")).Activate() 'Tady to píše Public member 'document' on type 'ApplicationClass' not found.

Dim w As New Microsoft.Office.Interop.Word.Application()
w.document.Open(IO.Path.Combine(Application.StartupPath, "C:\Texty.doc")).Activate() 'Ale s tímto problém není
nahlásit spamnahlásit spam 0 odpovědětodpovědět

No protože na proměnné w v prvním případě neexistuje vlastnost Document.

Ono to asi nebude stejné, když je každé jiná aplikace, kterou psali úplně jiní lidé.

Podívejte se přes ObjectBrowser na tu třídu Microsoft.Office.Interop.Publisher.Application, a uvidíte, co obsahuje za prvky. Nebo použijte IntelliSense.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Já se v tom jaksi nevyznám, nemohl byste mi poslat prosím kód?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Díky. Už mi vše funguje jak má.

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback