I am currently trying to create some pdfs for a Meta Human salesforce app and cannot figure out how to merge two visual force pages into one correctly. I am using the apex:include tag to merge the two visual force pages; however, the styles of the second page are not being applied when the two pages are merged together. If I preview the second page that styles are applied correctly.
How would I correctly preserve the styles in the second visual force page after the two are merged together?
Visual Force Page 1
<apex:page renderAs="pdf" id="HeroPDF" standardController="Meta_Human__c" extensions="attachPDF,Test_Two_Extentions" action="{!loadData}" standardStylesheets="false" applyHtmlTag="false" showHeader="false" applyBodyTag="false">
<html>
<head>
<style type="text/CSS">
body {
font-family: "Metropolis", sans-serif;
font-size: 14px;
}
table {
border-collapse: collapse;
width: 100%;
}
th, td {
border: 1px solid #000;
padding: 8px;
width: 50%;
}
.headerRow {
background-color: #E8E8E8;
color: #b25a00;
}
.watermark {
position: fixed;
top: 0.5;
right: 0.5;
background-image: url("{!$Resource.draft}");
width: 715px;
height: 950px;
z-index: -1;
}
</style>
</head>
<body>
<!-- <div class="watermark"></div> -->
<div style="margin-bottom:20px;">
<center><apex:image url="{!$Resource[heroResource]}" width="150" height="88"/></center>
</div>
<table>
<tbody>
<tr>
<td class="headerRow" colspan="10"><strong>Hero Information</strong></td>
</tr>
<tr>
<td>
<div>
<strong>Hero Name</strong>
</div>
{!Meta_Human__c.Name}
</td>
<td>
<div>
<strong>Real Name</strong>
</div>
{!Meta_Human__c.Real_Name__c}
</td>
</tr>
<tr>
<td>
<div>
<strong>Attributes</strong>
</div>
{!Meta_Human__c.Attributes__c}
</td>
<td>
<div>
<strong>Gender</strong>
</div>
{!Meta_Human__c.Gender__c}
</td>
</tr>
<tr>
<td class="headerRow" colspan="10"><strong>Hero Affiliations</strong></td>
</tr>
<tr>
<td>
<div>
<strong>Meta Human Team</strong>
</div>
{!Meta_Human__c.Meta_Human_Team__r.Name}
</td>
<td>
<div>
<strong>Current Sidekick</strong>
</div>
{!Meta_Human__c.Current_Sidekick__r.Name}
</td>
</tr>
</tbody>
</table>
<div style="margin-top:24px;">
<apex:include pageName="HeroPDF2" rendered="{!NOT(ISBLANK(Meta_Human__c.Meta_Human_Team__r.Name))}"/>
</div>
</body>
</html>
</apex:page>
Visual Force Page 2
<apex:page renderAs="pdf" id="HeroPDF2" standardController="Meta_Human__c" standardStylesheets="false" applyHtmlTag="false" showHeader="false" applyBodyTag="false">
<html>
<head>
<style type="text/CSS">
body {
font-family: "Metropolis", sans-serif;
font-size: 14px;
}
table {
margin-top: 24px;
border-collapse: collapse;
width: 100%;
}
th, td {
border: 1px solid #000;
padding: 8px;
width: 50%;
}
.header-row {
background-color: #E8E8E8;
color: #b25a00;
}
</style>
</head>
<body>
<table>
<tbody>
<tr>
<td class="header-row"><strong>Hero Team Name</strong></td>
</tr>
<tr>
<td>
{!Meta_Human__c.Meta_Human_Team__r.Name}
</td>
</tr>
<tr>
<td class="header-row"><strong>Total Number of Members</strong></td>
</tr>
<tr>
<td>
{!Meta_Human__c.Meta_Human_Team__r.Total_Count_Of_Members__c}
</td>
</tr>
<tr>
<td class="header-row"><strong>Team Problems</strong></td>
</tr>
<tr>
<td>
{!Meta_Human__c.Meta_Human_Team__r.Team_Problems__c}
</td>
</tr>
</tbody>
</table>
</body>
</html>
</apex:page>
Screenshot of the second visual force page styling not applying (Hero Team Name Table)

Thanks to
@eyescreamcomment. Was able to resolve styles not applying to the second visualforce page by usingID selector.ID Selectorsonly wasn't the solution but a good starting point to the solution.What ended up working was assigning the
bodyof both visualforce pages aunique IDandprefixingtheCSSwith the correspondingunique ID. If you justprefixtheCSSin the second page alone will NOT apply the styles when the two pages are merged. You need to move theCSSfrom the second visualforce page into the first visualforce page. The moving of the second visualforce page'sCSSinto the first visualforce page is the magic.In the code below, I choose to copy the second visualforce page's
CSSinto the first visualforce page, that way when previewing the second visualforce page the styles are still applied.Updated Visualforce Page 1
Updated Visualforce Page 2
Updated Screenshot of second visualforce page applying (Hero Team Name Table)