我遇到了一些问题,我正在尝试获取 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/