Eksportuj do PDF z określoną nazwą

Użytkowanie arkusza kalkulacyjnego
12345
Posty: 8
Rejestracja: pn lut 11, 2013 12:20 pm

Eksportuj do PDF z określoną nazwą

Post autor: 12345 »

Witam ponownie, problem tym razem dotyczy zapisania w pdf-ie. Jak zmienić te makro:

Kod: Zaznacz cały

Sub ZapiszjakoPDF
dim document as object
dim dispatcher as object
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dim args1(1) as new com.sun.star.beans.PropertyValue
args1(1).Name = "FilterName" 'wlacz export...
args1(1).Value = "calc_pdf_Export" '...do pdf
args1(1).Name = "URL" 'zapisz plik...
args1(1).Value = nazwapliku '...o nazwie...
dispatcher.executeDispatch(document, ".uno:ExportDirectToPDF", "",0, args1())
End Sub 
Aby, zapisywać jedynie pierwszą stronę dokumentu oraz żeby nazwę pdfa brał z komórki C15 w arkuszu Oferta?
OpenOffice 3.4.1 XP
belstar
Posty: 654
Rejestracja: czw mar 17, 2011 9:08 am

Re: Eksportuj do PDF z określoną nazwą

Post autor: belstar »

12345 pisze:Jak zmienić te makro Aby, zapisywać jedynie pierwszą stronę dokumentu:
wszystkie potrzebne informacje znajdziesz tu:
http://forum.openoffice.org/pl/forum/vi ... f=9&t=1613
12345 pisze:żeby nazwę pdfa brał z komórki C15 w arkuszu Oferta?
i tu:
http://forum.openoffice.org/pl/forum/vi ... =27&t=1275
LibreOffice 5.1.2.2 Ubuntu 16 LTS
12345
Posty: 8
Rejestracja: pn lut 11, 2013 12:20 pm

Re: Eksportuj do PDF z określoną nazwą

Post autor: 12345 »

Kod: Zaznacz cały

sub export_pdf
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "PageRange"
args1(0).Value = "1"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())

rem ----------------------------------------------------------------------
dim args2(2) as new com.sun.star.beans.PropertyValue
  Dim Cel        As Object
  Dim Werkblad    As Object
  Dim Werkmap    As Object
 
  Werkmap=ThisComponent
  Werkblad=Werkmap.Sheets.getByName("Oferta")
  Cel=Werkblad.getCellByposition(2,14) 


args2(0).Name = "URL"
args2(0).Value = "file:///C:/"& Cel.getString()&".pdf"
args2(1).Name = "FilterName"
args2(1).Value = "calc_pdf_Export"
args2(2).Name = "PageRange"
args2(2).Value = "1"
  
dispatcher.executeDispatch(document, ".uno:DefinePrintArea", "", 0, args1())
dispatcher.executeDispatch(document, ".uno:ExportToPDF", "", 0, args2())

end sub
Funkcja z zakresem eksportu do pdf (PageRange) nie działa tak jak powinna.
Czy coś źle zrozumiałem z tej strony? http://wiki.openoffice.org/wiki/API/Tut ... ort_basics
OpenOffice 3.4.1 XP
zibion81
Posty: 4
Rejestracja: wt lut 04, 2014 3:44 am

Re: Eksportuj do PDF z określoną nazwą

Post autor: zibion81 »

[quote="12345"]

Kod: Zaznacz cały

sub export_pdf
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "PageRange"
args1(0).Value = "1"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())

rem ----------------------------------------------------------------------
dim args2(2) as new com.sun.star.beans.PropertyValue
  Dim Cel        As Object
  Dim Werkblad    As Object
  Dim Werkmap    As Object
 
  Werkmap=ThisComponent
  Werkblad=Werkmap.Sheets.getByName("Oferta")
  Cel=Werkblad.getCellByposition(2,14) 


args2(0).Name = "URL"
args2(0).Value = "file:///C:/"& Cel.getString()&".pdf"
args2(1).Name = "FilterName"
args2(1).Value = "calc_pdf_Export"
args2(2).Name = "PageRange"
args2(2).Value = "1"
  
dispatcher.executeDispatch(document, ".uno:DefinePrintArea", "", 0, args1())
dispatcher.executeDispatch(document, ".uno:ExportToPDF", "", 0, args2())

end sub
Proszę o pomoc. Chciałem uzyć tego makra ale wywala mi "Błąd sładni" i wskazuje na: dim document as object
Pomóżcie je dostosować.
OpenOffice 2.4 pod Ubuntu 9.04
Jan_J
Posty: 4576
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: Eksportuj do PDF z określoną nazwą

Post autor: Jan_J »

@ zibion81
Skrypt jest niezabezpieczony przed błędami (np. brakiem arkusza o wskazanej nazwie), ale nie ma błędu składniowego.

@ 12345
Dokumentacja jest nieadekwatna do stanu faktycznego. Z tajemniczego powodu obowiązuje kolejność argumentów, na dodatek opcje filtra muszą być przekazywane w osobnej tablicy. Patrz http://listarchives.libreoffice.org/glo ... 27928.html.
To działa:

Kod: Zaznacz cały

sub export_pdf
    rem ----------------------------------------------------------------------
    rem define variables
    dim document   as object
    dim dispatcher as object
    rem ----------------------------------------------------------------------
    rem get access to the document
    document   = ThisComponent.CurrentController.Frame
    dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

    rem ----------------------------------------------------------------------
    dim args1(0) as new com.sun.star.beans.PropertyValue
    args1(0).Name = "CellRange"
    args1(0).Value = "A1:D1000"

    Cel = ....

    rem ----------------------------------------------------------------------

	dim args3(0) as new com.sun.star.beans.PropertyValue
	args3(0).Name = "PageRange"
	args3(0).Value = "1"

    dim args2(2) as new com.sun.star.beans.PropertyValue
    args2(0).Name = "FilterName"
    args2(0).Value = "calc_pdf_Export"
    args2(1).Name = "FilterData"
    args2(1).Value = args3
    args2(2).Name = "URL"
    args2(2).Value = "file:///C:/"& Cel.getString()&".pdf"
     
'    dispatcher.executeDispatch(document, ".uno:DefinePrintArea", "", 0, args1())
    dispatcher.executeDispatch(document, ".uno:ExportToPDF", "", 0, args2())

end sub
  
JJ
LO (24.2|7.6) ∙ Python (3.12|3.11|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
zibion81
Posty: 4
Rejestracja: wt lut 04, 2014 3:44 am

Re: Eksportuj do PDF z określoną nazwą

Post autor: zibion81 »

Konkretnie wygląda to tak:
Zrzut_ekranu_z_2014-02-04_230359A.png
Nie wiem dlaczego taki błąd mi pokazuje.
OpenOffice 2.4 pod Ubuntu 9.04
Jan_J
Posty: 4576
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: Eksportuj do PDF z określoną nazwą

Post autor: Jan_J »

Nie widzę błędu składni czytając kod. Sprawdzałem w LO 4.1 i Apache OO 4.0.1. Nie sprawdzałem w OOo 2.4.
JJ
LO (24.2|7.6) ∙ Python (3.12|3.11|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
Sfor
Posty: 5
Rejestracja: pt lip 19, 2013 12:59 pm

Re: Eksportuj do PDF z określoną nazwą

Post autor: Sfor »

Z powodzeniem stosuję funkcję zapisu do PDFa. Ale zamiast zakresu podawanego z poziomu makra ustawiłem odpowiedni zakres wydruku. Samo makro wykorzystuje metodę storeToURL(sURL,aArgs).

Adres do zapisania PDFa jest brany z arkusza "Zmienne" komórka "A15".
Trzeba przyznać, że lista parametrów przekazywanych do storeToURL jest pokaźna.

Kod: Zaznacz cały

Sub PDF
dim document   as object
dim dispatcher as object
Dim Sheets As Object
Dim Sheet As Object

document = ThisComponent
Sheets = document.Sheets
Sheet = Sheets.getByName("Zmienne")
oCell = Sheet.getCellRangeByName("A15")
sURL=oCell.GetString
  oDoc = ThisComponent

  ' arguments for stroreToURL method
  Dim aArgs(1) As New com.sun.star.beans.PropertyValue
  aArgs(0).Name = "FilterName"
  aArgs(0).Value = "calc_pdf_Export"
  aArgs(1).Name = "FilterData"
REM  aArgs(1).Value = aArg
  aArgs(1).Value = Array(Array("UseLosslessCompression",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("Quality",0,90,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("ReduceImageResolution",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("MaxImageResolution",0,300,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("UseTaggedPDF",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("SelectPdfVersion",0,0,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("ExportNotes",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("ExportBookmarks",0,true,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("OpenBookmarkLevels",0,-1,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("UseTransitionEffects",0,true,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("IsSkipEmptyPages",0,true,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("IsAddStream",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("FormsType",0,0,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("ExportFormFields",0,true,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("HideViewerToolbar",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("HideViewerMenubar",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("HideViewerWindowControls",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("ResizeWindowToInitialPage",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("CenterWindow",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("OpenInFullScreenMode",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("DisplayPDFDocumentTitle",0,true,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("InitialView",0,0,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("Magnification",0,0,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("Zoom",0,100,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("PageLayout",0,0,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("FirstPageOnLeft",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("InitialPage",0,1,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("Printing",0,2,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("Changes",0,4,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("EnableCopyingOfContent",0,true,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("EnableTextAccessForAccessibilityTools",0,true,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("ExportLinksRelativeFsys",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("PDFViewSelection",0,0,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("ConvertOOoTargetToPDFTarget",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("ExportBookmarksToPDFDestination",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("_OkButtonString",0,"",com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("EncryptFile",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("DocumentOpenPassword",0,"",com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("RestrictPermissions",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("PermissionPassword",0,"",com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("PageRange",0,"1",com.sun.star.beans.PropertyState.DIRECT_VALUE))

  oDoc.storeToURL(sURL,aArgs)
End Sub
LibreOffice 3.6.7 na Windows 2000 / LibreOffice 4.0.4 na Windows XP SP3 Prof.
ODPOWIEDZ