我遇到了一些问题,我正在尝试将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。
任何人都可以帮我解决这个问题吗?
答案 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
。