Anexe (recomendado) ou Link para o arquivo PDF aqui:
EMG8 -Cambridge Essentail Gold Maths 8-B 117.pdf
Configuração:
Etapas para reproduzir o problema:
Qual é o comportamento esperado? (adicionar captura de tela)
Em qualquer outro leitor de PDF, ele funciona bem:
Link para um visualizador (se hospedado em um site diferente de mozilla.github.io/pdf.js ou como extensão do Firefox / Chrome):
Visualizador de páginas do github atual: https://mozilla.github.io/pdf.js/web/viewer.html
Notas:
Conseguimos fazê-lo funcionar editando as fontes no PDF. Atualmente é "Times New Roman PS", re-renderizando-o apenas com "Times New Roman" parece consertá-lo.
Não há erros de console ou quaisquer outros sinais visíveis de soluções, como CMaps ausentes.
Infelizmente, não temos permissão para alterar PDFs, portanto, renderizar novamente cada um não é uma solução viável.
Se alguém puder dar qualquer ideia sobre isso e uma possível solução, isso seria muito apreciado 🤠
O PDF define as mesmas fontes muitas vezes. Por exemplo, a fonte LULQLP+TimesLTStd-Roman
é definida nove vezes. Cada um se refere ao mesmo FontDescriptor e ao mesmo fluxo de dados CFF incorporado.
Há um cálculo de hash de fonte em PartialEvaluator.prototype.preEvaluateFont()
em core / avaliador.js. Ele adiciona entradas Encoding, ToUnicode e Widths no hash. Algumas fontes no PDF obtêm códigos hash idênticos porque todas as entradas mencionadas são idênticas, até mesmo larguras. Apenas as entradas FirstChar e LastChar diferem. Se as fontes obtiverem códigos hash idênticos, isso pode fazer com que uma fonte seja ignorada de forma que não seja convertida para OpenType?
Aqui está um PDF reduzido que contém duas fontes do PDF original
issue10665_reduced.pdf
Há um cálculo de hash de fonte em
PartialEvaluator.prototype.preEvaluateFont()
em core / avaliador.js. Ele adiciona entradas Encoding, ToUnicode e Widths no hash. Algumas fontes no PDF obtêm códigos hash idênticos porque todas as entradas mencionadas são idênticas, até mesmo larguras. Apenas as entradas FirstChar e LastChar diferem.
Análise realmente excelente, obrigado; isso tornou o bug fácil de corrigir!
Se as fontes obtiverem códigos hash idênticos, isso pode fazer com que uma fonte seja ignorada de forma que não seja convertida para OpenType?
Em alguns arquivos PDF mal gerados, pode haver grandes quantidades de fontes idênticas, e o objetivo de preEvaluateFont
era simplesmente evitar ter que carregar / analisar fontes duplicadas. Portanto, loadFont
comparará hash
es e, se possível, usará uma fonte já carregada / analisada.
Obviamente, tudo isso depende do fato de que hash
es são realmente corretos / únicos, mas felizmente houve relativamente poucos bugs nesse código ao longo dos anos.
Isso é incrível, muito obrigado pela ajuda!
Comentários muito úteis
O PDF define as mesmas fontes muitas vezes. Por exemplo, a fonte
LULQLP+TimesLTStd-Roman
é definida nove vezes. Cada um se refere ao mesmo FontDescriptor e ao mesmo fluxo de dados CFF incorporado.Há um cálculo de hash de fonte em
PartialEvaluator.prototype.preEvaluateFont()
em core / avaliador.js. Ele adiciona entradas Encoding, ToUnicode e Widths no hash. Algumas fontes no PDF obtêm códigos hash idênticos porque todas as entradas mencionadas são idênticas, até mesmo larguras. Apenas as entradas FirstChar e LastChar diferem. Se as fontes obtiverem códigos hash idênticos, isso pode fazer com que uma fonte seja ignorada de forma que não seja convertida para OpenType?Aqui está um PDF reduzido que contém duas fontes do PDF original
issue10665_reduced.pdf