Печать документа с внедренным представлением

  • Автор темы Автор темы dimat
  • Дата начала Дата начала
Заголовок+html код с данными из документов
И? Таблица с данными из респонсов отображается? Если нет, то надо просто сравнить, чем структура полученного во втором случае html отличается от структуры первого и искать, где косяк.
P.S. А если самому трудно разобраться — код и html — в студию (с).
 
Код:
<table><tr><th>Заголовок1</th><th>Заголовок2</th></tr><tr><td>ФИО 1</td><td>Орг 1</td><td>01.04.2010</td><td>Этап 1</td><td>Тип 1</td></tr><tr><td>ФИО 2</td><td>Орг 2</td><td>01.04.2010</td><td>Этап 2</td><td>Тип 2</td></tr></table>
 
Может это и нипричем, но таблица то заломанная получается... Надо бы:
<table><tr><th>Заголовок1</th><th>Заголовок2</th><td> </td><td> </td><td> </td></tr><tr><td>ФИО 1</td><td>Орг 1</td><td>01.04.2010</td><td>Этап 1</td><td>Тип 1</td></tr><tr><td>ФИО 2</td><td>Орг 2</td><td>01.04.2010</td><td>Этап 2</td><td>Тип 2</td></tr></table>
 
Не пойму, что не отображается.
Попробуйте вставить следующий текст и установить ему Pass-Thru HTML
Код:
<STYLE TYPE="text/css">
<!--
table {margin-left:1px; margin-right:1px}
th {border:1px solid black; font-family:"Default serif, serif"; font-size:8pt; font-weight:normal; color:"#000000"; text-align:center; vertical-align:middle}
td {border:1px solid black; font-family:"Default MultiLingual, Default sans serif, sans-serif"; font-size:8pt; font-weight:normal; color:"#000000"; text-align:center; vertical-align:middle;}
-->
</STYLE>
<TABLE>
<Computed Value>
</TABLE>
Где <Computed Value> — вычисляемый текст с формулой MyTableHeader + MyTable.
Выше текста вычисляемые поля MyTableHeader с заголовком и MyTable со строками.
И проверьте, стоит ли галка у формы "Render pass through HTML in Notes" (первая закладка свойств).
 
В одном месте сделал так. Без лишних окон и т.п. Печатает на дефолтный принтер.
Код:
Dim ie As Variant
Dim htmldoc As Variant

Set ie = CreateObject("InternetExplorer.Application")
Call ie.Navigate("about:blank")
Set htmldoc = ie.Document

htmldoc.WriteLn("<B>Привет</B>")

Call htmldoc.Close()
Call ie.ExecWB(6, 2, 2)
Call ie.Quit()
Msgbox("Отправлен на печать")

В другом так. Открывается новый документ, диалог печати, после печати или отмены закрывается.
Код:
Dim ws As New NotesUIWorkspace
Dim session As New NotesSession
Dim db As NotesDatabase
Dim stream As NotesStream
Dim body As NotesMIMEEntity
Dim html As Variant
Dim prindDoc As NotesDocument
Dim prindUIDoc As NotesUIDocument

Set prindDoc = db.CreateDocument()
Call prindDoc.ReplaceItemValue("Form", "($PrintForm)")
' ($PrintForm) - это форма с ричтекстовым полем Body(стоит галка Store contents as HTML and MIME) и SaveOptions="0"
html = html + "<B>Привет</B>"	

Set stream = session.CreateStream
session.ConvertMIME = False
Set body = prindDoc.CreateMIMEEntity

Call stream.WriteText(html)
Call body.SetContentFromText(stream, {text/html; charset="UTF-8"}, ENC_IDENTITY_BINARY)
Call prindDoc.ComputeWithForm(False, False)
Set prindUIDoc = ws.EditDocument(False, prindDoc, False)
Call prindUIDoc.Print()
Call prindUIDoc.Close
session.ConvertMIME = True
 
Они обязательно должны быть вычисляемые?
В принципе нет. В отладочных целях их можно сделать редактируемыми, править в них html и смотреть результат по F9. Но в итоге то должна получаться форма для печати с SaveOptions = "0", в ней по идее не должно быть редактируемых полей.
P.S. Да, в итоге то они должны быть скрытыми
 
скрипт который заполняет поле с хтмл, висит на PostOpen, а не на QueryOpen. Может быть в этом проблема?
 
nvy
ТОгда подскажи как заполнять поле в этом событии?
на постопен через ui а тут как?
 
пробовал, пишет Object variable not set
Это если документ новый, то Source.Document = Nothing. Но если есть респонсы, как он может быть новым?
Для нового документа все манипуляции с полями нужно делать до вызова ws.EditDocument
 
Это если документ новый, то Source.Document = Nothing. Но если есть респонсы, как он может быть новым?
Я так понимаю, что новый - это временный документ, который создаётся для печати методом Compose, вот потому на QO Source.Document = Nothing.

dimat
Что-то типа этого должно быть:
- создание дока по "печатной форме" с помощью CreateDocument
- заполнение полей
- открытие дока с помощью ws.EditDocument
+ кнопка, по которой док отправляется на печать и закрывается
 
Все получилось :)
Всем огромное спасибо за помощь!!!
Отдельное СПСАИБО nvy :)
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab

Похожие темы