Регистрация  |  Вход

Как сгенерировать большой PDF attachment

нужно сгенерировать PDF attachment который включает 10 тысяч записей

обычно для этого используем

body = MyPage.getContentAsPDF();

то есть, через PageReference какой то ВФ страницы. Можно заставить ВФ страницу отрендерить 10 тысяч записей, но никто не пробовал генерировать такие большие ПДФ файлы програмно через getContentAsPDF(), не вылетают ли лимиты?

или есть какой-нибудь другой способ для програмной генерации ПФД файлов в Апексе?

нужно сгенерировать PDF attachment который включает 10 тысяч записей

обычно для этого используем 

body = MyPage.getContentAsPDF();

то есть, через PageReference какой то ВФ страницы. Можно заставить ВФ страницу отрендерить 10 тысяч записей, но никто не пробовал генерировать такие большие ПДФ файлы програмно через getContentAsPDF(), не вылетают ли лимиты?

или есть какой-нибудь другой способ для програмной генерации ПФД файлов в Апексе?

Я делаю динамическую генерацию PDF через классную JS либу http://pdfmake.org.
10к записей я конечно не передавал, но в твоем кейсе мне кажется главное уложиться в лимит visualforce, насколько я помню там 6MB данных лимит.

Я делаю динамическую генерацию PDF через классную JS либу http://pdfmake.org. 
10к записей я конечно не передавал, но в твоем кейсе мне кажется главное уложиться в лимит visualforce, насколько я помню там 6MB данных лимит.

Den Brown
MyPage.getContentAsPDF();

кажется не должно быть проблем для 10 тысяч

как попробуешь, отпишись)

[quote="Den Brown"]MyPage.getContentAsPDF();[/quote]
кажется не должно быть проблем для 10 тысяч

как попробуешь, отпишись)

Den Brown
такие большие ПДФ файлы програмно через getContentAsPDF(), не вылетают ли лимиты?

Maximum PDF file size for a Visualforce page rendered as a PDF 60 MB 
Maximum total size of all images included in a Visualforce page rendered 30 MB as a PDF

[quote="Den Brown"]такие большие ПДФ файлы програмно через getContentAsPDF(), не вылетают ли лимиты?[/quote]

Maximum PDF file size for a Visualforce page rendered as a PDF [b]60[/b] MB 
Maximum total size of all images included in a Visualforce page rendered [b]30[/b] MB as a PDF

я генерил большие XML файлы в Апекс порядка 8MB, я сталкивался с heap Size и СPU Time выбирал @future,потому что там в теори можно было увеличить лимиты по запросу, в помощь тебе Ассинхронка.

я генерил большие XML файлы в Апекс порядка 8MB, я сталкивался с heap Size и СPU Time выбирал @future,потому что там в теори можно было увеличить лимиты по запросу, в помощь тебе Ассинхронка.

я согласен с Сергеем
лимиты которые 60 и 30 мегабайт скорее всего применимы когда страница загружается "нормальным образом", а с подходом через getContentAsPDF() в первую очередь вылетишь по хипу так как будешь внутри апекс транзакции. Если вместишься в хип лимит то прокатило если нет то надо искать другой способ

я согласен с Сергеем
лимиты которые 60 и 30 мегабайт скорее всего применимы когда страница загружается "нормальным образом", а с подходом через getContentAsPDF() в первую очередь вылетишь по хипу так как будешь внутри апекс транзакции. Если вместишься в хип лимит то прокатило если нет то надо искать другой способ

Андрей
лимиты которые 60 и 30 мегабайт скорее всего применимы когда страница загружается "нормальным образом", а с подходом через getContentAsPDF() в первую очередь вылетишь по хипу

при такой логике, лучше и не связываться с getContentAsPDF() и аттачментом, а использовать renderAsPDF страницу для генерации больших ПДФов

[quote="Андрей"]лимиты которые 60 и 30 мегабайт скорее всего применимы когда страница загружается "нормальным образом", а с подходом через getContentAsPDF() в первую очередь вылетишь по хипу[/quote]

при такой логике, лучше и не связываться с getContentAsPDF() и аттачментом, а использовать renderAsPDF страницу для генерации больших ПДФов

собственно говоря, необходимость сгенерировать большой ПФД документ, это часть задачи по работе с Репортами, где требуется ПДФ версия репорта. А там сразу возникает несколько проблем:

(1) стандартного способа создать ПДФ репорт нет, значит только код и только renderAsPDF page (использованная напрямую в браузере или использованная програмно для генерации аттача);

(2) не вижу возможности поместить на стандартный репорт лейаут кастомную кнопку или хотя бы линк на ту страницу которая могла бы работать как ПДФ версия репорта.

(3) не вижу возможности переименовать название колонок в стандартном репорте, разве что дублировать требуемые для отчета поля в виде формульных полей с нужными лейблами и уже их использовать в репорте.

(4) лимиты в стандартном репорте: только 2к report rows to display, но хоть все report rows можно выгрузить в виде excell and csv.

(5) как именно делать renderAsPDF page? проще всего програмно использовать уже готовый стандартный репорт. Но вот ведь незадача: стандартный репорт может вернуть только те самые 2к report rows. А что если клиент настаивает на том что там может быть больше 2 тысяч? только полностью кастомные репорт, где всю логику кодить самому ручками, там можно работать с более 2к записей, но уже нужно думать про CPU time-out and Heap size limits

собственно говоря, необходимость сгенерировать большой ПФД документ, это часть задачи по работе с Репортами, где требуется ПДФ версия репорта. А там сразу возникает несколько проблем:

(1) стандартного способа создать ПДФ репорт нет, значит только код и только renderAsPDF page (использованная напрямую в браузере или использованная програмно для генерации аттача);

(2) не вижу возможности поместить на стандартный репорт лейаут кастомную кнопку или хотя бы линк на ту страницу которая могла бы работать как ПДФ версия репорта.

(3) не вижу возможности переименовать название колонок в стандартном репорте, разве что дублировать требуемые для отчета поля в виде формульных полей с нужными лейблами и уже их использовать в репорте.

(4) лимиты в стандартном репорте: только 2к report rows to display, но хоть все report rows можно выгрузить в виде excell and csv. 

(5) как именно делать renderAsPDF page? проще всего програмно использовать уже готовый стандартный репорт. Но вот ведь незадача: стандартный репорт может вернуть только те самые 2к report rows. А что если клиент настаивает на том что там может быть больше 2 тысяч? только полностью кастомные репорт, где всю логику кодить самому ручками, там можно работать с более 2к записей, но уже нужно думать про CPU time-out and Heap size limits 

Den Brown
CPU time-out and Heap size limits

вчера попробовал и все не так плохо с лимитами, если генить ПДФ репорт ВФ страницей в браузер, использую полностью кастомную логику в контроллере.

в дев эдишион орге только 5к сторадж, так что удалось создать 2 с половиной тысячи записей среднего размера (8 полей разного типа)

потом я кверю все эти записи со всеми 8 полями в контроллере, упаковываю в несколько Мэпов соответсвенно группировке и прочем нуждам,

и в лимитах Heap size used 0, CPU time-out - всего полсекунды (но сама страница рендерится-грузится конечно дольше)

так что пока не плохо

[quote="Den Brown"]CPU time-out and Heap size limits[/quote]

вчера попробовал и все не так плохо с лимитами, если генить ПДФ репорт ВФ страницей в браузер, использую полностью кастомную логику в контроллере.

в дев эдишион орге только 5к сторадж, так что удалось создать 2 с половиной тысячи записей среднего размера (8 полей разного типа)

потом я кверю все эти записи со всеми 8 полями в контроллере, упаковываю в несколько Мэпов соответсвенно группировке и прочем нуждам,

и в лимитах Heap size used 0, CPU time-out - всего полсекунды (но сама страница рендерится-грузится конечно дольше)

так что пока не плохо