c# - 在 C# 中从资源中获取二进制文件

标签 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。

谁能帮我解决这个问题?

最佳答案

try block 中的代码更改为:

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

关于c# - 在 C# 中从资源中获取二进制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2573085/

相关文章:

c# - 获取动态类型的类类型?

c# - C#中的MergeSort算法

c# - 视觉 C# : How to find out *which* assembly or reference I am missing

c# - 在 java 中调用 .net 程序集的最佳且简单的方法

c# - MVVM、ObservableCollection 和 Reactive Extensions (Rx) 的跨线程访问无效

python - 无法使用Python将PDF文件插入MySQL数据库

java - xhtmlrenderer xhtml转pdf字体问题

c# - 如何在 C# 和 TPL 中并行处理事件

c# - 使用 EPPlus 合并单元格?

javascript - 如何使用 javascript + HTML5 了解 PDF 版本