小编Kis*_*tel的帖子

使用JavaScript在客户端将base64字符串另存为PDF

所以这里我的问题:我有一个pdf文件作为我从服务器获得的base64字符串.我想使用此字符串直接将PDF显示到浏览器,或者在单击链接时为其选择"另存为...".这里是我使用的代码:

<!doctype>
<html>
<head>
   <title>jsPDF</title>
   <script type="text/javascript" src="../libs/base64.js"></script>
   <script type="text/javascript" src="../libs/sprintf.js"></script>
   <script type="text/javascript" src="../jspdf.js"></script>

       <script type="text/javascript">

        function demo1() {
            jsPDF.init();
            jsPDF.addPage();
            jsPDF.text(20, 20, 'Hello world!');
            jsPDF.text(20, 30, 'This is client-side Javascript, pumping out a PDF.');

            // Making Data URI
            var out = jsPDF.output();
            var url = 'data:application/pdf;base64,' + Base64.encode(out);

            document.location.href = url;
         }
    </script>
</head>
<body>

<a href="javascript:demo1()">Run Code</a>

</body>
</html>
Run Code Online (Sandbox Code Playgroud)

它与Chrome和Safari配合使用.Firefox确实识别pdf但不显示它,因为FF要求存在扩展,但数据uri在这种情况下没有.我坚持这里的原因,如果chrome和safari得到它的工作,那么必须有FF和IE的解决方案

我知道有一些相关的问题,但不是真正的一个,现在也有点旧.我知道一个解决方法是在服务器端生成pdf,但我想在客户端生成它.

那么请聪明的人,是否有可能通过一些黑客或额外的JS下载插件?

javascript pdf firefox base64 internet-explorer

34
推荐指数
5
解决办法
9万
查看次数

Angular 4 - 无法解析路由的子模块

我正在使用Angular 4构建一个webapp.我有一个顶级路由模块和一个单独的路由模块,用于每个子模块(例如HomeModule).

这是我的顶级路由配置:

export const ROUTES: Routes = [
  {path: '', loadChildren: './home#HomeModule'},
  {path: '**', component: NotFoundComponent},
];
Run Code Online (Sandbox Code Playgroud)

当我跑ng server,我得到一个奇怪的错误,home找不到该模块.该应用程序无法在浏览器中运行.

奇怪的部分如下:当文件被更改并且webpack重新编译项目时,一切正常并且路由工作.
该错误仅在我运行时出现ng serve.

这是我运行时遇到的错误ng serve,而不是因为文件更改而重新编译项目的错误:

ERROR in Error: Could not resolve module ./home relative to /path/to/my/project/src/app/app.module.ts
    at StaticSymbolResolver.getSymbolByModule (/path/to/my/project/node_modules/@angular/compiler/bundles/compiler.umd.js:31884:30)
    at StaticReflector.resolveExternalReference (/path/to/my/project/node_modules/@angular/compiler/bundles/compiler.umd.js:30350:62)
    at parseLazyRoute (/path/to/my/project/node_modules/@angular/compiler/bundles/compiler.umd.js:28616:55)
    at listLazyRoutes (/path/to/my/project/node_modules/@angular/compiler/bundles/compiler.umd.js:28578:36)
    at visitLazyRoute (/path/to/my/project/node_modules/@angular/compiler/bundles/compiler.umd.js:29995:47)
    at AotCompiler.listLazyRoutes (/path/to/my/project/node_modules/@angular/compiler/bundles/compiler.umd.js:29963:20)
    at AngularCompilerProgram.listLazyRoutes (/path/to/my/project/node_modules/@angular/compiler-cli/src/transformers/program.js:157:30)
    at Function.NgTools_InternalApi_NG_2.listLazyRoutes (/path/to/my/project/node_modules/@angular/compiler-cli/src/ngtools_api.js:44:36)
    at AngularCompilerPlugin._getLazyRoutesFromNgtools (/path/to/my/project/node_modules/@ngtools/webpack/src/angular_compiler_plugin.js:247:66)
    at Promise.resolve.then.then (/path/to/my/project/node_modules/@ngtools/webpack/src/angular_compiler_plugin.js:538:50)
    at <anonymous>
    at process._tickCallback (internal/process/next_tick.js:188:7)
Run Code Online (Sandbox Code Playgroud)

提前致谢.

angular-ui-router angular

30
推荐指数
3
解决办法
4万
查看次数

对于所有功能,我应该使用 angular 5 中的多个服务文件还是仅使用 1 个文件?

我有用于不同组件的多个 API,所以我应该更喜欢做什么,是将所有功能放在一个服务中还是我应该创建多个服务。示例组件 1 使用了 10 个总函数中的 4 个特定函数。我应该为 10 个功能创建 1 个服务还是两个不同的服务分别包含 4 个和 6 个功能

angular

7
推荐指数
2
解决办法
4123
查看次数

Angular 6:页面离开时的简单确认

我需要制作一个简单的确认窗口,我看到了很多关于如何使用额外操作来完成的示例(例如等到表单的文件上传不是字段)。但是我只需要创建一个带有默认文本的默认确认窗口(如下图所示),以便在用户想要离开当前页面时显示它。而且我无法完全理解我应该在处理before unload事件中证明什么逻辑。

图像示例

如果它重复了一些问题,我最近很抱歉,但是,我没有找到任何解决方案。所以我有:

例子.guard.ts

export interface CanComponentDeactivate {
    canDeactivate: () => Observable<boolean> | boolean;
}

@Injectable()
export class ExampleGuard implements CanDeactivate<CanComponentDeactivate> {

    constructor() { }

    canDeactivate(component: CanComponentDeactivate): boolean | Observable<boolean> {
        return component.canDeactivate() ?
            true :
            confirm('message'); // <<< does confirm window should appear from here?
    }
}
Run Code Online (Sandbox Code Playgroud)

示例.component.ts

export class ExampleComponent implements CanComponentDeactivate {

    counstructor() { }

    @HostListener('window:beforeunload', ['$event'])
        canDeactivate($event: any): Observable<boolean> | boolean {
            if (!this.canDeactivate($event)) {
                // what should I do here?
            }
        }
} …
Run Code Online (Sandbox Code Playgroud)

onbeforeunload typescript angular angular-router-guards

6
推荐指数
1
解决办法
1万
查看次数

错误:“ app-header”不是已知元素:Angular 2

下面是我的文件夹结构。

    app
    - common
         - header
           header.component.css
           header.component.html
           header.component.ts
        - footer
           footer.component.css
           footer.component.html
           footer.component.ts
    - index
      index.component.css
      index.component.ts
      index.component.html
      index.module.ts
   - lessons
     lesson1(another folder)
     lesson2(folder)
     lesson.module.ts   

    app.component.css
    app.component.ts
    app.component.html
    app.module.ts
Run Code Online (Sandbox Code Playgroud)

我已经在app.module中导入了页眉和页脚组件,index.module,lesson.module并使用

<app-header></app-header>
<app-navbar></app-navbar>
Run Code Online (Sandbox Code Playgroud)

在index.component.html,lesson1.component.html,lesson2.component.html中。

但是我发现“ app-header”不是已知的元素错误。有人可以帮助我解决此错误吗?

如果我直接在index.module.ts中包含页眉和页脚组件,它将很好地工作

app.module.ts

import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { FormsModule } from '@angular/forms';
import { HttpModule } from '@angular/http';
import { RouterModule, Routes } from '@angular/router';
import * as $ from 'jquery';

import { AppComponent } from …
Run Code Online (Sandbox Code Playgroud)

angular2-modules angular

5
推荐指数
2
解决办法
2万
查看次数

在不需要滚动内容的情况下隐藏移动浏览器上的地址/导航栏?

一段时间以来,我一直在制作和维护一个 web 应用程序,它具有全屏单页设计,并在单独的容器中显示项目列表,因此没有通常会触发地址和导航栏的经典滚动行为隐藏在 Safari 和 Chrome 等移动浏览器上。因此,在智能手机浏览器上使用此 Web 应用程序时,顶部地址栏和底部导航栏始终可见。这在 5 英寸以上的大型手机上不是什么大问题,但是当应用程序在 iPhone SE 等较小的设备上使用时,这几百个像素会产生很大的不同。

有一段时间我认为这是一个不可避免的问题,就忍了,但最近我看到有人在 iOS 的 Chrome 上使用谷歌地图网页版,点击某个地址后,导航栏和地址栏消失了,它看起来像一个真正的全屏应用程序。所以这意味着有一种方法可以模拟滚动类型的事件,使移动浏览器隐藏导航栏。

关于如何做到这一点的任何想法/经验?

mobile scroll

5
推荐指数
1
解决办法
906
查看次数

将基于symfony 4的项目部署到Live Server问题

我们只是在动机托管上购买新的专用服务器

所以当我尝试部署基于Symfony 4的项目时

我得到这个错误

Notice: SessionHandler::gc(): ps_files_cleanup_dir: opendir(/var/cpanel/php/sessions/ea-php72) failed: Permission denied (13)

我已经在StackOverflow上搜索了相同的问题,但对我没有帮助

php deployment session session-cookies symfony

1
推荐指数
1
解决办法
76
查看次数

在 Django 中使用 pk 从 UpdateView 到 DetailView 的 success_url

我使用 ListView 创建自己的组权限页面,以显示带有 PK DetailView 链接的 Django 组列表,然后提供更改链接以使用 UpdateView 更改权限。

我想用pk把UpdateView的success_url变成DetailView,怎么做。

我的代码像:

视图.py

class GroupCreation(PermissionRequiredMixin, CreateView):
    permission_required = 'add_group'
    model = Group
    form_class = GroupCreateModelForm
    success_url = reverse_lazy('account:group_list')
    template_name = 'accounts/groups/group_creation.html'


class GroupsListView(PermissionRequiredMixin, ListView):
    permission_required = 'view_group'
    allow_empty = True
    model = Group
    ordering = 'name'
    template_name = 'accounts/groups/groups_list.html'
    form = GroupCreateModelForm
    extra_context = {'form': form, }


class GroupDetailView(PermissionRequiredMixin, DetailView):
    permission_required = 'view_group'
    model = Group
    template_name = 'accounts/groups/group_detail.html'


class GroupUpdateView(PermissionRequiredMixin, UpdateView):
    permission_required = 'change_group'
    model = Group
    fields = …
Run Code Online (Sandbox Code Playgroud)

python django

1
推荐指数
1
解决办法
498
查看次数