Skip to content

Commit 1647eac

Browse files
Merge branch 'hotfix/hotfix-v32.2.3' into 1008749-pdfViewerH
2 parents 10f3f17 + 48ccfaa commit 1647eac

3 files changed

Lines changed: 140 additions & 5 deletions

File tree

Document-Processing/PDF/Conversions/HTML-To-PDF/NET/troubleshooting.md

Lines changed: 29 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1560,22 +1560,46 @@ N> We have option to exclude the default Blink binaries from the installation pa
15601560

15611561
## How to Exclude BlinkBinaries or Runtime Files in Build or Deployment
15621562

1563-
The runtime files, or blink binaries, will be copied into a bin or published folder while building and publishing the application.
1564-
By including the <ExcludeAssets>native</ExcludeAssets> option in the package reference of the csproj file, you can exclude the runtime files or blink binaries from being copied into the bin or publish folder while building and publishing the application. But you need to place the BlinkBinaries in the server disk and set the BlinkPath in the BlinkConverterSettings to perform the conversion.
1563+
When you build or publish the application, the Syncfusion HTML‑to‑PDF converter automatically copies the Blink runtime files (BlinkBinaries) into the <i>bin</i> or <i>publish</i> output folder. These binaries are required for HTML‑to‑PDF conversion at runtime. However, in certain deployment scenarios—such as reducing the deployment size or using a shared/system‑installed Chromium—you can exclude these files and instead provide the Blink binaries manually on the host machine.
1564+
1565+
To exclude BlinkBinaries during the build process, configure your project file depending on whether you are using <b>.NET Core/.NET or .NET Framework</b>.
15651566

1566-
N> Using this approach, you can reduce the deployment size on your own servers.
1567+
<b>Exclude BlinkBinaries in .NET Core</b>
1568+
You can prevent runtime files from being included by restricting the package to <b>compile-only</b> assets using the <b>IncludeAssets</b> tag in the <b>PackageReference</b>. This stops all Blink runtime binaries from being copied into the output folder.
15671569

15681570
Refer to the following package reference:
15691571

15701572
{% tabs %}
15711573
{% highlight C# %}
15721574

15731575
<ItemGroup>
1574-
<PackageReference Include="Syncfusion.HtmlToPdfConverter.Net.Windows" Version="31.1.23">
1575-
<ExcludeAssets>native</ExcludeAssets>
1576+
<PackageReference Include="Syncfusion.HtmlToPdfConverter.Net.Windows" Version="32.1.21">
1577+
<IncludeAssets>compile;runtime</IncludeAssets>
15761578
</PackageReference>
15771579
</ItemGroup>
15781580

15791581
{% endhighlight %}
15801582
{% endtabs %}
15811583

1584+
By using <b>IncludeAssets="compile"</b>, only the required compile-time metadata is included, and all runtime dependencies (BlinkBinaries) are excluded from the final build or publish output.
1585+
1586+
N> If you exclude runtime files, you must manually place BlinkBinaries on the server and configure BlinkPath in BlinkConverterSettings for conversion to work.
1587+
1588+
<b>Exclude BlinkBinaries in .NET Framework Projects</b>
1589+
1590+
For .NET Framework applications, Blink runtime files are included through a .targets file referenced in the project.
1591+
To exclude BlinkBinaries, simply remove this import entry.
1592+
1593+
{% tabs %}
1594+
{% highlight C# %}
1595+
1596+
<Import Project="packages\Syncfusion.HtmlToPdfConverter.AspNet.Mvc5.32.1.20\build\net462\Syncfusion.HtmlToPdfConverter.AspNet.Mvc5.targets" Condition="Exists('packages\Syncfusion.HtmlToPdfConverter.AspNet.Mvc5.32.1.20\build\net462\Syncfusion.HtmlToPdfConverter.AspNet.Mvc5.targets')" />
1597+
1598+
{% endhighlight %}
1599+
{% endtabs %}
1600+
1601+
Removing this line prevents the Syncfusion<sup>&reg;</sup> build targets from copying BlinkBinaries and other runtime files into your bin folder during build or publish.
1602+
1603+
N> By excluding BlinkBinaries, you can significantly reduce the size of your deployment package, especially in server environments where disk usage and deployment time matter.
1604+
1605+

Document-Processing/PDF/PDF-Library/NET/Working-with-Security.md

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1603,6 +1603,83 @@ loadedDocument.Close(True)
16031603

16041604
You can download a complete working sample from [GitHub](https://github.com/SyncfusionExamples/PDF-Examples/tree/master/Security/Change-the-permission-of-the-PDF-document/).
16051605

1606+
## View document permission flags
1607+
1608+
Read a PDF document permission flags via the [Security.Permissions](https://help.syncfusion.com/cr/document-processing/Syncfusion.Pdf.Security.PdfSecurity.html#Syncfusion_Pdf_Security_PdfSecurity_Permissions) property, which returns a bitwise combination of values from the [PdfPermissionsFlags](https://help.syncfusion.com/cr/document-processing/Syncfusion.Pdf.Security.PdfPermissionsFlags.html) enumeration.
1609+
1610+
{% tabs %}
1611+
{% highlight c# tabtitle="C# [Cross-platform]" %}
1612+
1613+
// Load an existing PDF
1614+
using (PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"))
1615+
{
1616+
// Access the document security settings
1617+
PdfSecurity security = loadedDocument.Security;
1618+
// Get the permission flags (bitwise enum)
1619+
PdfPermissionsFlags permissions = security.Permissions;
1620+
Console.WriteLine("Permissions in the document:");
1621+
// Enumerate all flags and print the enabled ones
1622+
foreach (PdfPermissionsFlags flag in Enum.GetValues(typeof(PdfPermissionsFlags)))
1623+
{
1624+
if (flag == 0) continue; // Skip None (0)
1625+
// Check whether the specific flag is set
1626+
if (permissions.HasFlag(flag))
1627+
{
1628+
Console.WriteLine($"- {flag}");
1629+
}
1630+
}
1631+
}
1632+
1633+
{% endhighlight %}
1634+
{% highlight c# tabtitle="C# [Windows-specific]" %}
1635+
1636+
// Load an existing PDF
1637+
using (PdfLoadedDocument loadedDocument = new PdfLoadedDocument("Input.pdf"))
1638+
{
1639+
// Access the document security settings
1640+
PdfSecurity security = loadedDocument.Security;
1641+
// Get the permission flags (bitwise enum)
1642+
PdfPermissionsFlags permissions = security.Permissions;
1643+
Console.WriteLine("Permissions in the document:");
1644+
// Enumerate all flags and print the enabled ones
1645+
foreach (PdfPermissionsFlags flag in Enum.GetValues(typeof(PdfPermissionsFlags)))
1646+
{
1647+
if (flag == 0) continue; // Skip None (0)
1648+
// Check whether the specific flag is set
1649+
if (permissions.HasFlag(flag))
1650+
{
1651+
Console.WriteLine($"- {flag}");
1652+
}
1653+
}
1654+
}
1655+
1656+
{% endhighlight %}
1657+
{% highlight vb.net tabtitle="VB.NET [Windows-specific]" %}
1658+
1659+
' Load an existing PDF
1660+
Using loadedDocument As New PdfLoadedDocument("Input.pdf")
1661+
' Access the document security settings
1662+
Dim security As PdfSecurity = loadedDocument.Security
1663+
' Get the permission flags (bitwise enum)
1664+
Dim permissions As PdfPermissionsFlags = security.Permissions
1665+
Console.WriteLine("Permissions in the document:")
1666+
' Enumerate all flags and print the enabled ones
1667+
For Each flag As PdfPermissionsFlags In [Enum].GetValues(GetType(PdfPermissionsFlags))
1668+
If flag = 0 Then
1669+
Continue For ' Skip None (0)
1670+
End If
1671+
' Check whether the specific flag is set
1672+
If permissions.HasFlag(flag) Then
1673+
Console.WriteLine($"- {flag}")
1674+
End If
1675+
Next
1676+
End Using
1677+
1678+
{% endhighlight %}
1679+
{% endtabs %}
1680+
1681+
You can download a complete working sample from GitHub.
1682+
16061683
## Remove password from the user password PDF document
16071684

16081685
You can remove the [UserPassword](https://help.syncfusion.com/cr/document-processing/Syncfusion.Pdf.Security.PdfSecurity.html#Syncfusion_Pdf_Security_PdfSecurity_UserPassword) from the encrypted PDF document by using the following code snippet.

Document-Processing/PDF/PDF-Library/NET/Working-with-Text.md

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3149,6 +3149,40 @@ if (!searchText.Any(text => pageText.Contains(text)))
31493149
<br>
31503150
Create fonts, brushes, and pens once and reuse them throughout the document to reduce memory usage and improve rendering speed.
31513151

3152+
</td>
3153+
</tr>
3154+
</table>
3155+
3156+
### Why does `PdfTrueTypeFont` fail to load system fonts automatically?
3157+
3158+
<table>
3159+
<th style="font-size:14px" width="100px">Issue
3160+
</th>
3161+
<th style="font-size:14px">When you create a PdfTrueTypeFont using only a font family name (e.g., "Arial") in .NET Core or cross‑platform apps, the font can fail to load causing missing text, wrong rendering, or "font not found".
3162+
</th>
3163+
3164+
<tr>
3165+
<th style="font-size:14px" width="100px">Reason
3166+
</th>
3167+
<td><b>In .NET Framework</b>: the PDF library can resolve installed fonts by name <i>(e.g., new Font("Arial", 20) → new PdfTrueTypeFont(font, true) works)</i>.
3168+
<br>
3169+
<b>In .NET Core and cross‑platform environments</b>: system font APIs aren't exposed the same way, so PdfTrueTypeFont cannot locate fonts by name you must provide the actual <i>.ttf</i> file (path or stream) to load the font reliably.
3170+
</td>
3171+
</tr>
3172+
3173+
<tr>
3174+
<th style="font-size:14px" width="100px">Solution
3175+
</th>
3176+
<td>
3177+
Load the font directly from a <i>.ttf</i> file using a path or stream, then pass it to <a href="https://help.syncfusion.com/cr/document-processing/Syncfusion.Pdf.Graphics.PdfTrueTypeFont.html">PdfTrueTypeFont</a>. This ensures consistent font embedding across all platforms.
3178+
{% tabs %}
3179+
{% highlight C# tabtitle="C#" %}
3180+
3181+
PdfTrueTypeFont ttf = new PdfTrueTypeFont("Arial.ttf", 20);
3182+
3183+
{% endhighlight %}
3184+
{% endtabs %}
3185+
31523186
</td>
31533187
</tr>
31543188
</table>

0 commit comments

Comments
 (0)