Skip to Main Content

You are on: PETROBRAS' AGENCY

  • Also access:
    • PETROBRAS WEBSITE
    • ACCESS TO INFORMATION
    • INVESTORS
  • Pular para o Conteúdo principal
  • Menu Header
  • Meu Footer
100%
  • Seleção de Jornalismo
  • Institutional
  • Inovation
  • Sustainability
  • Business
  • Regionais
Página inicial Agência
Logo Petrobras Petrobras' Agency
no content

Do a search:

Search suggestions

Link do botão
Ícone do botão Exibir mais resultados
Ícone de carregamento

Most searched

Fuel price

Pre-salt

Team Petrobras

Title

X

O uso deste material é autorizado apenas para fins editoriais.

Ok Cancel
YouTube Thumbnail
Business

Petrobras Reports R$ 52.4 Billion Profit in the Second Quarter of 2026

Read news
Business
Petrobras confirms new gas discovery in Colombia
Institutional
Inativação de conteúdos no período eleitoral
Diretoria executiva da Petrobras durante coletiva de imprensa online sobre os resultados do 2T26
Business
VÍDEO - Coletiva de imprensa online sobre os resultados do 2° trimestre de 2026

Most Recent

See more
Mulher fazendo anotações em bloco

2026.08.06

Petrobras informs about shareholder remuneration

Keep reading

P-79 is the eighth platform in the Búzios field, located in the pre-salt layer of the Santos Basin

2026.08.06

Petrobras Reports R$ 52.4 Billion Profit in the Second Quarter of 2026

Results were driven by the company's operational performance during the period, marked by record achievements in the E&P and Refining segments

Keep reading

2026.08.03

Petrobras confirms new gas discovery in Colombia

Keep reading

P-79 is the eighth platform in the Búzios field

2026.07.28

Petrobras' own oil and gas production grows 14% in 12 months, reaching 3.34 million barrels of oil equivalent per day in the 2nd quarter of 2026

Refined product production reaches 1,918 thousand barrels per day, a 10.9% increase compared to the second quarter of 2025

Keep reading

Edifício Senado (Edisen)

2026.07.24

Election of Interim Chief Energy Transition and Sustainability Officer

Keep reading

Mar com por do sol ao fundo

2026.07.09

Petrobras concludes acquisition of exploration block in São Tomé and Príncipe

Keep reading

P-79 platform in the Búzios field

2026.06.24

Búzios field surpasses its own record and produces 1.1 million bpd

Búzios, in the pre-salt Santos Basin, is Brazil’s largest field in terms of production and reserves

Keep reading

The President of Petrobras, Magda Chambriard, and the director general of Pemex, Juan Carlos Carpio Fragoso, at the signing ceremony

2026.06.23

Petrobras and Pemex Sign Partnership for Cooperation in E&P and Industrial Processes

Collaboration also provides for the exchange of knowledge on the regulatory frameworks governing the hydrocarbons sector in Brazil and Mexico. The agreement will be valid for two years, with the possibility of renewal; it does not constitute a binding investment commitment nor does it create a partnership, consortium, or joint venture between the parties

Keep reading

Most Read

See more
Navio-sonda

2024.01.26

Petrobras completes first exploratory well in the Equatorial Margin

Keep reading

Duque de Caxias Refinery

2024.01.30

Petrobras intensifies tests to produce renewable diesel in its refining park

In addition to Repar, which already sells the product, another three refineries performed tests and are able to produce Diesel R5

Keep reading

Mar aberto com pôr do sol

2024.01.26

Petrobras on Proved Reserves in 2023

Keep reading

Imagem aérea de tanques da Repar

2024.01.30

Repar breaks historical records of production and sales

Diesel production at the Petrobras refinery in Paraná reached 5.7 billion liters, breaking the 2014 record. Gasoline production reached 3.4 billion liters, 3% more than in 2012; asphalt production reached 453 thousand tons, 0.5% more than in 2010.

Keep reading

Plataforma P-71 em alto mar

2024.01.26

Petrobras reaches 2023 annual production target

Keep reading

Atlantic Ocean

2024.01.31

Petrobras informs on receipt of earnout from Sépia and Atapu

Keep reading

Cacimbas Gas Treatment Unit

2024.01.11

Petrobras has achieved a record low for the amount of gas flared off by its natural gas processing plants

These Results will help to reduce the company's operational greenhouse gas emissions

Keep reading

Senado Building, Petrobras headquarters, in Rio de Janeiro

2024.01.19

Petrobras informs about Fitch's confirmation of its credit rating

Keep reading

Browse by Editorial

See more
Innovation
Institutional
Business
Regionais
Seleção de Jornalismo
Sustainability
Riograndense Oil Refinery, a pioneer in biorefining in Brazil, using Petrobras technology

2026.03.25

Petrobras and Finep launch a R$ 30 million call for proposals for Research, Development and Innovation projects in Biorefining

Investment is part of the company's open innovation program and seeks new technological routes for biofuel production

Keep reading

Representantes da Petrobras e das universidades durante assinatura do Projeto Libra Rocks

2026.03.03

Petrobras foresees investment of over R$150 million in the Libra Rocks Project

Keep reading

Harpia supercomputer

2025.10.08

Petrobras puts the Harpia supercomputer into operation

The R$435 million giant will help the company maintain its leadership in computational capacity in Latin America and, consequently, in oil exploration and production development in Brazil

Keep reading

Petrobras Research, Development and Innovation Center (Cenpes)

2024.12.16

Petrobras to use Nasa technology to monitor the Equatorial Margin

The company was given access to the mission by the American and Indian space agencies

Keep reading

Remote Buoy for Offshore Wind Evaluation (Bravo)

2024.10.24

Petrobras will invest BRL 60 million in BRAVO buoy's phase two

Five new units will be released on the Brazilian coast after one year of successful operations by the Remote Buoy for Offshore Wind Evaluation (Bravo)

Keep reading

Woman wearing virtual reality glasses

2024.09.18

Petrobras announces R$16 million call for startup proposals

Institutions of Science and Technology (ICTs) are also eligible to participate

Keep reading

Pégaso Supercomputer

2024.08.29

Petrobras will invest BRL 500 million in five supercomputers

Latin America's leading company in computational capacity will replace the machines to keep up with competitiveness

Keep reading

The P-57 platform operating in the Jubarte field, in the Espírito Santo state’s post-salt layer

2024.08.14

Petrobras will use a digital twin to optimize oil production and flow

A technology that can boost production was validated and will be extended to the company’s fleet

Keep reading

Mulher fazendo anotações em bloco

2026.08.06

Petrobras informs about shareholder remuneration

Keep reading

Senado Building, Petrobras headquarters in Rio de Janeiro

2026.04.16

Petrobras provides information on the resolutions of the Annual General Meeting

Keep reading

Caneta sobre folhas de papel e teclado

2026.04.16

Petrobras informs about shareholder remuneration

Keep reading

Clarice Coppetti, Angélica Laureano, Renata Baruzzi, Magda Chambriard and Sylvia Anjoss

2025.07.11

Petrobras elects Angélica Laureano as executive Director of Energy Transition and Sustainability

With her appointment, Petrobras' Executive Board will have a female majority—an unprecedented composition in the company's history

Keep reading

Senado Building, Petrobras administrative headquarters in Rio de Janeiro

2026.04.06

Petrobras announces changes in the Executive Board

Keep reading

Senado Building, Petrobras administrative headquarters in Rio de Janeiro

2026.04.02

Petrobras announces financial settlement related to the redetermination of the Tupi Shared Reservoir

Petrobras received approximately R$ 3 billion from the other consortium partners and paid approximately R$ 600 million to the Federal Government

Keep reading

Senado Building in downtown Rio de Janeiro

2026.03.12

Petrobras Paid R$ 277.6 Billion in Taxes and Government Take in 2025

The company is the country’s largest taxpayer, accounting for around 7% of total national tax revenues

Keep reading

Mulher fazendo anotações em bloco diante de notebook

2025.04.16

Petrobras informs about dividend payment

Keep reading

P-79 is the eighth platform in the Búzios field, located in the pre-salt layer of the Santos Basin

2026.08.06

Petrobras Reports R$ 52.4 Billion Profit in the Second Quarter of 2026

Results were driven by the company's operational performance during the period, marked by record achievements in the E&P and Refining segments

Keep reading

2026.08.03

Petrobras confirms new gas discovery in Colombia

Keep reading

P-79 is the eighth platform in the Búzios field

2026.07.28

Petrobras' own oil and gas production grows 14% in 12 months, reaching 3.34 million barrels of oil equivalent per day in the 2nd quarter of 2026

Refined product production reaches 1,918 thousand barrels per day, a 10.9% increase compared to the second quarter of 2025

Keep reading

Mar com por do sol ao fundo

2026.07.09

Petrobras concludes acquisition of exploration block in São Tomé and Príncipe

Keep reading

P-79 platform in the Búzios field

2026.06.24

Búzios field surpasses its own record and produces 1.1 million bpd

Búzios, in the pre-salt Santos Basin, is Brazil’s largest field in terms of production and reserves

Keep reading

The President of Petrobras, Magda Chambriard, and the director general of Pemex, Juan Carlos Carpio Fragoso, at the signing ceremony

2026.06.23

Petrobras and Pemex Sign Partnership for Cooperation in E&P and Industrial Processes

Collaboration also provides for the exchange of knowledge on the regulatory frameworks governing the hydrocarbons sector in Brazil and Mexico. The agreement will be valid for two years, with the possibility of renewal; it does not constitute a binding investment commitment nor does it create a partnership, consortium, or joint venture between the parties

Keep reading

Presidente Bernardes Refinery (RPBC), in Cubatão

2026.06.19

Petrobras approves investment in bio-jet fuel and renewable diesel plant at RPBC

Keep reading

Amostra de diesel

2026.06.17

Petrobras Receives Payment of First Installment of the Economic Subvention Program for Diesel Oil Commercialization

Keep reading

The Bahia Nitrogen Fertilizer Plant (FAFEN-BA)

2025.12.19

FAFEN-BA moves forward to resume operations and strengthen national fertilizer production

Petrobras’ return to the segment represents a milestone for expanding Brazil’s productive autonomy

Keep reading

Test conducted at the Henrique Lage Refinery (Revap), in São José dos Campos (SP)

2025.09.10

Petrobras produces SAF with renewable content at Revap

Test carried out at the refinery marks a milestone for the production of fuel that reduces emissions in the aviation sector

Keep reading

´Mar azul com céu ao fundo

2025.01.23

Petrobras begins the Binding Phase of the Tartaruga Field in the Sergipe-Alagoas Basin

Keep reading

Edifício Senado (Edisen)

2026.07.24

Election of Interim Chief Energy Transition and Sustainability Officer

Keep reading

Profissionais da Revap com macacão laranja e equipamentos de proteção

2025.06.16

Petrobras announces progress in initiatives for the Energy Transition

Sustainability Report presents investments, decarbonization initiatives and social inclusion

Keep reading

Floresta Amazônica

2026.01.16

ProFloresta+ Call Receives 16 Carbon Credit Sale Proposals

The call for proposals provides for the purchase of carbon credits generated from ecological restoration projects using native species in the Amazon biome

Keep reading

VLS B24 complies with international quality standards for marine fuels

2026.01.15

Petrobras sells bunker fuel with renewable content to the international market

Contract provides for the supply of VLS B24 through the end of 2026 to a Norwegian company

Keep reading

SAF storage tank at the Duque de Caxias Refinery (Reduc)

2025.12.05

Petrobras launches sustainable aviation fuel produced entirely in Brazil

Company announces the first deliveries of SAF that meets global quality criteria, marking another important step in leading the country's just energy transition

Keep reading

Diesel R storage tank at the Presidente Bernardes Refinery (RPBC)

2025.11.04

Petrobras will supply renewable-content fuel for COP 30

Product will be used in generators and bus fleets

Keep reading

Amazon rainforest

2025.11.11

Petrobras and BNDES launch the first ProFloresta+ call for proposals

Investments are expected to move more than R$ 450 million for the recovery of the Amazon rainforest

Keep reading

Soltura de pinguins em Florianópolis pelo Projeto de Monitoramento de Praias da Bacia de Santos (PMP-BS)

2025.09.05

Project for Beach Monitoring in the Santos Basin Celebrates Ten Years

Carried out by Petrobras, the project involves approximately 600 professionals along a 1,500 km stretch, from Laguna (SC) to Saquarema (RJ)

Keep reading

Browse Multimedia Content

Ver mais 71921
Aprovados
Cadastro de Reserva
Document
Photo
Map and Illustration
Video
Audio
An error occurred while processing the template.
The following has evaluated to null or missing:
==> entry  [in template "20099#20135#11247695" at line 510, column 125]

----
Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #assign journalArticleCategories = as...  [in template "20099#20135#11247695" at line 510, column 5]
----
1<#-- Conteúdo Web -> Templates: Site de Crise - Include de templates--> 
2<#-- include "${templatesPath}/1975602" --> 
3 
4<#-- Conteúdo Web -> Templates: Site de Crise - Funções gerais--> 
5<#include "${templatesPath}/1975398" /> 
6 
7<#assign journalArticleService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") /> 
8<#assign fileEntryService = staticUtil["com.liferay.document.library.kernel.service.DLFileEntryLocalServiceUtil"] /> 
9<#assign assetCategoryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService") /> 
10<#assign assetVocabularyService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetVocabularyService") /> 
11<#assign assetCategoryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService") /> 
12<#assign vocabularies = assetVocabularyService.getGroupVocabularies(groupId) /> 
13<#assign mediaVocabulary = findVocabulary("Multimidia", vocabularies) /> 
14<#assign editoriaVocabulary = findVocabulary("Editorial", vocabularies) /> 
15 
16<#assign assetEntryQuery = objectUtil('com.liferay.asset.kernel.service.persistence.AssetEntryQuery')> 
17<#assign portalUtil = staticUtil["com.liferay.portal.kernel.util.PortalUtil"]> 
18<#assign assetEntryLocalServiceUtil = objectUtil("com.liferay.asset.kernel.service.AssetEntryLocalServiceUtil").getService()> 
19 
20<#assign SITE_URL = themeDisplay.getPortalURL() + themeDisplay.getPathFriendlyURLPublic() + layout.getGroup().friendlyURL /> 
21 
22<#function getFirstCategoryFromVocabulary journalArticleCategories vocabulary> 
23    <#list journalArticleCategories as category> 
24        <#if vocabulary.getVocabularyId() == category.getVocabularyId()> 
25            <#return category> 
26        </#if> 
27    </#list> 
28    <#return ""> 
29</#function> 
30 
31<#-- 
32@function formatTime 
33@description Formata uma  data e hora  para string. 
34@param date Instância da classe Date do java. 
35@return String formatada da data e hora. 
36 --> 
37<#function formatTime date> 
38    <#if !date ?? || !date?has_content> 
39        <#return ""> 
40    </#if> 
41    <#return date?datetime?string("HH:mm:ss")> 
42</#function> 
43 
44<#assign rootCss = "card-media_" + randomNumber(4586) /> 
45<#assign cardMap = {} /> 
46<#assign mediaAudioCategoryTitle = {"pt_BR": "Áudio","en_US":"Audio"}/> 
47<#assign mediaDocumentCategoryTitle = {"pt_BR": "Documento","en_US":"Document"}> 
48<#assign mediaMapCategoryTitle = {"pt_BR": "Mapa e Ilustração","en_US":"Map and Illustration"}/> 
49<#assign mediaPhotoCategoryTitle = {"pt_BR": "Foto","en_US":"Foto"}/> 
50<#assign videoPhotoCategoryTitle = {"pt_BR": "Video","en_US":"Video"}/> 
51 
52<#assign MEDIA_TYPE_NONE = 0 /> 
53<#assign MEDIA_TYPE_DOCUMENT = 1 /> 
54<#assign MEDIA_TYPE_VIDEO = 2 /> 
55<#assign MEDIA_TYPE_AUDIO = 3 /> 
56<#assign MEDIA_TYPE_PHOTO = 4 /> 
57<#assign MEDIA_TYPE_MAP = 5 /> 
58 
59<#function getCategory(categoryTitle categoryList)> 
60    <#assign result = categoryList?filter(cat -> cat.getTitle(locale) == categoryTitle) /> 
61    <#if result?size gt 0> 
62        <#return result[0]> 
63    </#if> 
64    <#return ""> 
65</#function> 
66 
67<#-- Função para obter os dados de um card no Web Content (Journal Article) --> 
68<#function getCardData entry journalArticleLocalService fileEntryService cardMap mediaVocabulary> 
69 
70    <#assign journalArticleCategories = assetCategoryLocalService.getCategories("com.liferay.journal.model.JournalArticle", entry.getClassPK()) /> 
71 
72    <#assign mediaCategory = getFirstCategoryFromVocabulary(journalArticleCategories, mediaVocabulary) /> 
73    <#assign mediCategoryId = -1 /> 
74    <#if mediaCategory?has_content> 
75        <#assign mediCategoryId = mediaCategory.getCategoryId() /> 
76    </#if> 
77    <#if mediCategoryId == -1> 
78        <#return {} /> 
79    </#if> 
80    <#if cardMap[mediCategoryId?string]??> 
81        <#if cardMap[mediCategoryId?string]?size gt 7 > 
82        <#--return {} --> 
83        </#if> 
84    </#if> 
85 
86    <#assign journalArticle = journalArticleLocalService.getLatestArticle(entry.getClassPK()) /> 
87    <#assign ddmStructure = journalArticle.getDDMStructure() /> 
88    <#assign fieldList = getFieldListByStructure(ddmStructure) /> 
89    <#assign xmlArticle = journalArticle.getDocument().getRootElement() /> 
90 
91    <#assign cardTitle = getFieldValue(fieldList, xmlArticle, "Título Home")/> 
92    <#assign subtitle = getFieldValue(fieldList, xmlArticle, "Legenda")/> 
93    <#assign author = getFieldValue(fieldList, xmlArticle, "Autor")/> 
94    <#assign thumbnailImage = getMediaInfo(fieldList, xmlArticle, "Imagem de thumbnail", fileEntryService) > 
95 
96    <#assign groupId = getIdFromFieldName(fieldList, "Arquivo original") /> 
97    <#assign originalFileGroup = getGroupNode(groupId, xmlArticle) /> 
98 
99    <#assign originalFile = getMediaInfo(fieldList, originalFileGroup, "Arquivo selecionado", fileEntryService) > 
100    <#assign originalFileExternalUrl = getFieldValue(fieldList, originalFileGroup, "URL externa") /> 
101 
102    <#assign lastPublishDate = journalArticle.getDisplayDate()> 
103    <#assign createDate = journalArticle.getCreateDate()> 
104 
105    <#assign editoriaCategory = getFirstCategoryFromVocabulary(journalArticleCategories, editoriaVocabulary) /> 
106 
107    <#assign photoCategory = getCategory(mediaPhotoCategoryTitle[locale], journalArticleCategories) /> 
108    <#assign documentCategory = getCategory(mediaDocumentCategoryTitle[locale], journalArticleCategories) /> 
109    <#assign mapCategory = getCategory(mediaMapCategoryTitle[locale], journalArticleCategories) /> 
110    <#assign audioCategory = getCategory(mediaAudioCategoryTitle[locale], journalArticleCategories) /> 
111    <#assign videoCategory = getCategory(videoPhotoCategoryTitle[locale], journalArticleCategories) /> 
112 
113    <#assign isPhoto = photoCategory?has_content /> 
114    <#assign isDocument = documentCategory?has_content /> 
115    <#assign isMap = mapCategory?has_content /> 
116    <#assign isAudio = audioCategory?has_content /> 
117    <#assign isVideo = videoCategory?has_content /> 
118 
119    <#assign mediaType = -1 /> 
120 
121    <#if isPhoto> 
122        <#assign mediaType = MEDIA_TYPE_PHOTO /> 
123    <#elseif isDocument> 
124        <#assign mediaType = MEDIA_TYPE_DOCUMENT /> 
125    <#elseif isMap> 
126        <#assign mediaType = MEDIA_TYPE_MAP /> 
127    <#elseif isAudio> 
128        <#assign mediaType = MEDIA_TYPE_AUDIO /> 
129    <#elseif isVideo> 
130        <#assign mediaType = MEDIA_TYPE_VIDEO /> 
131    </#if> 
132			 
133		<#assign editoriaCategoryTitle = "" /> 
134		<#assign editoriaCategoryId = -1/> 
135    <#if editoriaCategory?? && editoriaCategory?has_content> 
136        <#assign editoriaCategoryTitle = editoriaCategory.getTitle(locale) /> 
137		    <#assign editoriaCategoryId = editoriaCategory.getCategoryId()/>			 
138    </#if> 
139 
140    <#assign cardInfo = {"cardTitle": cardTitle, 
141    "subtitle" : subtitle, 
142    "author": author, 
143    "thumbnailImage": thumbnailImage, 
144    "originalFile": originalFile, 
145    "originalFileExternalUrl": originalFileExternalUrl, 
146    "lastPublishDate": lastPublishDate, 
147    "createDate" : createDate, 
148    "mediaId": mediCategoryId, 
149    "mediaCategoryTitle": mediaCategory.getTitle(locale), 
150    "mediaType" : mediaType, 
151    "editoriaCategoryTitle" : editoriaCategoryTitle, 
152    "editoriaCategoryId" :editoriaCategoryId, 
153    "renderEditoriaCategoryAsLink" : true, 
154    "renderMediaCategoryAsLink" : false 
155    }/> 
156 
157    <#if cardMap[mediCategoryId?string]??> 
158        <#assign cardMap = cardMap + {mediCategoryId : cardMap[mediCategoryId?string] + [cardInfo]} /> 
159    <#else> 
160        <#assign cardMap = cardMap + {mediCategoryId : [cardInfo]} /> 
161    </#if> 
162 
163    <#return cardInfo /> 
164</#function> 
165 
166			 
167			 
168			 
169				 
170			 
171			 
172			 
173			 
174			 
175			 
176			 
177			 
178			 
179			 
180			 
181<#macro printMediaIcon mediaType> 
182 
183    <#if mediaType == MEDIA_TYPE_DOCUMENT> 
184        <svg viewBox="0 0 12 15" fill="none" xmlns="http://www.w3.org/2000/svg"> 
185            <path d="M7.5 1.5H1.5C1.36739 1.5 1.24021 1.55268 1.14645 1.64645C1.05268 1.74021 1 1.86739 1 2V13C1 13.1326 1.05268 13.2598 1.14645 13.3536C1.24021 13.4473 1.36739 13.5 1.5 13.5H10.5C10.6326 13.5 10.7598 13.4473 10.8536 13.3536C10.9473 13.2598 11 13.1326 11 13V5M7.5 1.5L11 5M7.5 1.5V5H11M4 8H8M4 10H8" 
186                  stroke="#373737" stroke-width="1.25" stroke-linecap="round" stroke-linejoin="round"/> 
187        </svg> 
188    <#elseif mediaType == MEDIA_TYPE_VIDEO> 
189        <svg viewBox="0 0 16 11" fill="none" xmlns="http://www.w3.org/2000/svg"> 
190            <path d="M11.5 4.5L15 2.5V8.5L11.5 6.5M1.5 1.25H9.5C10.0304 1.25 10.5391 1.46071 10.9142 1.83579C11.2893 2.21086 11.5 2.71957 11.5 3.25V9.25C11.5 9.38261 11.4473 9.50979 11.3536 9.60355C11.2598 9.69732 11.1326 9.75 11 9.75H3C2.46957 9.75 1.96086 9.53929 1.58579 9.16421C1.21071 8.78914 1 8.28043 1 7.75V1.75C1 1.61739 1.05268 1.49021 1.14645 1.39645C1.24021 1.30268 1.36739 1.25 1.5 1.25Z" 
191                  stroke="#525252" stroke-linecap="round" stroke-linejoin="round"/> 
192        </svg> 
193    <#elseif mediaType == MEDIA_TYPE_AUDIO> 
194        <svg viewBox="0 0 12 15" fill="none" xmlns="http://www.w3.org/2000/svg"> 
195            <path d="M5.9999 12V14M10.4749 8C10.3452 9.09574 9.81795 10.1058 8.99314 10.8387C8.16834 11.5716 7.10329 11.9765 5.9999 11.9765C4.89651 11.9765 3.83147 11.5716 3.00666 10.8387C2.18186 10.1058 1.65462 9.09574 1.5249 8M5.9999 1C7.38061 1 8.4999 2.11929 8.4999 3.5V7.5C8.4999 8.88071 7.38061 10 5.9999 10C4.61919 10 3.4999 8.88071 3.4999 7.5V3.5C3.4999 2.11929 4.61919 1 5.9999 1Z" 
196                  stroke="#373737" stroke-width="1.25" stroke-linecap="round" stroke-linejoin="round"/> 
197        </svg> 
198    <#elseif mediaType == MEDIA_TYPE_PHOTO> 
199        <svg viewBox="0 0 14 13" fill="none" xmlns="http://www.w3.org/2000/svg"> 
200            <path d="M12 11.5H2C1.73478 11.5 1.48043 11.3946 1.29289 11.2071C1.10536 11.0196 1 10.7652 1 10.5V3.5C1 3.23478 1.10536 2.98043 1.29289 2.79289C1.48043 2.60536 1.73478 2.5 2 2.5H4L5 1H9L10 2.5H12C12.2652 2.5 12.5196 2.60536 12.7071 2.79289C12.8946 2.98043 13 3.23478 13 3.5V10.5C13 10.7652 12.8946 11.0196 12.7071 11.2071C12.5196 11.3946 12.2652 11.5 12 11.5Z" 
201                  stroke="#373737" stroke-width="1.25" stroke-linecap="round" stroke-linejoin="round"/> 
202            <path d="M7 9C8.24264 9 9.25 7.99264 9.25 6.75C9.25 5.50736 8.24264 4.5 7 4.5C5.75736 4.5 4.75 5.50736 4.75 6.75C4.75 7.99264 5.75736 9 7 9Z" 
203                  stroke="#373737" stroke-width="1.25" stroke-linecap="round" stroke-linejoin="round"/> 
204        </svg> 
205    <#elseif mediaType == MEDIA_TYPE_MAP> 
206        <svg viewBox="0 0 14 13" fill="none" xmlns="http://www.w3.org/2000/svg"> 
207            <path d="M5 10L1 11V2L5 1M5 10L9 12M5 10V1M5 1L9 3M9 12V3M9 12L13 11V2L9 3" stroke="#373737" 
208                  stroke-width="1.25" stroke-linecap="round" stroke-linejoin="round"/> 
209        </svg> 
210    </#if> 
211</#macro> 
212 
213 
214 
215<#macro renderCard infoToRender siteUrl> 
216    <#if !infoToRender["cardTitle"]??> 
217        <#return /> 
218    </#if> 
219 
220    <#assign cssRoot = "multimedia"/> 
221    <div class="card ${rootCss}" category-id="${infoToRender.mediaId}"> 
222        <#if infoToRender.thumbnailImage.url?has_content> 
223            <div class="img-container"> 
224                <img src="${infoToRender.thumbnailImage.url}" alt="${infoToRender.thumbnailImage.alt}"> 
225            </div> 
226        </#if> 
227        <div class="text-container"> 
228            <#if infoToRender.renderEditoriaCategoryAsLink> 
229                <a class="editoria small-caps-lg" 
230                   href="${siteUrl}/listar-editoria?q=&category=${infoToRender.editoriaCategoryId}">${infoToRender.editoriaCategoryTitle}</a> 
231            <#else> 
232                <p class="editoria small-caps-lg">${infoToRender.editoriaCategoryTitle}</p> 
233            </#if> 
234            <h2 class="card-title h2"> 
235                <#assign MAX_CARD_TITLE_CHARACTERS = 76 /> 
236                <#if infoToRender.cardTitle?length gt MAX_CARD_TITLE_CHARACTERS> 
237                    ${infoToRender.cardTitle?substring(0, MAX_CARD_TITLE_CHARACTERS)} + ... 
238                <#else> 
239                    ${infoToRender.cardTitle} 
240                </#if> 
241                <#-- ${infoToRender.cardTitle} --> 
242            </h2> 
243            <div class="date"> 
244                <#if locale == "pt_BR"> 
245                    <p class="updated">Publicado em ${formatDate(infoToRender.lastPublishDate)} 
246                        às ${formatTime(infoToRender.lastPublishDate)}</p> 
247                <#else > 
248                    <p class="updated">Published on ${formatDate(infoToRender.lastPublishDate)} 
249                        at ${formatTime(infoToRender.lastPublishDate)} </p> 
250                </#if> 
251            </div> 
252 
253 
254            <div class="media-link-container"> 
255                <div class="media-category-title-container"> 
256                    <@printMediaIcon infoToRender.mediaType /> 
257                    <p class="title"> 
258                        ${infoToRender.mediaCategoryTitle} 
259                    </p> 
260                </div> 
261 
262                <#assign originalFileSource= "" /> 
263                <#assign imgAlt= "" /> 
264                <#if infoToRender.originalFile.url?has_content> 
265                    <#assign originalFileSource= infoToRender.originalFile.url /> 
266                    <#assign imgAlt= infoToRender.originalFile.alt /> 
267                <#else> 
268                    <#assign originalFileSource= infoToRender.originalFileExternalUrl /> 
269                    <#assign imgAlt= infoToRender.cardTitle /> 
270                </#if> 
271                <#--  
272                <p> 
273                    infoToRender.originalFile.url : ${infoToRender.originalFile.url} <br> 
274                    infoToRender.originalFileExternalUrl : ${infoToRender.originalFileExternalUrl} 
275                </p> 
276        --> 
277                <a class="download link" href="${originalFileSource}" target="_blank"> 
278                    Download 
279                    <svg viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> 
280                        <path d="M5.04688 6.73438L8 9.6875M8 9.6875L10.9531 6.73438M8 9.6875V1.8125M14.1875 9.6875V13.625C14.1875 13.7742 14.1282 13.9173 14.0227 14.0227C13.9173 14.1282 13.7742 14.1875 13.625 14.1875H2.375C2.22582 14.1875 2.08274 14.1282 1.97725 14.0227C1.87176 13.9173 1.8125 13.7742 1.8125 13.625V9.6875" 
281                              stroke="#008542" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> 
282                    </svg> 
283                </a> 
284            </div> 
285        </div> 
286    </div> 
287</#macro> 
288 
289<#macro printCssStyleForMedia cssRoot> 
290    <style> 
291        .${cssRoot} { 
292            display: flex; 
293            flex-direction: column; 
294            gap: var(--space-none); 
295            border-radius: var(--border-radius-lg); 
296            border: 1px solid var(--color-neutral-400, #EEE); 
297            background: var(--color-neutral-100, #FFF); 
298            height: 404px; 
299            width: 306px; 
300					  flex-shrink: 0; 
301        } 
302        .${cssRoot}.none { 
303            display: none; 
304        } 
305 
306        .${cssRoot}:hover { 
307            box-shadow: var(--box-shadow-neutral); 
308            transition: box-shadow 300ms ease-in-out; 
309        } 
310 
311        .${cssRoot} .img-container { 
312            height: 170px; 
313        } 
314 
315        .${cssRoot} .img-container img { 
316            width: 306px; 
317            border-radius: var(--space-sm) var(--space-sm) var(--space-none) var(--space-none); 
318            object-fit: cover; 
319            left: -1px; 
320            position: relative; 
321            height: 170px; 
322        } 
323 
324        .${cssRoot} .text-container { 
325            width: 100%; 
326            padding: var(--space-md); 
327            display: flex; 
328            flex-direction: column; 
329            gap: var(--space-xxs, 8px); 
330            height: 100%; 
331        } 
332 
333        .${cssRoot} .text-container .editoria { 
334            color: var(--color-neutral-800, #373737); 
335            font-weight: var(--font-weight-regular); 
336        } 
337 
338        .${cssRoot} .text-container .card-title { 
339            color: var(--color-neutral-800, #373737); 
340            margin: 0; 
341            font-family: var(--font-family-base, "Petrobras Sans"); 
342            font-size: var(--font-size-sm, 20px); 
343            font-style: var(--font-style-normal,normal); 
344            font-weight: var(--font-weight-bold, 700); 
345            line-height: var(--line-height-md, 132%); /* 26.4px */ 
346        } 
347 
348        .${cssRoot} .text-container .date, 
349        .${cssRoot} .text-container .date .updated, 
350        .${cssRoot} .text-container .date .published { 
351            color: var(--color-neutral-800, #373737); 
352            font-family: var(--font-family-base, "Petrobras Sans"); 
353            font-size: var(--font-size-xxxs, 14px); 
354            font-style:  var(--font-style-normal, normal); 
355            font-weight: var(--font-weight-regular, 400); 
356            line-height: var(--line-height-xl, 160%); /* 25.6px */ 
357            margin: var(--space-none); 
358        } 
359 
360        .${cssRoot} .text-container .bar { 
361            width: var(--size-xl); 
362            height: 4.1px; 
363            margin-top: var(--space-md); 
364            background-color: var(--color-secondary-medium); 
365        } 
366 
367        .${cssRoot} .text-container .date { 
368        } 
369 
370        .${cssRoot} .text-container .media-link-container { 
371            display: flex; 
372            flex-direction: row; 
373            align-items: flex-end; 
374            justify-content: space-between; 
375            padding-top: var(--size-xxxs); 
376            height: 100%; 
377        } 
378 
379        .${cssRoot} .text-container .media-link-container .media-category-title-container { 
380            display: flex; 
381            gap: var(--size-micro); 
382            align-items: center; 
383            justify-content: center; 
384            border-radius: 100px; 
385            padding: var(--space-none) var(--space-xs); 
386            border: 1px solid var(--color-neutral-400, #EEE); 
387            background: var(--color-neutral-200, #FBFBFB); 
388            height: 32px; 
389        } 
390 
391        .${cssRoot} .text-container .media-link-container .media-category-title-container svg { 
392            max-width: 16px; 
393            width: 16px; 
394        } 
395 
396        .${cssRoot} .text-container .media-link-container .media-category-title-container .title { 
397            color: var(--color-neutral-700, #525252); 
398            font-family: var(--font-family-base); 
399            font-size: var(--font-size-xxxs); 
400            font-style: var(--font-style-normal); 
401            font-weight: var(--font-weight-regular); 
402            line-height: var(--line-height-xl); 
403            margin: var(--space-none); 
404        } 
405 
406        .${cssRoot} .text-container .media-link-container .download { 
407            color: var(--color-primary-medium, #008542); 
408            font-family: var(--font-family-base); 
409            font-size: var(--font-size-xxxs); 
410            font-style:  var(--font-style-normal); 
411            font-weight: var(--font-weight-bold); 
412            line-height: var(--line-height-lg); 
413 
414            text-decoration-line: var(--text-decoration-underline); 
415            display: flex; 
416            gap: var(--space-xxs); 
417            align-items: center; 
418        } 
419 
420        .${cssRoot} .text-container .media-link-container .download svg { 
421            width: 18px !important; 
422            height: 18px; 
423        } 
424 
425        @media screen and (max-width: 742px) { 
426            .${cssRoot} { 
427                flex-direction: column; 
428                gap: var(--space-none); 
429                min-width: 296px; 
430            } 
431 
432            .${cssRoot} .img-container img { 
433                height: 154px; 
434                border-radius: var(--border-radius-lg) var(--border-radius-lg) 0 0; 
435                object-fit: cover; 
436                max-width: 296px; 
437            } 
438 
439            .${cssRoot} .text-container { 
440                padding: var(--space-md); 
441                gap: var(--space-xxs); 
442            } 
443 
444            .${cssRoot} .text-container .bar { 
445                margin: var(--space-sm) var(--space-none); 
446            } 
447 
448            .${cssRoot}  .text-container .media-link-container .media-category-title-container .title { 
449                font-size: var(--font-size-micro); 
450            } 
451 
452            .${cssRoot} .text-container .media-link-container .media-category-title-container svg { 
453                width: 16px; 
454            } 
455 
456            .${cssRoot} .text-container .media-link-container .media-category-title-container { 
457                gap: var(--size-micro); 
458                padding: var(--space-xxxs) var(--space-xxs); 
459                height: 24px; 
460            } 
461 
462            .${cssRoot} .text-container .media-link-container .download { 
463                font-size: var(--font-size-micro); 
464            } 
465        } 
466    </style> 
467</#macro> 
468 
469 
470<#--assign AssetEntryFinder = serviceLocator.findService("com.liferay.asset.kernel.service.persistence.AssetEntryFinder") --> 
471 
472<#function getAssetEntries assetEntryQuery portalUtil assetEntryLocalServiceUtil> 
473    <#attempt > 
474        <#assign groupId = themeDisplay.getScopeGroupId()> 
475        <#assign companyId = themeDisplay.getCompanyId()> 
476        <#assign realUserId = themeDisplay.getDefaultUserId() /> 
477        <#assign className = "com.liferay.journal.model.JournalArticle"> 
478        <#assign classNameId = portalUtil.getClassNameId(className)> 
479 
480        ${assetEntryQuery.setClassNameIds([classNameId]) } 
481        ${assetEntryQuery.setEnd(8)} 
482 
483        <#assign allAssets = []/> 
484        <#list mediaVocabulary.getCategories() as medCat> 
485            ${assetEntryQuery.setAllCategoryIds([medCat.getCategoryId()])} 
486            <#assign ents = assetEntryLocalServiceUtil.getEntries(assetEntryQuery) /> 
487            <#assign allAssets = allAssets + ents /> 
488        </#list> 
489 
490        <#return allAssets /> 
491        <#recover > 
492            <#return [] /> 
493    </#attempt> 
494</#function> 
495 
496 
497 
498<#assign allAssets = getAssetEntries(assetEntryQuery, portalUtil, assetEntryLocalServiceUtil) /> 
499<#list allAssets as assetEntry> 
500    <#assign cardData = getCardData(assetEntry journalArticleService fileEntryService cardMap mediaVocabulary) />	   
501    <@renderCard cardData SITE_URL/> 
502</#list> 
503 
504<@printCssStyleForMedia rootCss/> 
505 
506 
507<#assign	cardMap = {} /> 
508<#list allAssets as assetEntry> 
509 
510    <#assign journalArticleCategories = assetCategoryLocalService.getCategories("com.liferay.journal.model.JournalArticle", entry.getClassPK()) /> 
511 
512    <#assign mediaCategory = getFirstCategoryFromVocabulary(journalArticleCategories, mediaVocabulary) /> 
513    <#assign mediCategoryId = -1 /> 
514    <#if mediaCategory?has_content> 
515        <#assign mediCategoryId = mediaCategory.getCategoryId() /> 
516    </#if> 
517    <#if mediCategoryId == -1> 
518        <#return {} /> 
519    </#if> 
520    <#if cardMap[mediCategoryId?string]??> 
521        <#if cardMap[mediCategoryId?string]?size gt 7 > 
522        <#--return {} --> 
523        </#if> 
524    </#if> 
525 
526    <#assign journalArticle = journalArticleService.getLatestArticle(entry.getClassPK()) /> 
527    <#assign ddmStructure = journalArticle.getDDMStructure() /> 
528    <#assign fieldList = getFieldListByStructure(ddmStructure) /> 
529    <#assign xmlArticle = journalArticle.getDocument().getRootElement() /> 
530 
531    <#assign cardTitle = getFieldValue(fieldList, xmlArticle, "Título Home")/> 
532    <#assign subtitle = getFieldValue(fieldList, xmlArticle, "Legenda")/> 
533    <#assign author = getFieldValue(fieldList, xmlArticle, "Autor")/> 
534    <#assign thumbnailImage = getMediaInfo(fieldList, xmlArticle, "Imagem de thumbnail", fileEntryService) > 
535 
536    <#assign groupId = getIdFromFieldName(fieldList, "Arquivo original") /> 
537    <#assign originalFileGroup = getGroupNode(groupId, xmlArticle) /> 
538 
539    <#assign originalFile = getMediaInfo(fieldList, originalFileGroup, "Arquivo selecionado", fileEntryService) > 
540    <#assign originalFileExternalUrl = getFieldValue(fieldList, originalFileGroup, "URL externa") /> 
541 
542    <#assign lastPublishDate = journalArticle.getDisplayDate()> 
543    <#assign createDate = journalArticle.getCreateDate()> 
544    <#if journalArticle.getLastPublishDate()??> 
545        <#assign lastPublishDate = journalArticle.getLastPublishDate()> 
546    </#if> 
547 
548    <#assign editoriaCategory = getFirstCategoryFromVocabulary(journalArticleCategories, editoriaVocabulary) /> 
549 
550    <#assign photoCategory = getCategory(mediaPhotoCategoryTitle[locale], journalArticleCategories) /> 
551    <#assign documentCategory = getCategory(mediaDocumentCategoryTitle[locale], journalArticleCategories) /> 
552    <#assign mapCategory = getCategory(mediaMapCategoryTitle[locale], journalArticleCategories) /> 
553    <#assign audioCategory = getCategory(mediaAudioCategoryTitle[locale], journalArticleCategories) /> 
554    <#assign videoCategory = getCategory(videoPhotoCategoryTitle[locale], journalArticleCategories) /> 
555 
556    <#assign isPhoto = photoCategory?has_content /> 
557    <#assign isDocument = documentCategory?has_content /> 
558    <#assign isMap = mapCategory?has_content /> 
559    <#assign isAudio = audioCategory?has_content /> 
560    <#assign isVideo = videoCategory?has_content /> 
561 
562    <#assign mediaType = -1 /> 
563 
564    <#if isPhoto> 
565        <#assign mediaType = MEDIA_TYPE_PHOTO /> 
566    <#elseif isDocument> 
567        <#assign mediaType = MEDIA_TYPE_DOCUMENT /> 
568    <#elseif isMap> 
569        <#assign mediaType = MEDIA_TYPE_MAP /> 
570    <#elseif isAudio> 
571        <#assign mediaType = MEDIA_TYPE_AUDIO /> 
572    <#elseif isVideo> 
573        <#assign mediaType = MEDIA_TYPE_VIDEO /> 
574    </#if> 
575 
576    <#assign cardInfo = {"cardTitle": cardTitle, 
577    "subtitle" : subtitle, 
578    "author": author, 
579    "thumbnailImage": thumbnailImage, 
580    "originalFile": originalFile, 
581    "originalFileExternalUrl": originalFileExternalUrl, 
582    "lastPublishDate": lastPublishDate, 
583    "createDate" : createDate, 
584    "mediaId": mediCategoryId, 
585    "mediaCategoryTitle": mediaCategory.getTitle(locale), 
586    "mediaType" : mediaType, 
587    "editoriaCategoryTitle" : editoriaCategory.getTitle(locale), 
588    "editoriaCategoryId" : editoriaCategory.getCategoryId(), 
589    "renderEditoriaCategoryAsLink" : true, 
590    "renderMediaCategoryAsLink" : false 
591    }/> 
592 
593    <h1> 
594        <!-- originalFile.url : ${cardInfo.originalFile.url} --> 
595    </h1> 
596 
597    <#if cardMap[mediCategoryId?string]??> 
598        <#assign cardMap = cardMap + {mediCategoryId : cardMap[mediCategoryId?string] + [cardInfo]} /> 
599    <#else> 
600        <#assign cardMap = cardMap + {mediCategoryId : [cardInfo]} /> 
601    </#if> 
602 
603</#list> 
604 
605 
606 
607 
608 
609 
610 
611 
612 
613 
614 
615 
616 
617 
618 
619<#-- Renderizar Lista de cards --> 
620<#--if entries?has_content> 
621    <#list entries as entry> 
622        <#assign cardData = getCardData(entry journalArticleService fileEntryService cardMap mediaVocabulary) /> 
623        <@renderCard cardData SITE_URL/> 
624    </#list> 
625 
626    <@printCssStyleForMedia rootCss/> 
627</#if --> 

Notice


This is an exclusive press communication channel. We request that demands not related to journalistic issues (for instance: advertising, legal issues, employee participation at events, academic research, and others) not be sent to this contact.

The Fale Conosco channel or 0800 728 9001 are the proper channels to request company information in general.


Petrobras
Página da Petrobras no Bluesky Logo rede social bluesky
Petrobras' Bluesky Page
Link de exemplo Logo rede social threads
Petrobras' Threds Page
Link de exemplo Logo rede social Facebook
Petrobras' Facebook Page
Link de exemplo Logo rede social instagram
Petrobras' Instagram Page
Página da Petrobras no You Tube Logo rede social youtube
Petrobras' YouTube Page
Link de exemplo Logo rede social tik tok
Petrobras' Tik Tok Page
Link de exemplo Logo rede social linkedin
Petrobras' Linkedin Page

Use our search to find what you are looking for

no content

Do a search:

Search suggestions

Link do botão
Ícone do botão Exibir mais resultados
Ícone de carregamento

Most searched

Fuel price

Pre-salt

Team Petrobras

Phone icon

Customer Service Center

0800 728 9001

Information icon

Access to Information

Transparency Portal

  • Press Office
    • +55 (21) 99921-1048
    • +55 (21) 99985-9623
    • imprensa@petrobras.com.br
  • Categories
    • Sustainability
    • Business
    • Inovation
    • Institutional
  • Also access:
    • Petrobras' website
    • Fuel prices
    • Nossa Energia
    • Investor Relations
    • Transparency Portal


Cookie Settings Privacy and Personal Data Accessibility Sitemap

© Copyright Petrobras 2024. All rights reserved.

  • Seleção de Jornalismo
  • Institutional
  • Inovation
  • Sustainability
  • Business
  • Regionais

You are on: PETROBRAS' AGENCY

Choose a channel:

Negócios
Negócios
Negócios
Transparência
Transparência
Transparência
Site Petrobras
Site Petrobras
Site Petrobras
no content

Do a search:

Search suggestions

Link do botão
Ícone do botão Exibir mais resultados
Ícone de carregamento

Most searched

Fuel price

Pre-salt

Team Petrobras

Accessibility:

High-Contrast

Off

On

Big Text

Off

On

Language:

Select a language:

Language

Accessibility

Channels

Search

logo-petro

When you visit a website, it may store or collect information in your browser, mostly in the form of cookies. This information might be about you, your preferences, or your device and is primarily used to make the website work as expected. The information usually does not directly identify you but can provide a more personalized web experience. As we respect your right to privacy, you can choose not to allow certain types of cookies. Click on the titles of different categories to learn more and adjust our default settings. However, blocking some types of cookies may affect your experience on the website and the services we can offer. For more information, visit our Privacy and Personal Data Protection page

Strictly Necessary Cookies

Always Active

These cookies are necessary for the website to function and cannot be disabled in our systems. They are usually set only in response to actions you take that constitute a request for services, such as setting your privacy preferences, logging in, or filling out forms. You can configure your browser to block or alert you about these cookies, but some parts of the website will not work. These cookies do not store any personally identifiable information.

Functional Cookies

hese cookies enable the website to provide enhanced functionality and personalization. They may be set by us or by third parties whose services we have added to our pages. If these cookies are not allowed, some or all of these services may not function properly.

Performance Cookies

These cookies allow us to count visits and traffic sources so we can measure and improve the performance of our website. They help us understand which pages are the most and least popular and see how visitors navigate the site. All information collected by these cookies is aggregated and, therefore, anonymous. If you do not allow these cookies, we will not know when you visited our website.

Personalization Cookies

These cookies may be set on our website by our advertising partners. They may be used by these companies to build a profile of your interests and show you relevant ads on other websites. They do not directly store personal information but are based on uniquely identifying your browser and internet device. If you do not allow these cookies, you will see less targeted advertising.

We use cookies to deliver personalized content, analyze trends, administer the site, track user movements on the site, and collect demographic information about our user base as a whole. Accept all cookies for the best possible experience on our website or manage your preferences. Visit our Privacy Policy