gelöst: nur eine Seite bzw Selektion als pdf

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: gelöst: nur eine Seite bzw Selektion als pdf

Re: nur eine Seite bzw Selektion als pdf

von erikafuchs » Do, 24.04.2008 17:21

Lieber Stephan,

ich weiss, das kommt etwas spät! Das genannte Problem hat mich gerade mal wieder überfallen. Ich habe dein Listing übernommen - es hat auf Anhieb geklappt!!! Sieht irgendwie ganz einfach aus.

Tausend Dank!
Gruß
Pit

Re: nur eine Seite bzw Selektion als pdf

von Stephan » Mi, 16.01.2008 01:10

Ja wir Lehrer, wir können einfach nicht erklären ...
Nö, so meinte ich das nicht, mir hilft nur ein konkreter Hinweis weil ich sonst vor der Schwierigkeit stehe mir eine Beispieldatei ausdenken zu müssen um das zu testen und dazu bin ich zu faul :lol: .
Naja, nun lag ich ja ohnehin falsch ... also dann:

Ich hielte es dann für besser, wie schon vorgeschlagen, einen Druckbereich zu verwenden und das Markierungs'geraffel' sein zu lassen. Versuche also das hier:

Code: Alles auswählen

Sub Main
dim document   as object
dim dispatcher as object
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dim args1(3) as new com.sun.star.beans.PropertyValue
args1(0).Name = "URL"
args1(1).Name = "FilterName"
args1(1).Value = "calc_pdf_Export"
args1(2).Name = "FilterData"
args1(2).Value = Array(Array("UseLosslessCompression",0,true,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("Quality",0,70,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("ReduceImageResolution",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("MaxImageResolution",0,150,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("UseTaggedPDF",0,false,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("_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("",0,,com.sun.star.beans.PropertyState.DIRECT_VALUE))
args1(3).Name = "SelectionOnly"
args1(3).Value = true

tabelle=ThisComponent.sheets(0)
Dim oRanges(0) As New com.sun.star.table.CellRangeAddress
oRanges(0).Sheet = tabelle.Rangeaddress.sheet

l=35
for n=0 to 22 
	o=0
	r=l+2
	u=36
	oRanges(0).StartColumn = l : oRanges(0).StartRow = o 
	oRanges(0).EndColumn = r : oRanges(0).EndRow = u 
	tabelle.setPrintAreas(oRanges())
	
	schueler=tabelle.getCellByPosition(l+2,0).string
	args1(0).Value = "file:///D:/Schule/Listen%20und%20Noten/Schuljahr%2007-08/Note_2_" & schueler & ".pdf"
	dispatcher.executeDispatch(document, ".uno:ExportToPDF", "", 0, args1())
	l=l+3
next

End Sub
wenns nicht geht, ist es höchstens eine Kleinigkeit, ich bin im Moment etwas unkonzentriert.
setzt am Anfang l auf 35 und erst in der zweiten Runde wird l um 5 hochgesetzt. Aber das ist ja auch nicht das Problem.
also keine Ahnung warum das nun kein Problem sein soll, gemäß Deiner Angaben soll das erste Dokument in Spalte 35 beginnen und das nächste in 38 - mit Summanden 5 beginnt es aber in 40. Obenstehendes Makro ist nun mit Summanden 3.
Ich habe aber keine Ahnung wie und habe ja anscheinend nicht das Makro verändert (Das ist ja unverändert noch so da), sondern irgendeine Einstellung(?) und habe keine Idee welche. Zum letzten Zeugnistermin hat ja dieses Makro noch funktioniert.
kann ich aus dem Handgelenk nicht sagen was vor einem Jahr für eine OOo-Versiob aktuell war, in jedem Fall wurde der PDF-Export stetig erweitert und es sind neue Optionen hinzugekommen.



Gruß
Stephan

Re: nur eine Seite bzw Selektion als pdf

von erikafuchs » Di, 15.01.2008 22:26

Lieber Stefan,
vielen Dank für deine Mühe!
Stephan hat geschrieben:
jetzt klappt es aber nicht mehr

dann wäre es schön wenn dastünde was konkret nicht klappt.
Ja wir Lehrer, wir können einfach nicht erklären ...
Also - was nicht klappt ist, dass das Makro, wenn man den Ablauf beobachtet, die einzelnen Bereiche brav markiert und dann auch 22 pdf Dateien abspeichert, aber in jedem Makro das komplette Datenblatt abgespeichert ist und keineswegs nur die Markierung, die pdf Dateien sind also absolut identisch.
Stephan hat geschrieben:sofern (0,37) nur ein Schreibfehler ist und (37,0) heißen soll ist das klar.
ist also nur ein Fehler in meiner Beschreibung. Das Problem ist, dass nicht der selektierte Bereich ausgedruckt wird sondern das ganze Blatt.

Stephan hat geschrieben: Code: Alles auswählen
l=l+5
next

setzt l im ersten Durchlauf auf 40

Code: Alles auswählen

l=35
for n=0 to 22
o=0
r=l+2
u=36
zellen=tabelle.getCellRangeByPosition(l,o,r,u)
setzt am Anfang l auf 35 und erst in der zweiten Runde wird l um 5 hochgesetzt. Aber das ist ja auch nicht das Problem. Mein Problem ist im ersten Projekt, dass nicht der selektierte Bereich gedruckt wird sondern das ganze Blatt und im zweiten Projekt wird nicht die erste Seite ausgedruckt, sondern alle Seiten. Ich habe übrigens bei der Suche festgestellt, dass ich letztes Jahr das gleiche Problem hatte. Ich habe es hier im Forum eingestellt und dann irgendwie gelöst (Allerdings nicht nach dem damaligen Vorschlag). Ich habe aber keine Ahnung wie und habe ja anscheinend nicht das Makro verändert (Das ist ja unverändert noch so da), sondern irgendeine Einstellung(?) und habe keine Idee welche. Zum letzten Zeugnistermin hat ja dieses Makro noch funktioniert.

Grüße
Pit

Re: nur eine Seite bzw Selektion als pdf

von Stephan » Di, 15.01.2008 21:37

jetzt klappt es aber nicht mehr
dann wäre es schön wenn dastünde was konkret nicht klappt.
Das folgende Makro soll jeweils die Zeilen 0 bis 35 zunächst von Spalte 35, 36, 37 als pdf ausdrucken mit dem Schülername aus Zelle (0,37) als Dateinamen, dann Spalte 38,39,40 usw. - für 22 Schüler.
sofern (0,37) nur ein Schreibfehler ist und (37,0) heißen soll ist das klar.

Code: Alles auswählen

l=35
for n=0 to 22 
o=0
r=l+2
u=36
zellen=tabelle.getCellRangeByPosition(l,o,r,u)
con.select(zellen)
schueler=tabelle.getCellByPosition(l+2,0).string
sollte im ersten Durchlauf den Bereich 35,0,37,36 markieren und den Dateinamen aus Zelle 37,0 nehmen

Code: Alles auswählen

l=l+5
next
setzt l im ersten Durchlauf auf 40

Code: Alles auswählen

for n=0 to 22 
o=0
r=l+2
u=36
zellen=tabelle.getCellRangeByPosition(l,o,r,u)
con.select(zellen)
schueler=tabelle.getCellByPosition(l+2,0).string
liefert mit nun neuem l im zweiten Durchlauf Markierung des Bereichs 40,0,42,36 mit Dateinamen aus Zelle 42,0

Ist das gewünscht? Nach obriger verbaler Beschreibung nicht.

falls das das ganze Problem ist muß nur

Code: Alles auswählen

l=l+5
geändert werden in:

Code: Alles auswählen

l=l+3
Gibt es keine Option für "Seite1" ausdrucken?
doch, "PageRange", aber das funktioniert, aus mir derzeitig unklaren Gründen, trotz richtiger Parametersetzung bei der Aufzeichnung des Makros nicht. Das internationale Forum liefert mir jedoch die Anregung die Parameterliste als Einzelparameter zu schreiben und erst dann als separates Array zuzuweisen:

Code: Alles auswählen

Sub Main 
Dim aArgs(3) As New com.sun.star.beans.PropertyValue 
Dim aArg1(2) As New com.sun.star.beans.PropertyValue 
Dim oSource As Object 
  sOutURL = "file:///D:/irgendwas.pdf"
  oSource = ThisComponent 

  aArg1(0).Name = "InitialView" 
  aArg1(0).Value = 0 
  aArg1(1).Name = "PageLayout" 
  aArg1(1).Value = 0 
  aArg1(2).Name = "PageRange" 
  aArg1(2).Value = "1-2" 

  aArgs(0).Name = "FilterName" 
  aArgs(0).Value = "calc_pdf_Export" 
  aArgs(1).Name = "Overwrite" 
  aArgs(1).Value = true 
  aArgs(2).Name = "FilterData" 
  aArgs(2).Value = aArg1() 
  aArgs(3).Name = "SelectionOnly" 
  aArgs(3).Value = true 

  oSource.storeToURL(sOutURL, aArgs()) 
End Sub


und das tuts bei mir auch.

Es sollte leicht sein das Ganze mit Hilfe des aufgezeichneten Makros nötigenfalls um weitere Parameter zu ergänzen, also aArg1(3). ... usw.



Gruß
Stephan

Re: nur eine Seite bzw Selektion als pdf

von erikafuchs » Di, 15.01.2008 18:26

Lieber Stefan,

vielen Dank erstmal. Das mit dem Makro aufzeichnen und verändern hatte ich sogar schon mal hinbekommen, jetzt klappt es aber nicht mehr. Ich möchte aus meiner Notenliste (Ich bin Lehrer) jedem Schüler seinen Tabellenteil als pdf zur Verfügung stellen. Das folgende Makro soll jeweils die Zeilen 0 bis 35 zunächst von Spalte 35, 36, 37 als pdf ausdrucken mit dem Schülername aus Zelle (0,37) als Dateinamen, dann Spalte 38,39,40 usw. - für 22 Schüler. Letztes Jahr hat das auch funktioniert - allerdings habe ich in Erinnerung, dass ich auch irgendein Problem hatte. Findet jemand den Fehler:

Code: Alles auswählen

sub pdfExport
dim document   as object
dim dispatcher as object
dim Tabelle as object
dim zellen as object
dim con as object
dim doc as object
dim schueler as string
dim l, o, r, u as long
dim n as integer

document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
doc=ThisComponent
tabelle=ThisComponent.sheets(0)
con=doc.getCurrentController()

dim args2(3) as new com.sun.star.beans.PropertyValue

l=35
for n=0 to 22 
o=0
r=l+2
u=36
zellen=tabelle.getCellRangeByPosition(l,o,r,u)
con.select(zellen)
schueler=tabelle.getCellByPosition(l+2,0).string

args2(0).Name = "URL"
args2(0).Value = "file:///D:/Schule/Listen%20und%20Noten/Schuljahr%2007-08/Note_2_" & schueler & ".pdf"
args2(1).Name = "FilterName"
args2(1).Value = "calc_pdf_Export"
args2(2).Name = "FilterData"
args2(2).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("ExportNotes",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("ExportBookmarks",0,false,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,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("FormsType",0,0,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("ExportFormFields",0,false,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("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("Selection",0,,com.sun.star.beans.PropertyState.DIRECT_VALUE))
args2(3).Name = "SelectionOnly"
args2(3).Value = true

dispatcher.executeDispatch(document, ".uno:ExportToPDF", "", 0, args2())
l=l+5
next

end sub
Und mit meinem zweiten Projekt brauche ich nur eine Seite von mehreren. Ich habe das Makro aufgezeichnet das mir Seite 1 ausdruckt, dazu habe ich in dem Auswahlfeld "Bereich" statt "alle" "Seite 1" angegeben, und das klappt auch. Wenn ich jetzt das Makro aber über ein Schaltknopf aufrufe wird das ganze Dokument ausgedruckt. im Makro steht aber auch nur "selection only". Gibt es keine Option für "Seite1" ausdrucken?

Vielen Dank für eure Hilfe
Pit

Re: nur eine Seite bzw Selektion als pdf

von Stephan » Di, 15.01.2008 14:55

Du kannst das einfach per Makrorekorder aufzeichnen, bei mir gibt das:

Code: Alles auswählen

sub pdf_Auswahl_speichern
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(3) as new com.sun.star.beans.PropertyValue
args1(0).Name = "URL"
args1(0).Value = "file:///C:/Dokumente%20und%20Einstellungen/internet/Desktop/farbtest.pdf"
args1(1).Name = "FilterName"
args1(1).Value = "calc_pdf_Export"
args1(2).Name = "FilterData"
args1(2).Value = Array(Array("UseLosslessCompression",0,true,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("Quality",0,70,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("ReduceImageResolution",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("MaxImageResolution",0,150,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("UseTaggedPDF",0,false,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("_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("Selection",0,,com.sun.star.beans.PropertyState.DIRECT_VALUE))
args1(3).Name = "SelectionOnly"
args1(3).Value = true

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

end sub

Um es händisch zu programmieren, lies einfach die vorhandenen Druckbereiche aus, speichere diese zwischen, setze einen DRuckbereich nur auf die Auswahl, exportiere nach PDF und stelle anschließend die ursprünglichen DRuckbereiche wieder her.
Das Prinzip der Handhabung von Druckbereichen zeigt Dir:
viewtopic.php?f=18&t=6211&hilit=Druckbereich


Gruß
Stephan

gelöst: nur eine Seite bzw Selektion als pdf

von erikafuchs » Mo, 14.01.2008 22:10

Hallo zusammen,
ein schönes neues Jahr! Wer kann mir helfen: Ich möchte per Makro nur eine Seite bzw (für ein anderes Projekt) nur den jeweils selektierten Teil einer Tabelle als pdf exportieren - ich bekomme immer nur die die ganze Tabelle. Wie geht das?
Viele Grüße
Peter Doll

Nach oben