Pdf.js: adicione o tamanho do papel às informações do documento

Criado em 15 fev. 2016  ·  29Comentários  ·  Fonte: mozilla/pdf.js

Seria possível adicionar o tamanho do papel às informações do documento?

É importante saber se o documento usa o tamanho de papel carta ou A4 (entre outros).

1-viewer 2-feature

Comentários muito úteis

Não consigo codificar, então codificadores experientes podem dar conselhos melhores.

Tenho certeza de que os principais colaboradores terão mente aberta sobre a maneira como esse problema será tratado. A principal preocupação aqui é que uma solução não deve ser complexa e não adicionar carga na manutenção futura do projeto.

Pessoalmente, como primeiro passo, eu apenas adicionaria informações sobre o tamanho da página sem nomes "legais" (para evitar sua localização), talvez (automaticamente) detectasse unidades. A segunda etapa seria a discussão do nome e orientação do tamanho da página.

Todos 29 comentários

E pode incluir retrato / paisagem?

Qual é o comportamento esperado se vários tamanhos / orientações de página forem usados, ou seja, algumas páginas são A4 retrato, mas outras são A3 paisagem, por exemplo? Como outros espectadores fazem isso?

e também precisamos lidar com internacionalização e localização, por exemplo

  • "A4" ou "Carta" precisa ser traduzido
  • 10cm × 15cm devem estar em polegadas para os EUA

Re: rotação. Vou verificar o que PR 8043 faz por mim. Isso pode resolver meu problema. Parece que realmente preciso ler PR 8043 e # 6103 adequadamente e ter certeza de que estou em uma versão posterior com essas correções aplicadas.

Re: tamanho múltiplo. Não sei se há back-ends de impressão que suportam isso sem dividir a impressão em vários trabalhos de impressão. Se você não dividir o trabalho de impressão, terá "imprimir no maior" ou "dimensionar no menor" como opções lógicas.

O Cups inclui um cabeçalho de tamanho de mídia com cada trabalho de impressão, então Linux e MacOS são limitados a um tamanho por trabalho de impressão, pelo que eu sei.

Re: localização.
A impressora possui uma lista de tamanhos de papel possíveis e disponíveis.
A caixa de diálogo de impressão do sistema operacional conhece a localidade do usuário e uma lista de impressoras.
A caixa de diálogo de impressão do sistema operacional não conhece o tamanho original.
O visualizador de PDF conhece o local, mas não conhece uma lista de impressoras, portanto, não conhece uma lista de papéis disponíveis.
O visualizador de PDF conhece o tamanho original do PDF.
O gerador de pdf conhece as localidades do servidor e do cliente.
O usuário odeia "carta de carregamento do pc"

Re: rotação. Vou verificar o que PR 8043 faz por mim.
Re: tamanho múltiplo. Não sei se algum back-end de impressão suporta isso sem dividir a impressão i ..
Re: localização ... A impressora tem uma lista de tamanhos de papel possíveis e disponíveis ...

@berenddeschouwer Eu não acho que nenhuma das

Qual é o comportamento esperado se vários tamanhos / orientações de página forem usados, ou seja, algumas páginas são A4 retrato, mas outras são A3 paisagem, por exemplo? Como outros espectadores fazem isso?

@timvandermeij , SumatraPDF exibe o tamanho da página navegada (aquela que tem o número na barra de ferramentas).

e também precisamos lidar com internacionalização e localização, por exemplo

  • "A4" ou "Carta" precisa ser traduzido
  • 10cm × 15cm devem estar em polegadas para os EUA

@yurydelendik , não acho que A4 deva ser traduzido.

E, pelo que eu sei, as dimensões da página são especificadas em pontos dentro do documento PDF. Portanto, PDF.js deve usar a unidade de dimensão padrão do sistema operacional.

@ousia, qual é o tamanho de página esperado para o documento em https://github.com/mozilla/pdf.js/blob/master/test/pdfs/sizes.pdf ?

@ousia, qual é o tamanho de página esperado para o documento em https://github.com/mozilla/pdf.js/blob/master/test/pdfs/sizes.pdf?

@yurydelendik , não entendo sua pergunta.

Tamanho é uma propriedade relacionada à página real, não ao documento.

em termos de PDF, /MediaBox é uma entrada no dicionário /Page , não no /Catalog ( /Pages é a entrada lá).

Qual deve ser o tamanho da página no documento que você mencionou?

_Acrobat Reader_ exibe as dimensões da página exibida. Aqui está.

pageone

pagetwo

pagethree

Obrigado por fornecer esta informação! Agora que isso está claro, acho que deve ser bom implementar. Estou marcando isso como um bom bug para iniciantes, pois não deve ser muito difícil.

Posso derrubar isso se ninguém estiver trabalhando nisso.

@loganhuskins é seu!

Acho que estou bem perto, quero usar getPagesOverview() de base_viewer .

Devo importar import { BaseViewer } from './base_viewer'; em pdf_document_properties e, em seguida, fazer BaseViewer.getPagesOverview()[0] como o valor de pageSize valor que estou planejando exibir? De alguma forma, isso não parece estar funcionando. Existe algum outro método util que eu possa reutilizar para obter essas informações. Desculpe por sequestrar isso de Logan.

Estou envolvido com o trabalho, então, se você está assumindo isso, estou bem.

Oi,
É isso que você está procurando fazer?

compressed tracemonkey pldi 09 pdf

@ linton-Portman, nesse caso adicionar _Letter, portrait_ seria ótimo.

Quer dizer, com tamanhos de papel padrão, é útil fornecer o nome do papel padrão.

Veja o que _Evince_ faz:

evince-properties

E _SumatraPDF_:

sumatrapdf-properties

Quer dizer, com tamanhos de papel padrão, é útil fornecer o nome do papel padrão.

Isso significa que precisamos localizar adequadamente todos esses nomes. Existe uma pequena lista de tamanhos de papel populares?

Oi,
Pelo que li até agora, as diferenças estão no tamanho do papel (carta dos EUA = 8,50 x 11,00 polegadas e A4 do Reino Unido = 8,26 x 11,69 polegadas) ... A maneira como eu ia abordar isso era usando uma série de declarações if / else verificando esses tamanhos. Então, isso determinará qual texto é exibido .... Ao usar esses tamanhos, você também pode determinar se é retrato ou paisagem ....

Haverá muitas declarações if / else, dependendo de quantos tamanhos de papel são fornecidos ....
Eu sou um iniciante / novato, então talvez haja uma maneira melhor :)

a4 portrait pdf
letter portrait pdf

Observe que o tamanho A4 é melhor expresso em mm, por exemplo, 210 mm x 297 mm

@yurydelendik Oh sim, também posso fazer isso.

Aqui você tem uma lista (que adaptei do ConTeXt).

Tamanhos de papel europeus padrão:

[A0] [largura = 841 mm, altura = 1189 mm]
[A1] [largura = 594 mm, altura = 841 mm]
[A2] [largura = 420 mm, altura = 594 mm]
[A3] [largura = 297 mm, altura = 420 mm]
[A4] [largura = 210 mm, altura = 297 mm]
[A5] [largura = 148 mm, altura = 210 mm]
[A6] [largura = 105 mm, altura = 148 mm]
[A7] [largura = 74 mm, altura = 105 mm]
[A8] [largura = 52 mm, altura = 74 mm]
[A9] [largura = 37 mm, altura = 52 mm]
[A10] [largura = 26 mm, altura = 37 mm]

Tamanhos de papel europeus menos comuns padrão:

[B0] [largura = 1000 mm, altura = 1414 mm]
[B1] [largura = 707 mm, altura = 1000 mm]
[B2] [largura = 500 mm, altura = 707 mm]
[B3] [largura = 353 mm, altura = 500 mm]
[B4] [largura = 250 mm, altura = 353 mm]
[B5] [largura = 176 mm, altura = 250 mm]
[B6] [largura = 125 mm, altura = 176 mm]
[B7] [largura = 88 mm, altura = 125 mm]
[B8] [largura = 62 mm, altura = 88 mm]
[B9] [largura = 44 mm, altura = 62 mm]
[B10] [largura = 31 mm, altura = 44 mm]

Tamanhos de envelope europeus padrão:

[C0] [largura = 917 mm, altura = 1297 mm]
[C1] [largura = 648 mm, altura = 917 mm]
[C2] [largura = 458 mm, altura = 648 mm]
[C3] [largura = 324 mm, altura = 458 mm]
[C4] [largura = 229 mm, altura = 324 mm]
[C5] [largura = 162 mm, altura = 229 mm]
[C6] [largura = 114 mm, altura = 162 mm]
[C7] [largura = 81 mm, altura = 114 mm]
[C8] [largura = 57 mm, altura = 81 mm]
[C9] [largura = 40 mm, altura = 57 mm]
[C10] [largura = 28 mm, altura = 40 mm]

Tamanho do papel da capa do CD:

[CD] [largura = 120 mm, altura = 120 mm]

Tamanhos de papel padrão americano:

[letra] [largura = 8,5 pol., altura = 11 pol.]
[razão] [largura = 11 pol., altura = 17 pol.]
[tablóide] [largura = 17 pol, altura = 11 pol]

[legal] [largura = 8,5 pol., altura = 14 pol.]
[fólio] [largura = 8,5 pol., altura = 13 pol.]
[executivo] [largura = 7,25 pol., altura = 10,5 pol.]

Diferentes conjuntos de envelopes:

[envelope 9] [largura = 8,88 pol., altura = 3,88 pol.]
[envelope 10] [largura = 9,5 pol., altura = 4,13 pol.]
[envelope 11] [largura = 10,38 pol., altura = 4,5 pol.]
[envelope 12] [largura = 11,0 pol., altura = 4,75 pol.]
[envelope 14] [largura = 11,5 pol., altura = 5,0 pol.]
[monarca] [largura = 7,5 pol, altura = 3,88 pol]
[verificar] [largura = 8,58 pol, altura = 3,88 pol]
[DL] [largura = 110 mm, altura = 220 mm]
[E4] [largura = 280 mm, altura = 400 mm]

Acho útil acrescentar se a orientação é retrato ou paisagem.

@ linton-Portman, pelo que vejo nas suas imagens, tenho uma pergunta:

As informações a seguir não seriam melhores?

Letter, portrait (8.5  × 11 in)

Quero dizer, as seguintes adaptações:

  • Use o nome do papel primeiro.

  • Seguido por _portrait_ ou _landscape_.

    BTW, se a separação antes é uma vírgula, acho que a palavra deveria começar com uma letra minúscula.

  • Escreva as dimensões entre parênteses.

    • É melhor usar o sinal Unicode adequado _ × _ (em vez de _x_).

    • Qual tamanho de papel requer quais dimensões são especificadas na lista anterior.

    • Acho melhor usar abreviações para unidades de comprimento (_in_ ou _mm_ neste caso).

Se isso não fosse possível, _portrait_ ou _landscape_ deveriam estar entre parênteses.

Muito obrigado por sua contribuição.

@ linton-Portman, usar switch pode ser uma alternativa melhor para if... else declarações.

Não consigo codificar, então codificadores experientes podem dar conselhos melhores. (Eu simplesmente respondi à sua pergunta, pois ela permaneceu sem resposta).

Aqui você tem uma lista (que adaptei do ConTeXt).

Tudo isso precisa ser traduzido. Pessoalmente, prefiro encontrar de 5 a 10 tamanhos de página mais usados ​​e dar nomes a eles.

Carta, retrato (8,5 × 11 pol.)

Devido a isso: "8,5 pol × 11 pol, Carta / Retrato" ou apenas "100 mm x 200 mm" pode parecer uma escolha melhor aqui

É melhor usar o sinal Unicode adequado × (em vez de x).

Sim, mas também depende dos localizadores de cultura específica

Não consigo codificar, então codificadores experientes podem dar conselhos melhores.

Tenho certeza de que os principais colaboradores terão mente aberta sobre a maneira como esse problema será tratado. A principal preocupação aqui é que uma solução não deve ser complexa e não adicionar carga na manutenção futura do projeto.

Pessoalmente, como primeiro passo, eu apenas adicionaria informações sobre o tamanho da página sem nomes "legais" (para evitar sua localização), talvez (automaticamente) detectasse unidades. A segunda etapa seria a discussão do nome e orientação do tamanho da página.

Tentei, pois não há comunicação aqui há cerca de 2 meses. Me desculpe se eu deveria ter perguntado antes.
O PR adiciona a visualização do tamanho da página em pt, que é um começo. As próximas etapas (conforme descrito aqui) seriam convertê-los para cm / mm / polegada / ... e tentar encontrar um tamanho de documento padrão correspondente. Ambos não são implementados neste PR.

A solicitação pull acima implementou a maior parte desse recurso. O que falta fazer é mostrar o tamanho da página visível no momento em vez de apenas a primeira. Opcionalmente, os tamanhos de página carta / retrato e padrão (como A4) podem ser adicionados, mas não vejo isso como obrigatório para resolver esse problema.

Mais melhorias foram feitas em # 9577, que também implementou mostrando o tamanho da página atualmente visível. Para esse problema, apenas os tamanhos de página carta / retrato e padrão permanecem.

A parte final é implementada pela solicitação pull acima (orientação da página e nomes do tamanho da página). Fechamento corrigido.

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

dmisdm picture dmisdm  ·  3Comentários

anggikolo11 picture anggikolo11  ·  3Comentários

timvandermeij picture timvandermeij  ·  4Comentários

THausherr picture THausherr  ·  3Comentários

jigskpatel picture jigskpatel  ·  3Comentários