[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt auswahl zu PDF

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Print/Bildbearbeitung - Photos, Layout, Design
Themen
Beiträge
Moderatoren
Letzter Beitrag

auswahl zu PDF

-hans-
Beiträge gesamt: 748

7. Dez 2011, 17:54
Beitrag # 1 von 16
Bewertung:
(8229 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,

ich dachte eigentlich, das ich mit exportFile eine Selektion als PDF sichern kann. Exportiert wird mir aber die ganze Seite?!

Als Lösung sehe ich da nur ein neues Dokument zu erzeugen und die Selektion dort zu platzieren ... die Unwegbarkeiten sind mir aber den Aufwand nicht wert.

Geht's auch irgendwie einfacher ...?

Grundscript, welches die ganze Seite exportiert:
Code
#target InDesign 
var theVar = prompt('Bitte Dateinamen eingeben ...', 'Blafasel'); if(app.selection.length > 1){
var mySel = app.activeDocument.groups.add(app.selection)
mySel.exportFile(ExportFormat.PDF_TYPE, File('~/Desktop/PDF/' + theVar + '.pdf'), false, 'AZAN_4c')
app.activeDocument.undo()
}else{
app.selection[0].exportFile(ExportFormat.PDF_TYPE, File('~/Desktop/PDF/' + theVar + '.pdf'), false, 'AZAN_4c')
}


Lieben Gruß und Dank

Hans-Gerd Claßen
X

auswahl zu PDF

Ralf Hobirk
Beiträge gesamt: 5961

7. Dez 2011, 18:23
Beitrag # 2 von 16
Beitrag ID: #485898
Bewertung:
(8214 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
hallo hans-Gerd,

das gibt's schon fertig: http://www.automatication.com/index.php?id=9 und läuft auch in CS5.


als Antwort auf: [#485895]

auswahl zu PDF

-hans-
Beiträge gesamt: 748

7. Dez 2011, 18:34
Beitrag # 3 von 16
Beitrag ID: #485901
Bewertung:
(8208 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Ralf,

... direkt probiert ;-)

Ist allerdings - zumindest in meinem Fall - mit Vorsicht zu geniessen, da hier auch einfach ein neues Dokument erstellt wird und bei mir direkt im Testexport missmatch verursacht hat.

Doku hatte namensgleiche Stilvorlagen wie das Prog -> Änderung des Absatzformates ...

Tschöle

Hans-Gerd


als Antwort auf: [#485898]

auswahl zu PDF

Ralf Hobirk
Beiträge gesamt: 5961

7. Dez 2011, 18:59
Beitrag # 4 von 16
Beitrag ID: #485903
Bewertung:
(8197 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans-Gerd,

Antwort auf: und bei mir direkt im Testexport missmatch verursacht hat.

Das hört sich nicht gut an :-(

Ich benutze dieses Script, wenn ich in einem ID-Dokument z.B. eine Reihe ähnlicher Vignetten erstelle, um sie dann einzeln zu exportieren. Das hat bisher (zuletzt vorgestern) einwandfrei funktioniert.


als Antwort auf: [#485901]

auswahl zu PDF

Uwe Laubender
Beiträge gesamt: 5316

7. Dez 2011, 20:49
Beitrag # 5 von 16
Beitrag ID: #485909
Bewertung:
(8162 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo, zusammen!

Hier eine Diskussion von 2009 auf HDS zum Thema:
http://www.hilfdirselbst.ch/...i?post=424401#424401

Das hier von Martin Fischer veröffentlichte Script dürfte die gleiche Schwäche aufweisen, da sein Funktionskonzept auch vorsieht zwischendrin eine neue Datei mit der Seitengröße der zu exportierenden Auswahl anzulegen UND mit kopierten Elementen des Originals arbeitet.

Ich würde für ein anderes Konzept plädieren (etwas umständlicher, aber sicherer und typografische Probleme vermeidend. Es arbeitet NICHT mit Kopieren/Einfügen oder mit dem duplicate()-Befehl):

1. Alle Objekte der Seite, die nicht exportiert werden sollen auf "Nicht drucken" stellen
2. PDF der GANZEN Seite exportieren unter Berücksichtigung ALLER druckenden Elemente
4. Neue Datei anlegen mit den Dimensionen der zu exportierenden Auswahl
5. Platzieren des Ganzseiten-PDFs unter Berücksichtigung der korrekten Verschiebung auf den echten Inhalt
6. Exportieren der NEUEN Seite nach PDF
7. Zwischendateien (Ganzseiten-PDF und neue InDesign-Datei) löschen
8. Den ursprünglichen "Nicht drucken/Drucken"-Status aller Seitenelemente wiederherstellen

//EDIT: kleine Formulierungsänderung in der Klammer weiter oben. War überhastet und missverständlich formuliert


als Antwort auf: [#485903]
(Dieser Beitrag wurde von Uwe Laubender am 7. Dez 2011, 20:58 geändert)

auswahl zu PDF

-hans-
Beiträge gesamt: 748

9. Dez 2011, 08:28
Beitrag # 6 von 16
Beitrag ID: #485999
Bewertung:
(8089 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Herr Laubender,

dieser Ablauf erscheint mir stimmiger :)
Frage:
Warum müssen die Seitenobjekte die ich nicht benötige auf nicht drucken gestellt werden, wenn ich sie später eh ausblende?

Zusatz:
Zur einfacheren Berechnung würde ich ein gewähltes Preset duplizieren und nur die Nettoseite exportieren ...

Angefangen (ScriptScrbble ;-) ) habe ich heut' morgen schonmal, fehlt noch Import + erneuter Export ;-)

Code
#target InDesign 

if (app.selection.length < 1){alert('Keine Seitenelemente ausgewählt.'); exit();}

var myDoc = app.activeDocument;
var theSel = app.selection;
if(theSel.length > 1){var theSel = app.activeDocument.groups.add(app.selection); }else{var theSel = theSel[0]}
var selBounds = theSel.visibleBounds;

main()

function main(){
setDocUnits();
var myPreset = getPdfExportPreset(myDoc);
var myPreset = duplicatePDFPreset(myPreset)

var pdfFile = exportPdf(theSel, myPreset) //expected thePath to be returned
var newDoc = makeNewDoc(selBounds)
//...
}


function setDocUnits(){
myDoc.zeroPoint = [0,0];
with(myDoc.viewPreferences){
rulerOrigin = RulerOrigin.PAGE_ORIGIN;
horizontalMeasurementUnits = MeasurementUnits.millimeters;
verticalMeasurementUnits = MeasurementUnits.millimeters;
}

}

function getPdfExportPreset (TheDoc){
var pdfPresets = app.pdfExportPresets.everyItem().name;
var myDialog = app.dialogs.add({name:"pdfExportPreset auswählen", canCancel:true});
with(myDialog){
with(dialogColumns.add()){
with(borderPanels.add()){
with(dialogColumns.add()){
staticTexts.add({staticLabel:"Bitte eine Pdf-Export-Vorgabe auswählen:"});
}
with(dialogColumns.add()){
var pickedPdfPreset = dropdowns.add({stringList:pdfPresets, selectedIndex:0});
}
}
}
}

if(myDialog.show() == true){
var pickedPdfPreset = pickedPdfPreset.selectedIndex;
myDialog.destroy();
return pdfPresets[pickedPdfPreset]
}
else{
myDialog.destroy()
}
}


function exportPdf(toExport, thePreset){
toExport.exportFile(ExportFormat.PDF_TYPE, File('~/tmp.pdf'), false, thePreset)
return File('~/tmp.pdf')
}


function makeNewDoc(selBounds){


}

function duplicatePDFPreset(aPreset){
var pdfPreset = app.pdfExportPresets.itemByName(aPreset).duplicate();
with(pdfPreset){
bleedBottom = 0;
bleedInside = 0;
bleedOuside = 0;
bleedTop = 0;
bleedMarks = false;
cropMarks = false;
pageInformationMarks = false;
registrationMarks = false;
useDocumentBleedWithPDF = false;
}
return pdfPreset

}


Schaue am Wochenende nochmal weiter, falls niemand anderes hier weitermachen möchte / könnte ... scheint mir doch ein recht nützliches Script zu sein :)

Lieben Gruß

Hans-Gerd Claßen


als Antwort auf: [#485909]

auswahl zu PDF

Uwe Laubender
Beiträge gesamt: 5316

9. Dez 2011, 11:01
Beitrag # 7 von 16
Beitrag ID: #486009
Bewertung:
(8063 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf [ -hans- ] Warum müssen die Seitenobjekte die ich nicht benötige auf nicht drucken gestellt werden, wenn ich sie später eh ausblende?


Hallo, Hans-Gerd!
(Duzen wir uns doch hier im Forum…)

Ich gehe davon aus, dass von der Auswahl abweichende Seitenobjekte diese überlappen können. Oberhalb wie unterhalb in der Stapelreihenfolge der Objekte. Diese sollen bewußt aus dem Export ausgeschlossen werden, wenn die gesamte Seite exportiert wird.
Dieses erreichen wir, wenn im Export-Preset in der Abteilung "Einschließen" die Option "Nicht druckende Objekte" NICHT angewählt wird.

Wie würdest Du die nicht benötigten Elemente alternativ zu der hier vorgeschlagenen Methode ausblenden?

Zudem könnte es durch das Gruppieren der Auswahl zu Problemen kommen den ursprünglichen Zustand der Datei wiederherzustellen. Außerdem könnte es sein, dass sich aus der Auswahl gar keine Gruppe bilden läßt, da eines (oder mehrere) der ausgewählten Objekte gesperrt ist.

Eine weitere prinzipielle Schwierigkeit:
wie beachten wir in Textrahmen verankerte Objekte?

Diese würden bei der Gruppenbildung und Berechnung der visibleBounds außen vor sein, sofern sie NICHT vollständig den Muttertextrahmen überlappen.

Zudem müßten wir darauf achten, dass gerade diese Objekte NICHT auf "nicht druckend" gestellt werden. Da potenzieren sich leider die Probleme, wenn ich an Verschachtelungen denke…

Ausweg aus diesem Dilemma (KONZEPTWECHSEL an dieser Stelle):
1. Die ausgewählten Objekte gegebenenfalls entsperren,
2. auf eine neue zu erstellende Ebene schieben
3. alle anderen Ebenen ausblenden und
4. nur sichtbare Ebenen exportieren

Das visbleBounds-Problem bei verankerten Objekten wäre allerdings dann immer noch nicht aus der Welt geschafft.

Das könnten wir in einem zweiten Schritt erledigen:

1. Platzieren der exportierten PDF-Datei unter Berücksichtigung der PDF-ArtBox (noch von mir ungetestet).
2. Anpassung der Seitengröße an das platzierte PDF
3. Export des finalen PDFs

ODER:
1. Öffnen des PDFs in AcrobatPro
2. Scripten der Trim-, Bleed- und MediaBox in Bezug auf die ArtBox

Hier noch ein erhellender Link zu einer ähnlichen Diskussion (hier ging es um den EPS-Export einer Gruppe von Objekten) im InDesign-Scripting-Forum von Adobe:

http://forums.adobe.com/message/4032422#4032422


als Antwort auf: [#485999]

auswahl zu PDF

Uwe Laubender
Beiträge gesamt: 5316

9. Dez 2011, 12:04
Beitrag # 8 von 16
Beitrag ID: #486014
Bewertung:
(8039 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Follow-Up:
Um Elemente der angewendeten Musterseite(n) müßten wir uns natürlich auch kümmern (durch Zuweisung der Musterseite [Ohne]).

Hans-Gerd, fallen Dir noch andere Stolpersteine auf?


als Antwort auf: [#486009]

auswahl zu PDF

Uwe Laubender
Beiträge gesamt: 5316

9. Dez 2011, 12:19
Beitrag # 9 von 16
Beitrag ID: #486015
Bewertung:
(8035 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Doch noch ein weiterer Stolperstein:
Was, wenn die Auswahl seitenübergreifend ist?
(Spread exportieren?!)

Oder gar teilweise aus der Seite in das PasteBoard hinausragt?
(Beschnneiden oder nicht? Falls nicht: wie lösen wir dieses Problem?
=> Erweiterung der Seite durch genügend Anschnitt oder den Infobereich?)


als Antwort auf: [#486014]

auswahl zu PDF

-hans-
Beiträge gesamt: 748

9. Dez 2011, 20:04
Beitrag # 10 von 16
Beitrag ID: #486044
Bewertung:
(7977 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hi Uwe,

Fragen über Fragen, oder sagen wir Herausforderungen ;-)

Konturenführende Objekte könnten wohl auch noch eine Rolle spielen ...

Bei allem Bemühen Fehlexporte zu vermeiden würde ich aber schon ganz pragmatisch dazu tendieren -> WYSWG

Soll heißen: Überlappungen, Musterseitenobjekte, Konturenführung gehören vllt. nicht zur Selektion, sie im Export wegzulassen ist aber auch schon eine Interpretation des "Userwillens" ...

Danke für die hints, werd' mal schaun ...

Lieben Gruß

Hans-Gerd Claßen


als Antwort auf: [#486015]

auswahl zu PDF

Uwe Laubender
Beiträge gesamt: 5316

9. Dez 2011, 20:31
Beitrag # 11 von 16
Beitrag ID: #486046
Bewertung:
(7966 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf [ -hans- ] Konturenführende Objekte könnten wohl auch noch eine Rolle spielen ...


Hallo, Hans-Gerd!
Tja, noch ein kleiner Stolperstein, auf den wir achten müssen: also überprüfen, ob es Ebenen gibt, bei denen die Option: "Konturenführung bei ausgeblendeten Ebenen unterdrücken" eingeschaltet ist?

Können wir uns sparen, wenn wir NICHT alle überflüssigen Ebenen ausblenden, sondern die "Ebene drucken"-Option bemühen und ausschalten.

Es wird, es wird…

Und um einen großen Bogen um die Wiederherstellung des Ursprungsdokuments zu machen, können wir zunächst die Datei speichern, um dann nach Ausführung des Scripts zum letzten gespeicherten Zustand zurückzuspringen:

myDocument.revert();


als Antwort auf: [#486044]

auswahl zu PDF

-hans-
Beiträge gesamt: 748

11. Dez 2011, 22:06
Beitrag # 12 von 16
Beitrag ID: #486094
Bewertung:
(7854 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hi,

Unterlängen!

Habe eben nochmal angefangen und stelle fest, dass natürlich die Unterlängen der letzten Zeile eines Textrahmens der Y2 der visible Bounds der Auswahl ausmacht verschwinden, wenn er (zB. über Strg-Alt-C) minimiert ist ...

Schönen Abend :)

Hans-Gerd Claßen


als Antwort auf: [#486046]

auswahl zu PDF

Uwe Laubender
Beiträge gesamt: 5316

15. Dez 2011, 15:22
Beitrag # 13 von 16
Beitrag ID: #486414
Bewertung:
(7770 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo, Hans-Gerd!
Nach reiflicher Überlegung und einigen Tests sehe ich nur eine einzige Möglichkeit die Größe der Auswahl präzise zu berechnen:

Rendern des PDFs in PhotoShop (unter Berücksichtigung der MediaBox-Größe), Auswahl des Transparenzbereichs und Abgreifen dessen bounds-Eigenschaften.
Aus diesen lassen sich dann die Abmessungen und die Position des Inhalts auf der Seite exakt ermitteln.

Dies dürfte nur mit Cross-Scripting zu machen sein. ExtendScript hält hierfür "BridgeTalk" bereit (hat nichts mit der Adobe Bridge zu tun).

Probleme wie Text, der ÜBER die Textrahmen hinausragt, da er entweder mit Schatteneffekten belegt ist oder einen extremen Zeilenversatz nach oben hat, spielen dann keine Rolle mehr.
Auch das leidige Problem mit verankerten Objekten, die in der Abmessung der gruppierten Auswahl unter den Tisch fallen wäre gegenstandslos.


als Antwort auf: [#486094]

auswahl zu PDF

-hans-
Beiträge gesamt: 748

15. Dez 2011, 16:10
Beitrag # 14 von 16
Beitrag ID: #486417
Bewertung:
(7753 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hi,

jatzt habe ich ein wenig ein schlechtes Gewissen ;-) für meine Bedürfnisse hab ich einfach das Script so erstellt, dass es die Auswahl im Spreadbereich "ausstanzt" und fertig.

Wollte eigentlich nach und nach die ein oder andere deiner Anmerkungen einpflegen ...

Cross-Scripting mit JS mit Hilfe von Bridgetalk ... hab's mir vor ein paar Wochen mal angesehen ... wenn man AppleScript kennt echt umständlich!

Hier das Script, falls es jemand "ausbessern" möchte :)

Code
/* 
Der durch eine Auswahl bestimmte Bereich einer Seite oder eines Spreads wird als PDF exportiert.
- (bis jetzt ;-) ) nicht berücksichtigt:
Elemente, die neben der Montagefläche stehen werden nicht korrekt verarbeitet
Musterseitenelemente die innerhalb der Auswahl liegen, sowie andere Elemente die die Auswahl überschneiden werden
mit exoprtiert.
Verankerte ...


*/

#target InDesign

if (app.selection.length < 1){alert('Keine Seitenelemente ausgewählt.'); exit();}

var myDoc = app.activeDocument;
var theSel = app.selection;
var thePage = myDoc.layoutWindows[0].activePage;
var myViewPreferences = myDoc.viewPreferences;

if(theSel.length > 1){var theSel = thePage.groups.add(theSel); }else{var theSel = theSel[0]}
var selBounds = theSel.visibleBounds;

main()

function main(){
setDocUnits();
var myPreset = getPdfExportPreset();
var myPreset = duplicatePDFPreset(myPreset, thePage.name);

var pdfFile = exportPdf(theSel, myPreset);

var newDoc = makeNewDoc(selBounds);
placeTmpPdf(newDoc, pdfFile);

var theVar = prompt('Bitte einen Dateinamen eingeben ...\nDie PDF-Datei wird auf dem Desktop abgelegt.', 'Bitte ohne Suffix')
newDoc.exportFile(ExportFormat.PDF_TYPE, File('~/Desktop/' + theVar+ '.pdf'), false, myPreset);

//aufräumen ...
newDoc.close(SaveOptions.NO);
app.activeDocument.undo() ;
File('~/tmp.pdf').remove();
myPreset.remove();
}


function setDocUnits(){
myDoc.zeroPoint = [0,0];
with(myDoc.viewPreferences){
rulerOrigin = RulerOrigin.SPREAD_ORIGIN;
horizontalMeasurementUnits = MeasurementUnits.millimeters;
verticalMeasurementUnits = MeasurementUnits.millimeters;
}
}

function getPdfPositioning(){
var myFactor = app.activeDocument.layoutWindows[0].activeSpread.pages.length;
var spreadBounds = app.activeDocument.layoutWindows[0].activeSpread.pages[0].bounds;
var spreadBounds = [spreadBounds[0], spreadBounds[1], spreadBounds[2], spreadBounds[3] * myFactor];
}

function getPdfExportPreset (){
var pdfPresets = app.pdfExportPresets.everyItem().name;
var myDialog = app.dialogs.add({name:"pdfExportPreset auswählen", canCancel:true});
with(myDialog){
with(dialogColumns.add()){
with(borderPanels.add()){
with(dialogColumns.add()){
staticTexts.add({staticLabel:"Bitte eine Pdf-Export-Vorgabe auswählen:"});
}
with(dialogColumns.add()){
var pickedPdfPreset = dropdowns.add({stringList:pdfPresets, selectedIndex:0});
}
}
}
}

if(myDialog.show() == true){
var pickedPdfPreset = pickedPdfPreset.selectedIndex;
myDialog.destroy();
return pdfPresets[pickedPdfPreset]
}
else{
myDialog.destroy()
exit();
}
}


function exportPdf(toExport, thePreset){
toExport.exportFile(ExportFormat.PDF_TYPE, File('~/tmp.pdf'), false, thePreset);
return File('~/tmp.pdf')
}


function makeNewDoc(selBounds){
setDocUnits();
var newDoc = app.documents.add();

with(newDoc.pages[0].marginPreferences){
bottom = 0;
left = 0;
right = 0;
top = 0;
columnCount = 1;
}

with(newDoc.documentPreferences){
pageHeight = selBounds[2] +1 - selBounds[0] ;
pageWidth = selBounds[3] - selBounds[1];
pagesPerDocument = 1;
}

return newDoc;
}

function placeTmpPdf(aDoc, pdfFile){
var myRectangle = aDoc.pages[0].rectangles.add();
myRectangle.visibleBounds = [0, 0, selBounds[2] + 1 - selBounds[0] , selBounds[3] - selBounds[1]]
myRectangle.place(pdfFile);
picBounds = myRectangle.graphics[0].visibleBounds;
myRectangle.graphics[0].visibleBounds = [-selBounds[0], -selBounds[1], -selBounds[0] + picBounds[2], -selBounds[1] + picBounds[3]]
}

function duplicatePDFPreset(aPreset, activePageName){
var pdfPreset = app.pdfExportPresets.itemByName(aPreset).duplicate();
with(pdfPreset){
bleedBottom = 0;
bleedInside = 0;
bleedOuside = 0;
bleedTop = 0;
bleedMarks = false;
cropMarks = false;
pageInformationMarks = false;
registrationMarks = false;
useDocumentBleedWithPDF = false;
exportReaderSpreads = true;
pageRange = activePageName.toString();
viewPDF = true
}
return pdfPreset

}


Lieben Gruß

Hans-Gerd


als Antwort auf: [#486414]

auswahl zu PDF

-hans-
Beiträge gesamt: 748

16. Dez 2011, 09:58
Beitrag # 15 von 16
Beitrag ID: #486450
Bewertung:
(7692 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Uwe,

die Bounds der verankerten Objekte sollte man über "allPageItems" erhalten ...

Teste bitte mal:

Code
#target InDesign 
var listOfBounds = [[],[],[],[]];

var getSel = app.selection; //Auswahl die auch verankerte Objekte enthält

allDim(getSel)
var selDim = maxDim(listOfBounds)
$.writeln(selDim)


function allDim(getSel){
for(var i = 0; i < getSel.length; i++){
var selItem = getSel[i];
var getBounds = selItem.visibleBounds;
listOfBounds[0].push(getBounds[0]);
listOfBounds[1].push(getBounds[1]);
listOfBounds[2].push(getBounds[2]);
listOfBounds[3].push(getBounds[3]);
if (selItem.allPageItems != 0){
allDim(selItem.allPageItems)
}

}
}


function maxDim(listOfBounds){
listOfBounds[0].sort(NumsortReverse);
listOfBounds[1].sort(NumsortReverse);
listOfBounds[2].sort(NumsortReverse);
listOfBounds[3].sort(NumsortReverse);

return[listOfBounds[0][listOfBounds[0].length-1], listOfBounds[1][listOfBounds[1].length-1], listOfBounds[2][0], listOfBounds[3][0]]

}



function NumsortReverse (a, b) {
return b - a;
}


Blieben hier noch Grundlinienversatz Schrift, Effekte (Schatten etc.) ...

Lieben Gruß

Hans-Gerd


als Antwort auf: [#486414]
X