从C#中的资源获取二进制文件

时间:2010-04-03 23:55:12

标签: c# .net pdf

我遇到了一些问题,我正在尝试将PDF作为我的应用程序中的资源。 此时我有一个可填写的PDF,我可以将其存储为二进制文件旁边的文件,但现在我试图将PDF作为资源嵌入到二进制文件中。

byte[] buffer;
try
{
    s = typeof(BattleTracker).Assembly.GetManifestResourceStream("libReports.Resources.DAForm1594.pdf");
    buffer = new byte[s.Length];
    int read = 0;
    do
    {
        read = s.Read(buffer, read, 32768);

    } while (read > 0);                        
}
catch (Exception e)
{
    throw new Exception("Error: could not import report:", e);
}

// read existing PDF document
PdfReader r = new PdfReader(
    // optimize memory usage
    buffer, null
);

每次运行代码时都会收到错误消息“未找到重建预告片。原始错误:未找到PDF startxref”。

当我刚刚通过我目录中的静态文件的路径打开文件时,它运行正常。我尝试使用不同的编码UTF-8,UTF-32,UTF-7,ASCII等等.... 作为旁注,我将Powerpoint文件作为资源遇到了同样的问题,我终于能够通过将Powerpoint转换为xml并使用它来解决该问题。 我已经考虑过为PDF做同样的事情,但我按字段名称引用元素,这似乎不适用于XML PDF。

任何人都可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:2)

try块中的代码更改为:

using (s = typeof(BattleTracker).Assembly.GetManifestResourceStream
    ("libReports.Resources.DAForm1594.pdf"))
{
    buffer = new byte[(int)s.Length]; 
    s.Read(buffer, 0, (int)s.Length);
}

我假设您拥有资源的正确路径,并且其Build Action属性设置为Embedded Resource