Forenindex » Programme » Print/Bildbearbeitung » Adobe InDesign » Buchstabenzähler

Buchstabenzähler

Reichwein
Beiträge gesamt: 89

10. Jul 2007, 16:19
Bewertung:

gelesen: 11223

Beitrag als Lesezeichen
Hallo an Alle,
ich bin auf der Suche nach einem Buchstabenzähler bzw. Zeichenzähler von Texten. Für Mac wird dies wohl angboten aber auf Windows Basis bin ich noch nicht fündig geworden.
Mir würde es auch schon helfen, wenn ich diesen Zähler für im Word erstellte Texte einsetzten könnte.

Regnerische Grüße mit viel Donnerund Blitz . . .
Cosima

Buchstabenzähler

Kai Rübsamen
  
Beiträge gesamt: 4684

10. Jul 2007, 16:41
Bewertung:

gelesen: 11213

Beitrag als Lesezeichen
Hallo Cosima,

lange nichts mehr gehört. Hier scheint die Sonne.

Kannst du es so schreiben, dass man es versteht. > Du kannst in Word Zeichen zählen lassen und in InDesign auch. Was suchst du da, das die Programme von Haus aus nicht mitbringen?

Gruß Kai Rübsamen

Buchstabenzähler

Martin Fischer
  
Beiträge gesamt: 12779

10. Jul 2007, 17:20
Bewertung:

gelesen: 11200

Beitrag als Lesezeichen
Hallo Cosima,

zum Donnerkeil hier ein InDesign CS-Skript, das auch unter CS2 und CS3 laufen sollte:

Code
//TextCounter.js 
//
//An InDesign 3 JavaScript
//
//Counts text objects in the selection, in the selected story, or in all stories in a document.
//
//For more on InDesign scripting, go to http://www.adobe.com/products/indesign/scripting.html
//or visit the InDesign Scripting User to User forum at http://www.adobeforums.com
//
if(app.documents.length != 0){
if(app.activeDocument.stories.length > 0){
myDisplayDialog();
}
else{
alert("The current document does not contain any text.");
}
}
else{
alert("No documents are open. Please open a document and try again.");
}

function myDisplayDialog(){
var myCountButtons, myRangeButtons;
var myDialog = app.dialogs.add({name:"TextCounter"});
with(myDialog.dialogColumns.add()){
with(borderPanels.add()){
staticTexts.add({staticLabel:"Count:"});
with(myCountButtons = radiobuttonGroups.add()){
radiobuttonControls.add({staticLabel:"Characters"});
radiobuttonControls.add({staticLabel:"Words", checkedState:true});
radiobuttonControls.add({staticLabel:"Lines"});
radiobuttonControls.add({staticLabel:"Paragraphs"});
}
}
with(borderPanels.add()){
staticTexts.add({staticLabel:"Range:"});
with(myRangeButtons = radiobuttonGroups.add()){
radiobuttonControls.add({staticLabel:"Selection", checkedState:true});
radiobuttonControls.add({staticLabel:"Selected Story"});
radiobuttonControls.add({staticLabel:"All Stories"});
}
}
}
var myReturn = myDialog.show();
if (myReturn == true){
//Get the values from the dialog box.
var myRangeType = myRangeButtons.selectedButton;
var myCountType = myCountButtons.selectedButton;
myDialog.destroy();
myTextCounter(myRangeType, myCountType);
}
else{
myDialog.destroy();
}
}
function myTextCounter(myRangeType, myCountType){
var myDocument, myTextCount, mySelection, myCountingUnit;
with (myDocument = app.activeDocument){
//Set the AlreadyCounted key of any stories in the document to false.
for (var myStoryCounter = 0; myStoryCounter < myDocument.stories.length; myStoryCounter ++){
myDocument.stories.item(myStoryCounter).insertLabel("AlreadyCounted", "False")
}
switch (myRangeType){
case 0:
//Count the text in the selection.
//If multiple text frames are selected, all of the
//text in the frames will be counted.
mySelection = selection;
if (mySelection.length == 1){
myTextCount = mySelectionSorter(mySelection[0], myRangeType, myCountType);
}
else{
myTextCount = 0;
for (var myCounter = 0; myCounter < mySelection.length; myCounter++){
myTextCount = myTextCount + mySelectionSorter(mySelection[myCounter], myRangeType, myCountType);
}
}
break;
case 1:
//Count the text in the parent story (or stories) of the selection)
mySelection = selection;
if (mySelection.length == 1){
myTextCount = mySelectionSorter(mySelection[0], myRangeType, myCountType);
}
else{
myTextCount = 0;
//Now iterate through the items and count the text.
for (var myCounter = 0; myCounter < mySelection.length; myCounter++){
myTextCount = myTextCount + mySelectionSorter(mySelection[myCounter], myRangeType, myCountType);
}
}
break;
case 2:
//Count the text in all stories of the active document.
myTextCount = 0;
for(var myStoryCounter = 0; myStoryCounter < myDocument.stories.length; myStoryCounter ++){
myTextCount = myTextCount + myCountText(myDocument.stories.item(myStoryCounter), myCountType);
}
break;
}
switch(myCountType){
case 0:
if (myTextCount == 1){
myCountingUnit = "character";
}
else {
myCountingUnit = "characters";
}
break;
case 1:
if (myTextCount == 1){
myCountingUnit = "word";
}
else {
myCountingUnit = "words";
}
break;
case 2:
if (myTextCount == 1){
myCountingUnit = "line";
}
else {
myCountingUnit = "lines";
}
break;
case 3:
if (myTextCount == 1){
myCountingUnit = "paragraph";
}
else {
myCountingUnit = "paragraphs";
}
break;
}
var myDialog = app.dialogs.add({name:"TextCounter", canCancel:false});
with(myDialog){
//Add a dialog column.
with(dialogColumns.add()){
with(borderPanels.add()){
staticTexts.add({staticLabel:"InDesign found "});
with(dialogColumns.add()){
textEditboxes.add({editContents:myTextCount+""});
}
with(dialogColumns.add()){
staticTexts.add({staticLabel:myCountingUnit});
}
}
}
}
myDialog.show();
myDialog.destroy();
}
}
function mySelectionSorter(myObject, myRangeType, myCountType){
var myTextCount;
switch (myObject.constructor.name){
case "Text":
case "InsertionPoint":
switch (myRangeType){
case 0:
myTextCount = myCountText(myObject, myCountType);
break;
case 1:
myTextCount = myCountText(myObject.parentStory, myCountType);
break;
}
break;
case "TextFrame":
switch (myRangeType){
case 0:
myTextCount = myCountText(myObject.texts.item(0), myCountType);
break;
case 1:
//Has the parent story already been counted?
myStory = myObject.parentStory;
myCountedState = myStory.extractLabel("AlreadyCounted");
if (myCountedState != "True"){
myTextCount = myCountText(myStory, myCountType);
myStory.insertLabel("AlreadyCounted", "True");
}
else {
myTextCount = 0;
}
break;
}
break;
default:
//Selection is a not a text object.
//There's still a chance it could be a textPath object.
if (myObject.textPaths.length !=0){
myTextCount = 0;
if (myRangeType == 1){
for (myTextPathCounter = 0; myTextPathCounter < myObject.textPaths.length; myTextPathCounter ++){
myStory = myObject.textPaths.item(myTextPathCounter).parentStory;
myCountedState = myStory.extractLabel("AlreadyCounted");
if (myCountedState != "True"){
myTextCount = myTextCount + myCountText(myObject.textPaths.item(myTextPathCounter).parentStory, myCountType);
myObject.textPaths.item(myTextPathCounter).parentStory.insertLabel("AlreadyCounted","True");
}
else{
myTextCount = 0;
}
}
}
else {
for (myTextPathCounter = 0; myTextPathCounter < myObject.textPaths.length; myTextPathCounter ++){
myTextCount = myTextCount + myCountText(myObject.textPaths.item(myTextPathCounter).texts.item(0), myCountType);
}
}
}
else {
myTextCount = 0;
}
break;
}
return myTextCount;
}
function myCountText(myTextObject, myCountType){
var myTextCount;
switch(myCountType){
case 0:
//count characters
myTextCount = myTextObject.characters.length;
break;
case 1:
//count words
myTextCount = myTextObject.words.length;
break;
case 2:
//count lines
myTextCount = myTextObject.lines.length;
break;
case 3:
//count paragraphs
myTextCount = myTextObject.paragraphs.length;
break;
}
return myTextCount;
}


Allerdings werden Tabellen und Fußnoten nicht berücksichtigt.

Viele Grüße
Martin



(Dieser Beitrag wurde von Martin Fischer am 10. Jul 2007, 17:23 geändert)

Buchstabenzähler

olaflist
Beiträge gesamt: 1400

10. Jul 2007, 17:45
Bewertung:

gelesen: 11182

Beitrag als Lesezeichen
Einfach mal eine Blick auf SoftCare's Overset Manager (www.softcare.de) werfen. Gibt's für Mac undd Windows.

Olaf Drümmer
--
Olaf Druemmer | Geschäftsführer
callas software gmbh | www.callassoftware.com
axaio software GmbH | www.axaio.com

Buchstabenzähler

Florian Hardwig
Beiträge gesamt: 51

10. Jul 2007, 20:34
Bewertung:

gelesen: 11154

Beitrag als Lesezeichen
Mein InDesign (CS2, Mac) zeigt im Fenster ›Informationen‹ mit eingeblendeten Optionen folgende Zählwerte an: Zeichen, Wörter, Zeilen, Absätze. Jeweils für die aktuelle Textauswahl – und ohne Auswahl für den Textfluss (Textrahmen bzw. verkettete Textrahmen), in dem sich der Cursor befindet.
Beste Grüße, Florian

Buchstabenzähler

Konrad
Beiträge gesamt: 278

10. Jul 2007, 21:00
Bewertung:

gelesen: 11148

Beitrag als Lesezeichen
Hallo!

Bei dtptools.com gibts sowas für 69 USD:

http://www.dtptools.com/product.asp?id=tcin

Mfg
Konrad
___________________________________________________
Gruß
Konrad


Windows 10 Pro 64Bit, Asus Z390A, Intel i9-9900K 64 GB RAM, 2x Prolite XUB2495WSU, Wacom Intuos5 Pro A5
Creative Suite CS6 Design Standard
Affinity (alle 3 Programme)
VivaDesigner 10

Buchstabenzähler

pixxxelschubser
Beiträge gesamt: 1708

12. Jul 2007, 22:47
Bewertung:

gelesen: 11061

Beitrag als Lesezeichen
Hallo zusammen,

Entschuldigung, dass ich den Thread noch mal hervorhole.
Martin, eine kleine Frage: ist ja bestimmt ein nettes Script :-)

Habs nur aus Zeitmangel noch nicht ausprobiert. Was kann das Script, was der Textmodus [Strg]+[Y] und die Infopalette nicht kann?

siehe Anhang


Wink
Viele Grüße
pixxxelschubser




Was wir wissen, ist ein Tropfen; was wir nicht wissen, ein Ozean.

Isaac Newton



Anhang:
Textmodus.gif (26.6 KB)

Buchstabenzähler

Martin Fischer
  
Beiträge gesamt: 12779

13. Jul 2007, 08:22
Bewertung:

gelesen: 11034

Beitrag als Lesezeichen
Hallo Hans-Jürgen,

im status quo kann es über den Output der Infopalette hinaus die Zahl der Zeichen, Wörter, Zeilen und Absätze aller Textflüsse anzeigen.

Und im Gegensatz zur Infopalette ist dieses Skript ausbaufähig, so daß z.B. die Fußnoten und die Tabellen separat gezählt werden könnten.
Oder daß nur bestimmte Absatzformate bei der Zählung berücksichtigt werden.
Oder daß das Vorkommen bestimmter Wörter oder Zeichen oder Formatierungen ermittelt wird.

Sprich, das Skript ist ausbaufähig.

Eine andere Frage ist, ob's so was braucht. ;-)

Viele Grüße
Martin


Buchstabenzähler

Kai Rübsamen
  
Beiträge gesamt: 4684

13. Jul 2007, 09:06
Bewertung:

gelesen: 11022

Beitrag als Lesezeichen
Eine andere Frage ist, ob's so was braucht. ;-)

In Anbetracht, dass sich die OP seit dem 10. nicht mehr gemeldet hat offensichtlich nicht.

Gruß Kai Rübsamen

Buchstabenzähler

Martin Fischer
  
Beiträge gesamt: 12779

13. Jul 2007, 09:47
Bewertung:

gelesen: 11008

Beitrag als Lesezeichen
> In Anbetracht, dass sich die OP seit dem 10. nicht mehr gemeldet hat offensichtlich nicht.

Hatte die OP nicht erwähnt, daß es blitzt und donnert?
Vielleicht sollte mal einer da nachsehen, wo's geregnet hat.

Viele Grüße
Martin


Buchstabenzähler

basti.kava
Beiträge gesamt: 2

15. Mär 2019, 13:09
Bewertung:

gelesen: 6166

Beitrag als Lesezeichen
Hey Hey,

ich nutze diesen Thread mal für eine weitere Frage in diesem Zusammenhang. Da InDesign und auch das genannte Skript die Zeichen zählen können, wäre es doch mit Sicherheit ein Leichtes, dieses Ergebnis im Dokument als Variable zu hinterlegen.

Beispiel: Eine Pressemitteilung, die zu großen Teilen automatisiert ist. Ich gebe meinen Text ein und in einem separaten Textfeld werden direkt die Zeichen gezählt. Verändere ich den Text, verändert sich die Zeichenzahl.

Nun die Frage: Wie geht sowas?

Vielen Dank und Grüße,
Basti

Buchstabenzähler

MarioF
Beiträge gesamt: 390

15. Mär 2019, 19:18
Bewertung:

gelesen: 6085

Beitrag als Lesezeichen
Glaube nicht, dass dies so einfach möglich ist. Zumal es nicht wirklich Sinn macht und ständig ein Prozess im Hintergrund läuft, der schaut, ob es eine Änderung an bei den Zeichen gibt.
Ich würde versuchen, o.g. Script anzupassen, bei den die Zeichen eines ausgewählten Textrahmen gezählt werden, und die Auswertung kann man dann in einen neuen TR packen.
---
Viele Grüße
Mario

Buchstabenzähler

Uwe Laubender
Beiträge gesamt: 5316

18. Mär 2019, 09:06
Bewertung:

gelesen: 5834

Beitrag als Lesezeichen
Antwort auf:
Vielen Dank und Grüße,
Basti


Hallo Basti,
so etwas kann man per Skript umsetzen.

Mit einem sog. event listener, der immer dann ein Update der Zahl macht, wenn InDesign mal nichts zu tun hat. Stichwort: IdleTask

Oder, der immer dann ein Update der Zahl macht, wenn sich die Auswahl ändert.
Stichwort: afterSelectionChanged
Zum Beispiel beim Tippen eines Textes. Das wird allerdings voraussichtlich ziemlich nervig werden und kann zu erheblichen Geschwindigkeitseinbußen führen.

Hier in der Skriptwerkstatt findest Du ein Beispiel wie solch ein Skript prinzipiell aufzubauen wäre.
Diskussion zwischen zwei Möglichkeiten, afterSelectionChanged vs IdleEvent.ON_IDLE

https://www.hilfdirselbst.ch/..._P558636.html#558636


Das Skript könnte über das Skripte-Bedienfeld gestartet oder beendet werden. Oder als Startup-Skript laufen, wenn es das Zählen immer, bei jedem geöffneten Dokument machen soll. Das würde ich aber nicht empfehlen.
*****
Mit herzlichem Gruß,
Uwe Laubender

Buchstabenzähler

basti.kava
Beiträge gesamt: 2

26. Mär 2019, 13:35
Bewertung:

gelesen: 5422

Beitrag als Lesezeichen
Vielen Dank. Das klingt ja gut.
Ich arbeite mich da mal durch.