小编Aer*_*ook的帖子

如何在浏览器内置 PDF 查看器中为 base64 pdf 自定义文件名

我正在从 base64 字符串嵌入 PDF,如下所示:

var pdfData = 'data:application/pdf;filename=MY_CUSTOM_FILENAME.pdf;base64,' +
  'JVBERi0xLjcKCjEgMCBvYmogICUgZW50cnkgcG9pbnQKPDwKICAvVHlwZSAvQ2F0YWxvZwog' +
  'IC9QYWdlcyAyIDAgUgo+PgplbmRvYmoKCjIgMCBvYmoKPDwKICAvVHlwZSAvUGFnZXMKICAv' +
  'TWVkaWFCb3ggWyAwIDAgMjAwIDIwMCBdCiAgL0NvdW50IDEKICAvS2lkcyBbIDMgMCBSIF0K' +
  'Pj4KZW5kb2JqCgozIDAgb2JqCjw8CiAgL1R5cGUgL1BhZ2UKICAvUGFyZW50IDIgMCBSCiAg' +
  'L1Jlc291cmNlcyA8PAogICAgL0ZvbnQgPDwKICAgICAgL0YxIDQgMCBSIAogICAgPj4KICA+' +
  'PgogIC9Db250ZW50cyA1IDAgUgo+PgplbmRvYmoKCjQgMCBvYmoKPDwKICAvVHlwZSAvRm9u' +
  'dAogIC9TdWJ0eXBlIC9UeXBlMQogIC9CYXNlRm9udCAvVGltZXMtUm9tYW4KPj4KZW5kb2Jq' +
  'Cgo1IDAgb2JqICAlIHBhZ2UgY29udGVudAo8PAogIC9MZW5ndGggNDQKPj4Kc3RyZWFtCkJU' +
  'CjcwIDUwIFRECi9GMSAxMiBUZgooSGVsbG8sIHdvcmxkISkgVGoKRVQKZW5kc3RyZWFtCmVu' +
  'ZG9iagoKeHJlZgowIDYKMDAwMDAwMDAwMCA2NTUzNSBmIAowMDAwMDAwMDEwIDAwMDAwIG4g' +
  'CjAwMDAwMDAwNzkgMDAwMDAgbiAKMDAwMDAwMDE3MyAwMDAwMCBuIAowMDAwMDAwMzAxIDAw' +
  'MDAwIG4gCjAwMDAwMDAzODAgMDAwMDAgbiAKdHJhaWxlcgo8PAogIC9TaXplIDYKICAvUm9v' +
  'dCAxIDAgUgo+PgpzdGFydHhyZWYKNDkyCiUlRU9G';

function loadPdf() {
  var pdf= document.querySelector('.pdf')

  var pobj = document.createElement('object')
  pobj.className= "pdf_object"
  pobj.setAttribute('data', pdfData)
  pobj.setAttribute('type', 'application/pdf')

  pdf.appendChild(pobj)
} 
Run Code Online (Sandbox Code Playgroud)
.pdf_object {
  width: 100%;
  height: 700px;  
}
Run Code Online (Sandbox Code Playgroud)
<div>
  <button onclick="loadPdf();">
    CLICK TO LOAD BELOW THE PDF
  </button>
</div>
<div class="pdf"></div>
Run Code Online (Sandbox Code Playgroud)

这适用于 Firefox 和 Chrome。

我的问题是我无法自定义 pdf 下载操作的文件名。请注意,我使用了filename …

javascript pdf base64 pdf.js pdfobject

5
推荐指数
0
解决办法
1021
查看次数

“dict[str, Unknown]”与我的自定义 TypedDict 不兼容

鉴于这种习俗TypedDict TMyDict

class TMyDict(TypedDict, total=False):
  prop_a: int
  prop_b: int
Run Code Online (Sandbox Code Playgroud)

还行吧:

def get_my_dict_works() -> TMyDict:
  return {
    'prop_a': 0,
    'prop_b': 1
  }
Run Code Online (Sandbox Code Playgroud)

但这不会:

def get_my_dict_fail() -> TMyDict:
  d= {
    'prop_a': 0,
    'prop_b': 1
  }
  return d
Run Code Online (Sandbox Code Playgroud)

错误信息是:

  Expression of type "dict[str, Unknown]" cannot be assigned to return type "TMyDict"
     "dict[str, Unknown]" is incompatible with "TMyDict"
Run Code Online (Sandbox Code Playgroud)

如果我在分配 var 时添加类型注释,它就会起作用:

  Expression of type "dict[str, Unknown]" cannot be assigned to return type "TMyDict"
     "dict[str, Unknown]" is incompatible with "TMyDict"
Run Code Online (Sandbox Code Playgroud)

为什么?

python typing invariants typeddict

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

标签 统计

base64 ×1

invariants ×1

javascript ×1

pdf ×1

pdf.js ×1

pdfobject ×1

python ×1

typeddict ×1

typing ×1