我正在使用jquery的ajax方法访问现有的WCF Web服务(它将PDF作为字节流返回).
当对服务的调用完成时,我最终得到一个包含PDF的javascript变量(该变量包含二进制数据,从"%PDF-1.4 ..."开始).
我想在新的浏览器窗口中显示这个PDF,但是我很难实现这个目标.
到目前为止,我的研究表明,我可能能够使用数据实现我想要的东西:uri,所以我在ajax调用完成时调用的代码如下:
function GotPDF(data)
{
// Here, data contains "%PDF-1.4 ..." etc.
var datauri = 'data:application/pdf;base64,' + Base64.encode(data);
var win = window.open("", "Your PDF", "width=1024,height=768,resizable=yes,scrollbars=yes,toolbar=no,location=no,directories=no,status=no,menubar=no,copyhistory=no");
win.document.location.href = datauri;
}
Run Code Online (Sandbox Code Playgroud)
这会导致打开一个新的浏览器窗口,但内容为空.
有趣的是,如果我通过使用文件:uri(例如file:// c:/tmp/example.pdf)将我的浏览器(IE9)指向本地磁盘上的现有文件,那么我得到相同的结果,即空白窗口.
有什么方法可以显示这个PDF数据吗?
我正在使用JSON.NET在C#中解析一些JSON.JSON中的一个字段是日期/时间,如下所示:
{
"theTime":"2014-11-20T07:15:11-0500",
// ... a lot more fields ...
}
Run Code Online (Sandbox Code Playgroud)
请注意,时间部分是07:15:11(GMT-5小时TZ)
我从这样的流解析JSON:
using (var streamReader = new StreamReader(rcvdStream))
{
JsonTextReader reader = new JsonTextReader(streamReader);
JsonSerializer serializer = new JsonSerializer();
JObject data = serializer.Deserialize<JObject>(reader);
//...
}
Run Code Online (Sandbox Code Playgroud)
然后访问时间:
DateTime theTime = (DateTime)data["theTime"];
Run Code Online (Sandbox Code Playgroud)
但是,这给了我这个DateTime对象:
{20/11/2014 12:15:11}
Date: {20/11/2014 00:00:00}
Day: 20
DayOfWeek: Thursday
DayOfYear: 324
Hour: 12
Kind: Local
Millisecond: 0
Minute: 15
Month: 11
Second: 11
Ticks: 635520825110000000
TimeOfDay: {12:15:11}
Year: 2014
Run Code Online (Sandbox Code Playgroud)
我需要知道原始的本地时间和tz偏移量,但我似乎在反序列化过程中丢失了这些信息,它给了我时间,我认为是我当地的时间(我在英国,所以目前在GMT + 0).
在反序列化时,我有办法保留时区信息吗?
编辑:添加了有关我如何反序列化的更多细节.
我正在我的应用程序中使用VFR PDF查看器库,我在其中呈现它:
ReaderDocument *document = [ReaderDocument withDocumentFilePath:pdfFile password:nil];
ReaderViewController *vc = [[ReaderViewController alloc] initWithReaderDocument:document];
[self.navigationController pushViewController:vc animated:YES];
Run Code Online (Sandbox Code Playgroud)
如果我在iOS7上运行,一切正常.
如果我跑我的iOS8上的应用程序,在ReaderViewController的willRotateToInterfaceOrientation方法不会被调用,所以当设备旋转文档不能正确格式化.
但是,如果我运行自带的iOS8上的库中的演示应用程序,在ReaderViewController的willRotateToInterfaceOrientation不会被调用,这使我相信图书馆是确定的,我做错了什么(或者忽略做某事)在我应用程序.
我对这种行为感到很困惑.为什么不在我的iOS8应用程序中调用rpmRotateToInterfaceOrientation,但它在其他变体下呢?我怎样才能尝试追踪这个?
我的Eclipse工作区中有2个Java项目,如下所示:
一个是代码库,可以在构建时自动创建.jar文件.
另一个是使用该库中的类的应用程序,并引用库项目创建的.jar文件(通过右键单击应用程序 - >构建路径 - >配置构建路径 - >库 - >添加JAR ...)
但是,每当我修改库项目中的类时,虽然我可以看到库.jar得到更新,但是除非我从应用程序引用的库中删除库.jar并重新添加它,否则app项目不会获取更改
我从根本上做错了吗?是否有更好的方法将应用程序连接到共享代码库?如何确保我的应用程序始终引用最新的库代码?
我正在尝试使用VFR Reader代码将PDF查看功能添加到我的iPad应用程序中.
我可以使用现有的ReaderViewController将Reader显示为全屏页面,使用如下代码:
ReaderDocument *document = [ReaderDocument withDocumentFilePath:file password:nil];
if (document != nil)
{
ReaderViewController *readerViewController = [[ReaderViewController alloc] initWithReaderDocument:document];
// ...
[self presentModalViewController:readerViewController animated:YES];
}
Run Code Online (Sandbox Code Playgroud)
这确实非常好用.
但是,我想在PDF周围有其他东西(比如一个带有按钮的永久显示栏,例如),所以理想情况下我喜欢读者视图在我自己的视图中.
我对iOS编程很陌生,无法弄清楚如何实现这一目标.有人能指出我正确的方向并告诉我在子视图中用VFR阅读器自己查看我需要做些什么吗?