Ich verwende ColdFusion 7 auf einem Windows 2003-Server, um mit einer Standardinstallation von Microsoft Word 2000 mit COM-Objekten zu sprechen. Ziel ist es, ein Dokument mit einigen Tabellen zu erzeugen.ColdFusion COM-Objektmanipulation von MS Word 2000 stirbt nach 100 Sekunden
So viel kann ich tun. Die CPU erreicht für die Dauer 100%, aber mein Code ist funktional und wenn er kurz ist, funktioniert er. Das Problem, auf das ich stoße, ist, wenn der Code, der verwendet wird, um das Word-Dokument zu erzeugen, ungefähr 25kb + wird (ein Skript erzeugt viel Wiederholungscode).
Nachdem der Server verbringt 1 Minute 40 Sekunden versucht, das Dokument zu erzeugen:
- CPU-Auslastung sinkt auf 0 (CPU zwischen jrun.exe für Coldfusion und winword.exe für Word 2000 aufgeteilt wurde).
- winword.exe bleibt im Speicher.
- Das ColdFusion-Zeitlimit ist lang, daher denkt der Clientbrowser, dass die Seite noch bearbeitet wird.
- Wenn ich den winword.exe-Prozess abbringe, gibt ColdFusion sofort einen Fehler an den Client zurück.
Also diese längeren Seiten nie zu Ende. Ich habe viele Variationen ausprobiert.
- ColdFusion 8 funktioniert nicht.
- Die Verwendung einer aktualisierten JVM für ColdFusion 7/8 funktioniert nicht.
- Der Inhalt des Codes, den ich ausführe, macht keinen Unterschied. Ich mache eine Menge fantastischer Tischmalereien, aber eine Million Zeilen von "Hallo Welt" sterben auch.
- Eine Testversion von Word 2007 funktioniert erstaunlicherweise. Die Formatierung ist ein wenig wackelig, da Calibri und die anderen neuen Schriftarten standardmäßig verwendet werden. Der Server wartet jedoch bis zu 7 Minuten, bis er abgeschlossen ist. Und dann starten Sie den Server neu, versuchen Sie und führen Sie den gleichen Code aus, und Word 2007 besteht darauf, dass es keinen Befehl versteht, den ich es sende. Ich habe die Testaktivierung durchgeführt, ich habe sogar Word 2007 gestartet, nachdem ich den Remote-Desktop nach dem Neustart verwendet habe. Word wird nach diesem ersten Neustart vollständig katatonisch.
Was ich nicht versucht habe:
- Word 2003
Meine Netto-Suche waren fruchtlos beyond "ist hier, wie in Word-API verbinden" in Coldfusion Land und „hier, wie Sie legen Sie die Seitenanzahl in der Fußzeile "in ASP.NET Land fest. Es sieht so aus, als würde niemand, der Adobe benutzt, versuchen, das zu tun, und niemand, der Microsofts Sachen benutzt, hat mein Problem. Und so werfe ich mich blutend und unterernährt an deine Ufer, suche nach einem Einblick in dieses irrsinnige Timeout-Problem.
Hier ist, was ein Ausschnitt des Coldfusion-Code wie folgt aussieht:
<cfset clientMatterCellStart = myDoc.Tables.Item(1).Cell(2,1)>
<cfset clientMatterCellEnd = myDoc.Tables.Item(1).Cell(2,7)>
<cfset clientMatterCellStart.Merge(clientMatterCellEnd)>
<cfset clientMatterCellStart.Range.Font.Bold = true>
<cfset clientMatterCellStart.Range.Font.Name = "Times New Roman">
<cfset clientMatterCellStart.Range.Font.Size = 14>
<cfset clientMatterCellStart.Range.ParagraphFormat.Alignment = 1><!--- Centered --->
<cfset clientMatterCellStart.Range.Text = "#MySubjects.subject_name[q]#">
<cfset clientMatterCellStart.Shading.BackgroundPatternColor = 13421772><!--- Grey 20% --->
"kann sein, dass Coldfusion eine beschissene COM-Implementierung hat" Mit meinem Kopf in meinen Händen, bin ich sehr bereit, das zu glauben. –
Ich würde gerne sehen, ob eine ColdFusion-Maven weiß, ob ich wirklich mit diesem Ansatz verdammt bin (wenn CF COM-Implementierung ein echtes Problem mit langen Anforderungen hat). –
Ich sympathisiere mit Ihnen, weil Sie wirklich mit diesem Ansatz verdammt sind. Ich habe mich sehr bemüht, die COM-Objekt-Route zum Laufen zu bringen, denn es wäre schneller gewesen, den Code zu schreiben, aber ich habe es nach zu vielen Problemen aufgegeben. – Jayson