Pdf.js: Erro ao carregar PDF que usa fontes do sistema

Criado em 4 fev. 2014  ¬∑  27Coment√°rios  ¬∑  Fonte: mozilla/pdf.js

Arquivo de teste: https://dl.dropboxusercontent.com/u/16283445/PORTRAIT.pdf

O arquivo foi produzido pelo conversor de PDF Muhimbi.

O texto principal (que usa a fonte Tahoma incorporada) é renderizado corretamente; é a mensagem de teste no topo do arquivo que causa o erro. Após alguma depuração, descobri que esta mensagem faz referência à fonte Helvetica do sistema e, de alguma forma, os glifos estão ausentes no momento do erro.

Registro de erros:

Error: Requesting object that isn't resolved yet Helvetica_path_T pdf.js:205
    at error (http://[skipped]/pdfjs/pdf.js:207:15)
    at Object.PDFObjects_get [as get] (http://[skipped]/pdfjs/pdf.js:4640:9)
    at Object.FontFace.getPathGenerator (http://[skipped]/pdfjs/pdf.js:7675:23)
    at Object.CanvasGraphics.paintChar (http://[skipped]/pdfjs/pdf.js:6105:26)
    at Object.CanvasGraphics_showText [as showText] (http://[skipped]/pdfjs/pdf.js:6291:18)
    at Object.CanvasGraphics_nextLineShowText [as nextLineShowText] (http://[skipped]/pdfjs/pdf.js:6381:12)
    at Object.CanvasGraphics_executeOperatorList [as executeOperatorList] (http://[skipped]/pdfjs/pdf.js:5600:22)
    at Object.InternalRenderTask__next [as _next] (http://[skipped]/pdfjs/pdf.js:4807:39)
    at Object.pdfViewcContinueCallback [as continueCallback] (http://[skipped]/pdfjs/viewer.js:4261:9)
3-pdf-broken 4-font-conversion

Coment√°rios muito √ļteis

com pdfjs-dist": "^2.2.2 set disableFontFace: false corrigiu esse problema em mim.

pdfjs.getDocument( { url: pdfUrl, disableFontFace: false, }

Todos 27 coment√°rios

Isso falha porque a fonte não é carregada quando tentamos buscá-la em font_loader.js#L313 .
O problema parece ser que ele nunca é realmente carregado, dado evaluator.js#L284 , já que font.data é indefinido neste caso. A razão para isso é que a fonte em questão não possui um arquivo de fonte incorporado, o que significa que em fonts.js retornamos antes de definir font.data . Consulte fonts.js#L2256 e fonts.js#L2303 .
A razão pela qual este não é um problema maior na prática para nós, é que ele só parece afetar PDFs (como este problema) onde o recurso de fonte está contido dentro, por exemplo, de um dicionário XObject .

Infelizmente, não sei como poderíamos resolver esse problema, pois construir font.data sem um arquivo de fonte parece difícil no código atual. Talvez isso fosse resolvido "de graça" se incorporássemos as fontes padrão no PDF.js?

PS Também notei que corrigir esse problema resolveria um (ou dois) dos arquivos listados em http://bthorben.github.io/pdfRepo/#crashed.

Pode haver uma solução como uma destas:

1 - opção para permitir usar alguma fonte padrão ou alguma fonte que já foi usada para o arquivo exato
2 - opção para permitir pular renderização deste item
isso pode ajudar a continuar o trabalho com o arquivo pdf se alguma fonte estiver ausente e a saída apenas como aviso, não como erro de quebra.

O que você acha?

Preferimos a primeira op√ß√£o, por√©m ainda n√£o incorporamos nenhuma fonte e contamos com o sistema para cont√™-las para algumas fun√ß√Ķes. Certamente podemos ignor√°-lo, uma vez que descobrimos como rascunhar corretamente (para essas fontes, podemos gerar contornos de letras vazias quando solicitados)

Pelo menos abra a possibilidade de .catch(...) esse erro ao invés de simplesmente parar tudo até encontrar uma solução melhor. Infelizmente, esse problema interrompe a funcionalidade em nosso ambiente ao vivo, o que é... ruim.

Existe alguma solução alternativa disponível? Ou algum tipo de mecanismo de captura de erros sugerido por @xwcg ?

Ol√° pessoal,
Eu tenho o mesmo erro.
Posso saber se há alguma solução temporária para esse problema antes da correção formal?

Alguma atualiza√ß√£o sobre isso?, √Č de 2014 e ainda n√£o foi resolvido

@diego-lipinski-de-castro FYI, essa mesclagem # 9809 corrigiu isso se você passar ignoreErrors: true na função getDocument. Se você usar o npm pdfjs-dist, ele ainda não está atualizado. Acabei de criar a partir da fonte e PDFs que costumavam reclamar de fontes agora processam corretamente com a saída da tela. Tudo parece bem.

@sirisian obrigado por sua atualização. Aguardando o lançamento

@sirisian você sabe quando será a atualização do npm pdfjs-dist? e se houver uma solução alternativa para o npm?
Obrigado

Alguma atualização nesta versão de correção para npm pdfjs-dist ?

Olá, também encontro esse erro. Existe uma maneira de substituir a fonte que não está presente no sistema por uma padrão?

Oi @timvandermeij quando é provável que vejamos essa correção em pdfjs-dist ?

com pdfjs-dist": "^2.2.2 set disableFontFace: false corrigiu esse problema em mim.

pdfjs.getDocument( { url: pdfUrl, disableFontFace: false, }

Na minha opini√£o, sempre que o pdf.js falha ao carregar o texto em uma fonte espec√≠fica, ele deve carregar o mesmo texto usando uma fonte substituta que _poderia_ mostrar (por exemplo, as fontes padr√£o definidas pelo usu√°rio nas prefer√™ncias de fonte), em vez de parar de renderizar a p√°gina e lan√ßar um erro. Esse era o comportamento no Firefox 61 e anteriores quando a op√ß√£o "Permitir que as p√°ginas escolham suas pr√≥prias fontes, em vez de suas sele√ß√Ķes acima" est√° desativada. Na minha opini√£o, mostrar o texto em uma fonte substituta √© melhor do que n√£o mostrar nada.

com pdfjs-dist": "^2.2.2 set disableFontFace: false corrigiu esse problema em mim.

pdfjs.getDocument( { url: pdfUrl, disableFontFace: false, }

Este resolveu meu problema, estou usando pdfjs-dist ^2.0.943
Obrigada

Estou trabalhando em um projeto em que o IE 11 √© um requisito e as configura√ß√Ķes de seguran√ßa (gerenciadas pela equipe de TI) n√£o permitem o download de fontes personalizadas. Isso resulta em uma renderiza√ß√£o de PDF que fica principalmente em branco durante a renderiza√ß√£o, mostrando apenas alguns t√≠tulos e caracteres em it√°lico.

definir disableFontFace: true causa o inverso no IE 11 (e em todos os outros navegadores na verdade). A maioria das fontes é renderizada, mas apresenta erros de litania, que se parecem com isso:

Warning: getPathGenerator - ignoring character: "Error: Requesting object that isn't resolved yet Times_path_i.".

Todos os erros indicam caracteres diferentes na parte Times_path_* da mensagem. O documento carrega a maior parte do conte√ļdo, mas os t√≠tulos, it√°lico e outras varia√ß√Ķes est√£o visualmente ausentes (embora o texto vazio possa ser selecionado devido √† camada de texto transparente na parte superior)

Portanto, estou preso entre ter renderização de fonte completa em todos os navegadores, exceto esta versão gerenciada do IE 11 (devido à configuração de segurança imposta pelo administrador em relação às fontes) ou renderização de fonte semi-quebrada em todos os lugares devido à tentativa de implementar uma correção para o IE 11.

Alguma sugest√£o?

alguma noticia sobre isso?

Oi equipe,
Eu tentei todas as coisas possíveis, nada pode resolver o bug.
tem alguma atualização?

Este é um grande impacto para nós. Por que a solução alternativa é definir disableFontFace=false? Meu entendimento é que com disableFontFace=true, não importa quais fontes incorporadas existem (ou não) no pdf. Isso é incorreto?

alguma noticia sobre isso?

6 anos atrás @AllSeeingEye estava tendo um problema e hoje esta biblioteca tem 594 problemas não resolvidos. Ninguém dá a mínima para esse bug ou o quê? Um bug que não é para mim, precisará procurar outras bibliotecas como pdf-lib talvez.

Bom dia a todos!

Enfrentei alguns problemas semelhantes ao tentar resolver o problema de renderiza√ß√£o da camada de texto com os par√Ęmetros disableFontFace .

Em disableFontFace: false alguns documentos s√£o assim:
image

Enquanto em disableFontFace: true o documento anterior renderiza bem, h√° um problema com um documento diferente:
image

Todas essas células não estavam vazias.
Alguns documentos renderizam bem de uma maneira, alguns - de outra maneira.
Como devo agir?

Estou tendo um problema semelhante ao @Hatgor
Existe uma corre√ß√£o ou algo que pode ser feito para acertar isso? As solu√ß√Ķes acima n√£o funcionam. :|

Estou tendo exatamente o mesmo problema. Tentando executá-lo em um lambda no Node12, que executa o amazonlinux2 - o que significa que não há fontes instaladas por padrão. Seria MUITO bom se pudéssemos embutir as 14 fontes padrão em pdfjs por padrão, ou expor uma API para carregá-las em vez de depender delas sendo instaladas no sistema base. Até agora meus esforços para instalar as fontes no sistema foram... menos que bem sucedidos.

Neste ponto, estou pensando em pré-processar todos os PDFs com outra biblioteca, como pdf-lib, explicitamente para incorporar as 14 fontes padrão, ENTÃO passá-lo para esta biblioteca para renderização. Um pouco excessivo e chato, mas se resolver o problema....

Depois de mexer por horas literais com amazonlinux2 para instalar fontes, POSSO fazer com que as fontes não incluídas sejam renderizadas definindo disableFontFace como false explicitamente, mas as fontes incorporadas do PDF falham com o mesmo símbolo visto no comentário de @Hatgor .

OK, até agora não há dados no pré-processamento de PDFs para incorporar fontes. Existe, talvez, uma maneira de injetar uma fonte que não está incorporada no PDF? Posso hospedar os .ttf(s) necessários em outro lugar, mas não estou vendo nada na API para carregar uma fonte arbitrária.

Esta p√°gina foi √ļtil?
0 / 5 - 0 avalia√ß√Ķes

Quest√Ķes relacionadas

patelsumit5192 picture patelsumit5192  ¬∑  3Coment√°rios

sujit-baniya picture sujit-baniya  ¬∑  3Coment√°rios

timvandermeij picture timvandermeij  ¬∑  4Coment√°rios

azetutu picture azetutu  ¬∑  4Coment√°rios

brandonros picture brandonros  ¬∑  3Coment√°rios