Я хотел бы добавить файл PDF, содержащий информацию о идентичности и графическую информацию на каждой странице отчета службы отчетов. Этот отчет выводится из средства просмотра отчетов Dynamics CRM. Я занимался написанием расширений рендеринга, который вызывает существующее расширение экспорта PDF-файлов и с использованием компонента PDF, такого как ABCPdf.Изменение pdf-сообщений, предоставляемых службами отчетов, перед отправкой его клиенту
Я знаю, как получить визуализацию фона PDF, но мне не удалось вызвать существующее расширение рендеринга из новой реализации.
Существующий PDF-рендеринг является закрытым классом, и оказалось невозможным использовать его метод визуализации из другой реализации.
Затем я попытался вызвать сервер отчетов напрямую с помощью HTTP-запроса, и я не могу заставить его работать из-за проблемы с олицетворением. Появляется следующее сообщение об ошибке: «Нет пользователя Microsoft Dynamics CRM с указанным именем домена и идентификатором пользователя»
Я думаю, что я на правильном пути, но я понятия не имею, как получить учетные данные безопасности прямо из контекста расширение рендеринга.
Если я могу получить содержимое pdf в виде потока, я смогу добавить к нему фон.
public class PdfWithBackgroundRenderer : IRenderingExtension
{
public void GetRenderingResource(Microsoft.ReportingServices.Interfaces.CreateAndRegisterStream createAndRegisterStreamCallback, System.Collections.Specialized.NameValueCollection deviceInfo)
{
}
public bool Render(Report report, System.Collections.Specialized.NameValueCollection reportServerParameters, System.Collections.Specialized.NameValueCollection deviceInfo, System.Collections.Specialized.NameValueCollection clientCapabilities, ref System.Collections.Hashtable renderProperties, Microsoft.ReportingServices.Interfaces.CreateAndRegisterStream createAndRegisterStream)
{
//http://localhost/Reserved.ReportViewerWebControl.axd?ReportSession=3i414gm5fcpwm355u1ek0e3g&ControlID=417ac5edf4914b7a8e22cf8d4c7a3a8d&Culture=1043&UICulture=1033&ReportStack=1&OpType=Export&FileName=%7bF64F053A-5C28-E011-A676-000C2981D884%7d&ContentDisposition=OnlyHtmlInline&Format=PDF
string Url = "http://localhost/Reserved.ReportViewerWebControl.axd";
Url += "?ExecutionID=" + reportServerParameters["SessionID"];
Url += "&ControlID=" + Guid.Empty;
Url += "&Culture=1043";
Url += "&UICulture=1033";
Url += "&ReportStack=1";
Url += "&OpType=Export";
Url += "&FileName=" + report.Name;
Url += "&ContentDisposition=OnlyHtmlInline";
Url += "&Format=PDF";
Stream outputStream = createAndRegisterStream(report.Name, "pdf", Encoding.UTF8, "application/pdf", true, Microsoft.ReportingServices.Interfaces.StreamOper.CreateAndRegister);
StreamWriter writer = new StreamWriter(outputStream);
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);
request.Credentials = System.Net.CredentialCache.DefaultCredentials;
request.Timeout = 20000;
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
StreamReader reader = new StreamReader(response.GetResponseStream());
writer.Write(reader.ReadToEnd());
writer.Flush();
return false;
}
public bool RenderStream(string streamName, Report report, System.Collections.Specialized.NameValueCollection reportServerParameters, System.Collections.Specialized.NameValueCollection deviceInfo, System.Collections.Specialized.NameValueCollection clientCapabilities, ref System.Collections.Hashtable renderProperties, Microsoft.ReportingServices.Interfaces.CreateAndRegisterStream createAndRegisterStream)
{
return false;
}
public string LocalizedName
{
get { return "PDF Renderer with background"; }
}
public void SetConfiguration(string configuration)
{
}
}
Пожалуйста Витит блог моего Colleage по поводу этого решения: [ссылка] (http://www.broes.nl/2011/02/pdf-watermarkbackground-rendering-extension-for-ssrs-part-1/) – jhoefnagels