ASP.NET rdlc с внешними изображениями, не отображающими изображения в PDF

Ответ David Segond является в значительной степени стандартным общим ответом, и T Richard является наиболее распространенной оптимизацией, хотя существуют некоторые другие. Другая сильная оптимизация основана на менее общих решениях. Например, если Вы собираетесь проверить, что тот же полигон с большим количеством точек, триангулируя полигон может ускорить вещи чрезвычайно, поскольку существует много очень быстрых ОЛОВЯННЫХ алгоритмов поиска. Другой - то, если полигон и точки находятся на ограниченной плоскости в низком разрешении скажем отображение на экране, можно нарисовать полигон на дисплейный буфер с отображенной памятью в данном цвете и проверить цвет данного пикселя, чтобы видеть, находится ли это в полигонах.

Как много оптимизации, они основаны на определенных а не общих случаях и приводят к beneifits на основе амортизируемого времени, а не единственного использования.

Работа в этом поле, я нашел Joeseph O'Rourkes 'Геометрией вычисления в C' ISBN 0-521-44034-3, чтобы быть большой справкой.

7
задан Jarrett Widman 19 August 2009 в 16:26
поделиться

4 ответа

PDF-файл не может содержать ссылку на внешнее изображение (по крайней мере, в моем понимании). Чтобы изображение появилось в PDF-файле, оно должно быть встроено в документ. Следовательно, чтобы использовать внешнее изображение, ваше приложение должно получить изображение и сохранить его в документе. Средство просмотра отчетов попытается сделать это за вас.

Два возможных ответа:

Первый , чтобы ваше приложение могло упаковать изображение в PDF-файл, оно должно иметь возможность извлекать изображение из URL-адреса. вы указываете. Если этот URL-адрес находится за прокси-сервером (с точки зрения вашего сервера приложений) и / или требует учетных данных для доступа, это вызовет проблемы с конфигурацией по умолчанию средства просмотра отчетов.

Если проблема заключается в прокси-сервере, пожалуйста см. настройки вашего web.config, которые вы можете добавить ниже. Вам также может потребоваться предоставить сетевые учетные данные, чтобы ваше приложение могло аутентифицироваться на прокси. Есть много способов решить эту проблему, но один из самых простых - запустить приложение в качестве учетной записи службы в вашем домене, у которой есть права на обход вашего прокси. Вы можете проверить это, запустив сайт как вы временно (должно быть временно, потому что это ужасная практика безопасности).

Для доступа к изображению, которое вы используете, могут потребоваться учетные данные (попробуйте загрузить изображение в Firefox с пустыми файлами cookie и проверить требуются ли учетные данные для доступа к нему). Если для этого требуется проверка подлинности Windows, то же решение для защиты прокси-сервера может применяться к проверке подлинности, необходимой для удаленного образа. Если для этого требуется какая-либо другая форма аутентификации, вам может быть лучше загрузить и встроить изображение в свой проект.

Также можно загрузить изображение с помощью других средств в вашем коде и преобразовать его в массив байтов для включения в отчет. В Интернете есть множество примеров этого, включая переполнение стека здесь .

Во-вторых, , взгляните на следующую страницу:

http://msdn.microsoft. com / en-us / library / ms251715% 28VS.80% 29.aspx

Использование внешних изображений в Отчет ReportViewer не включен дефолт. Чтобы использовать внешний образ, вы должен установить EnableExternalImages свойство в вашем коде. В зависимости от конфигурация вашей сети, вы можете также необходимо обойти настройки прокси, чтобы позвольте внешнему изображению появиться. Вы можете добавить следующие настройки в файл Web.config, чтобы обойти локальный прокси. При изменении вашего Файл Web.config, обязательно укажите имя прокси-сервера, который используется в вашей сети:

<system.net>
<defaultProxy>
<proxy usesystemdefault = "false" bypassonlocal = "true" proxyaddress = "http://< proxyservername >:80/" />
<defaultProxy>
</system.net>

Надеюсь, что один или оба из них помогут.

Джерри

14
ответ дан 6 December 2019 в 08:44
поделиться

Я не думаю, что Adobe Reader (или, может быть, сама спецификация PDF?) Позволяет загружать внешний контент в целях безопасности. Я смутно помню, что у меня была аналогичная проблема, не имеющая ничего общего со службами отчетности (я динамически создавал PDF-файлы и использовал переменные логотипы, и мне пришлось их встраивать).

1
ответ дан 6 December 2019 в 08:44
поделиться

Вы пробовали использовать обычный путь к файлу (c: /temp/somefile.bmp)? Локальный отчет служб отчетов считывает файл с диска и встраивает его в созданный файл pdf. Убедитесь, что удостоверение пула приложений в IIS имеет разрешение на чтение файла изображения.

Мы делаем это, и наши изображения помещаются в папку img на веб-сайте вместе с остальными изображениями веб-сайтов. Мы избегаем жесткого кодирования пути, используя Server.MapPath (относительный путь).

Надеюсь, это поможет

1
ответ дан 6 December 2019 в 08:44
поделиться
  1. Может ли средство просмотра отчетов получить изображение по относительному URL-адресу? Я никогда не использовал его, поэтому лучше всего проверить это предположение.
  2. Вы пробовали использовать помощник Html.Content () для установки URL? Всякий раз, когда у меня возникают проблемы с моими URL-адресами, это связано с тем, что я не использовал это для создания правильного URL-адреса для представления.
0
ответ дан 6 December 2019 в 08:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: