I was working on some acroforms and wherever I needed a space I kept on getting a different letter (Ê). On debugging the problem seems to be in the TryGetCharCode function of OpenTypeFontSource
Version: 2019.3.917
Below is copy of function
public override bool TryGetCharCode(int unicode, out int charCode)
{
bool result = false;
ushort glyphId;
charCode = CMap.MISSING_GLYPH_ID;
if (this.TryGetGlyphId(unicode, out glyphId))
{
ushort uCharCode = CMap.MISSING_GLYPH_ID;
CMapTable table = this.CMap.GetCMapTable(3, 0);
if (table != null)
{
result = table.TryGetCharId(glyphId, out uCharCode);
}
table = this.CMap.GetCMapTable(1, 0);
if (table != null)
{
result = table.TryGetCharId(glyphId, out uCharCode);
}
charCode = uCharCode;
return result;
}
return false;
}
The font used has 2 cmap tables: one with platformid of 3 and encodingid of 1, the other with platformid 1 and encodingid 0. According to https://docs.microsoft.com/en-us/typography/opentype/spec/cmap platform id 3 and encoding 1 is correct for windows so not sure why the first call to getcmaptable looks for encodingid 0.
Second of all even if I change it to the following
CMapTable table = this.CMap.GetCMapTable(3, 1);
if there is a second cmap with platformid of 1 whatever the result of the call with regards to platformid 3, the result will be overridden
I can say that if I add some checks so that if the first call succeeds it doesn't attempt the 2nd I do get the expected behaviour in the pdf and get spaces
As a note the FontFamily property of the OpenTypeFontSource is "Arial"
I am using the trial version of telerik for xamarin for .net core which was released last year, to convert pdf to text. Our service is hosted in Azure. The text which I get back, in certain cases the spaces are missing (say for example instead of 'I [am] here', it displays 'I[am]here'. This happens randomly.
The code which we have used is as follows -
byte[] pdfBinary = Convert.FromBase64String(inputString);A possible workaround could be to draw a rectangle around the desired Block.
RadFixedDocument document = new RadFixedDocument();
RadFixedPage page = document.Pages.AddPage();
page.Size = new Size(600, 800);
FixedContentEditor editor = new FixedContentEditor(page);
editor.Position.Translate(defaultLeftIndent, 50);
Block block = new Block();
block.InsertText("PDF");
editor.DrawBlock(block);
Block border = new Block();
border.GraphicProperties.StrokeColor = RgbColors.Black;
border.GraphicProperties.IsFilled = false;
border.GraphicProperties.IsStroked = true;
border.GraphicProperties.StrokeThickness = 1;
border.InsertRectangle(new System.Windows.Rect(block.Measure()));
editor.DrawBlock(border);
Telerik Pdf Processing Cannot open the attached pdf file and exception occur.
How do i slove it?
Code :
RadFixedDocument document = new PdfFormatProvider().Import(input);
Exception Message :
System.UriFormatException 無效的 URI: 無法剖析主機名稱。
Source :
Telerik.Windows.Documents.Fixed
Stack Trace :
於 System.Uri.CreateThis(String uri, Boolean dontEscape, UriKind uriKind)Inserting a table with more than 10K rows is very slow.
Workaround:
Use the following approach with SpreadStreamProcessing,SpreadProcessing and PdfProcessing:PdfProcessing: Signature field validation fails if a document is imported from a byte array of CopyStream property is false.
Workaround: Set the CopyStream property of the ImportSettings to true:
PdfFormatProvider formatProvider = new PdfFormatProvider();Wrong encoding is used when the PDF file contains font with custom encoding
Workaround:
foreach (var widget in field.Widgets)
{
widget.TextProperties.Font = FontsRepository.Helvetica;
}
When using the Telerik.Documents.ImageUtils.JpegImageConverter default implementation in Blazor WebAssembly application the Magick.NET library doesn't load all of its assemblies.
Workaround:
Create a custom implementation of the JpegImageConverterBase class: Create Custom JpegImageConverter in .Net Standard.