Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

XpsDocument.GetFixedDocumentSequence throws XamlParseException

I have to import an .xlsx file into my WPF application and view it. I convert the document to .xps and then loading. After that I call GetFixedDocumentSequence() and there I get this Exception

XamlParseException:

{"UnicodeString property does not contain enough characters to correspond to the contents of Indices property."}.

here is my code:

private void LoadData()
{
    string xpsPath = ViewDocumentViewer("D:\\test.xlsx");
    DisplayXPSFile(xpsPath);
}

private string ViewDocumentViewer(string path)
{
    try
    {
        string xpsPath;
        var excelApp = new Microsoft.Office.Interop.Excel.Application();
        excelApp.DisplayAlerts = false;
        excelApp.Visible = false;
        Microsoft.Office.Interop.Excel.Workbook excelWorkbook = excelApp.Workbooks.Open(path);
        xpsPath = ExportXPS(excelWorkbook, path);
        excelWorkbook.Close(false, null, null);
        excelApp.Quit();
        Marshal.ReleaseComObject(excelApp);
        excelApp = null;

        return xpsPath;
    }
    catch
    { 
    }

    return string.Empty;
}

string ExportXPS(Microsoft.Office.Interop.Excel.Workbook excelWorkbook, string path)
{
    string xpsFileName;
    xpsFileName = (new DirectoryInfo(path)).FullName;
    xpsFileName = xpsFileName.Replace(new FileInfo(path).Extension, "") + ".xps";
    excelWorkbook.ExportAsFixedFormat(XlFixedFormatType.xlTypeXPS,
    Filename: xpsFileName,
    OpenAfterPublish: false);

    return xpsFileName;
}

void DisplayXPSFile(string xpsFileName)
{
    XpsDocument xpsPackage = new XpsDocument(xpsFileName, FileAccess.Read, CompressionOption.NotCompressed);
    FixedDocumentSequence fixedDocumentSequence = xpsPackage.GetFixedDocumentSequence();
    DocView.Document = fixedDocumentSequence;
}
like image 534
Danny Avatar asked Dec 13 '25 01:12

Danny


1 Answers

It looks there was something wrong with the Excel conversion to XPS. That's usually associated with a Glyphs or Font problem. You can open your XPS file (I use this extension on Visual Studio: http://visualstudiogallery.msdn.microsoft.com/450a00e3-5a7d-4776-be2c-8aa8cec2a75b?SRC=VSIDE) to see where the problem is coming from. Navigate to the page generating the error and find the Glyphs containing the problem.

<Canvas Clip="F 1 M137.710006714,208.58001709 L476.861022949,208.58001709 L476.861022949,208.58001709 L476.861022949,219.83001709 L476.861022949,219.83001709 L137.710006714,219.83001709 Z">
    <Glyphs OriginX="0" OriginY="0" UnicodeString="D" Indices=",55.6" Fill="#FF000000" FontRenderingEmSize="1" FontUri="/Resources/076a5115-0000-0000-0000-000000000000.odttf" RenderTransform="8.949999809,0,0,8.949999809,185.458496094,218.330078125" />
</Canvas>

You can also find more documentation regarding this ar MSDN: http://msdn.microsoft.com/en-us/library/ms748985.aspx

Since use are using Excel Interop to generate the XPS you will have almost no control of the conversion procedure, so I would suggest to review the fonts used on the Excel document. Maybe there's some issue with the fonts being used.

Regards

like image 99
Abel Pereira Avatar answered Dec 15 '25 15:12

Abel Pereira



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!