You are on page 1of 31

Captulo 2

Viso Geral
O PDF um formato de arquivo destinado a representar documentos de uma maneira
independente da aplicao, hardware, e sistema operacional sendo usado para cri-lo e do dispositivo
de sada (output device) no qual ele ser exibido ou impresso. Um documento PDF consiste de uma
coleo de objetos que reunidos descrevem a aparncia de uma ou mais pginas, possivelmente
acompanhado de elementos interativos adicionais e dados de aplicao de alto nvel. Tal formato
contm objetos que compem um documento PDF (juntamente com a informao estrutural a ele
relacionado), os quais representam uma nica sequncia de bytes auto-contida.
Uma pgina de documento (e outros elementos visuais) pode conter qualquer combinao de
texto, grficos e imagens. A aparncia da pgina descrita por um stream de contedo (content
stream), o qual contm uma sequncia de objetos grficos a serem desenhados (impressos) na pgina.
Esta aparncia totalmente especificada; todo o layout e definies de formatao j foram feitos pela
aplicao que gera o stream de contedo.
Adicionalmente descrio da aparncia de pginas estticas, um documento PDF pode conter
elementos interativos que s possvel em uma representao eletrnica. O formato PDF suporta
anotaes (annotations) de muitos tipos tais como: notas de texto, links de hipertexto, marcao,
anexos, sons e vdeos. Um documento pode definir sua prpria interface de usurio; a entrada pelo
teclado e pelo mouse pode disparar aes (actions) que so especificados por objetos PDF. O
documento pode conter campos de formulrios interativos a serem preenchidos pelo usurio, e pode
exportar os valores de tais campos ou import-los para outras aplicaes.
Finalmente, um documento PDF pode conter informao de alto nvel que til para a troca de
contedo entre as aplicaes. Alm de especificar a aparncia, um contedo de documento pode incluir
informao estruturada de identificao e lgica que permite sua pesquisa, edio ou extrao para
reuso em outras aplicaes. O formato PDF particularmente adequado para representar um
documento que ir atravessar os vrios estgios do fluxo de produo de pr-impresso grfica.
2.1 O modelo de Imagem
No cerne do PDF est a habilidade de descrever a aparncia de grficos sofisticados e de tipografia.
Esta habilidade alcanada atravs do uso do modelo de imagem Adobe (Adobe image model), a
mesma representao de alto nvel independente de dispositivo usado na linguagem de descrio de
pgina PostScript.
Embora aplicaes de programa podem teoricamente descrever qualquer pgina como um array de
pixel de resoluo completa, o arquivo resultante pode ser extenso, dependente de dispositivo, e
impraticvel para dispositivos de alta resoluo. Um modelo de imagem de alto nvel permite que
aplicaes descrevam a aparncia das pginas contendo texto, formatos grficos, e imagens em termos
de elementos grficos abstratos ao invs de diretamente em termos de pixels. Tal descrio
econmica e independente de dispositivo, e pode ser usada para produzir sada de alta qualidade em um
vasta faixa de impressoras, monitores e outros dispositivos de sada.

2.1.1 Linguagens de Descrio de Pgina


Entre suas finalidades, o formato PDF serve como linguagem de descrio de pgina, uma linguagem
para descrever a aparncia grfica das pginas em relao a um modelo de imagem. Uma aplicao
produz uma sada (resultado) num processo de duas etapas:
1. A aplicao gera uma descrio independente de dispositivo da sada desejada na linguagem
de descrio de pgina.
2. Um programa controlando um dispositivo de sada interpreta a descrio e renderiza
(desenha) naquele dispositivo.
As duas etapas podem ser executadas em diferentes locais e em diferentes perodos. A linguagem de
descrio de pgina serve como um padro de troca para transmisso e armazenamento, independente
de dispositivo de documentos a serem impressos ou exibidos.
2.1.2 Modelo de Imagem Adobe
O modelo de imagem Adobe uma viso simples e unificada de grficos bidimensionais "emprestado"
das artes grficas. Neste modelo, a "tinta" colocada na pgina em reas selecionadas:

As figuras desenhadas podem estar na forma de caracteres (glifos), formas geomtricas, linhas,
ou imagens (tais como fotografias digitais).

A tinta pode ser colorida ou preto e branco, branco, ou em qualquer tom de cinza. Tambm pode
tomar a forma de patro repetido (PDF 1.2) ou uma transio suave entre cores (PDF 1.3).

Qualquer desses elementos pode ser recortado para aparecer dentro de outras formas quando
colocados na pgina.

Um stream de contedo contm operandos e operadores descrevendo uma sequncia de objetos


grficos. Uma aplicao PDF consumidora mantm uma pgina atual implcita que acumula as marcas
feitas pelos operadores de desenho. Inicialmente, a pgina atual completamente branca. Para cada
objeto grfico encontrado no stream de contedo, a aplicao faz desenhos na pgina atual, que
substitui ou combina com quaisquer outros desenhos anteriores que ele se sobrepe. Uma vez a pgina
foi totalmente composta, os desenhos acumulados so renderizados na mdia de sada e a pgina atual
colocada em branco novamente.
O formato PDF 1.3 e as verses anteriores usam uma modelo de imagem opaco no qual, cada
novo grfico desenhado na pgina, obscurece completamente o contedo anterior da pgina naqueles
locais (sujeito a efeitos de certos parmetros opcionais que podem modificar este comportamento; ver
Seo 4.5.6, "Controle de impresso sobreposta"). Independente de qual cor for o objeto - branco,
preto, cinza ou colorido - ele colocado na pgina tal como se fosse aplicado com uma tinta opaca. O
formato PDF 1.4 introduz um modelo de imagem transparente no qual objetos desenhados na pgina
no precisam ser totalmente opacos. Ao invs disso, novos objetos desenhados so combinados com o
contedo anterior existente da pgina, produzindo resultado que combinam as cores de objeto com seu

pano de fundo de acordo com suas caractersticas de opacidade. O modelo de imagem transparente
descrito no Captulo 7.
Os principais objetos grficos (entre outros) so os seguintes:

Um objeto de trajeto (path objeto) consiste de uma sequncia de pontos conectados e


desconectados, linhas, e curvas que juntas descrevem formatos e suas posies. Ele construdo
atravs da aplicao de uma sequncia de operadores de construo de trajeto, em que cada um
adiciona um ou mais novos elementos. O objeto de trajeto finalizado por um operador de
desenho de trajeto, o qual desenha o trajeto na pgina. O principal operador de desenho de
trajeto o operador S (stroke), que desenha uma linha no trajeto, e o operador f (fill) que
preenche o interior do trajeto.

Um objeto de texto consiste um ou mais formatos de glifos representando caracteres de texto.


Os formatos dos glifos para os caracteres so descritos em estruturas de dados separadas
chamadas de fonte. Tal qual objetos de trajeto, objetos de texto podem ser traados ou
preenchidos.

Um objeto de imagem uma matriz (array) de valores, o qual cada representa uma cor em uma
posio particular dentro do retngulo. Tais objetos so usados tipicamente para representar
fotos.

Os operadores de desenho requerem vrios parmetros, algumas explcitos e outros implcitos.


Parmetros implcitos incluem a cor atual, a largura da linha atual, a fonte atual (forma dos caracteres e
tamanho), e muitos outros. Juntos, estes parmetros implcitos formam um estado grfico (graphic
state); existem operadores para definir o valor de cada parmetro implcito no estado grfico.
Operadores de desenho usam os valores atualmente ativos no momento em que so invocados.
Um parmetro implcito adicional no estado grfico modifica o resultado dos objetos grficos
de desenho. O trajeto de recorte atual define a area da pgina atual dentro da qual a tinta pode ser
colocada. Embora operadores de desenho podem tentar colocar marcas em qualquer lugar da pgina
atual, somente aquelas marcas residindo dentro do trajeto de recorte atual afetam a pgina; aquelas que
esto no exterior no afetam a pgina. Ela podem ser temporariamente reduzida para o formato
definido pelo trajeto ou objeto de texto, ou para a interseco de tais mltiplos formatos. Marcas
colocadas por operadores de desenho subsequentes so confinadas dentro daquela faixa.
2.1.3 Dispositivos de sada de mapa de bits (Raster Output Devices)
Muito do poder do modelo de imagem Adobe deriva de sua habilidade de lidar com classes
gerais de dispositivos de sada de mapa de bits. Ele abrange tecnologias de impressoras laser,
matriciais, jato de tinta, imagens digitais, e display de mapa de bits. A propriedade que define uma
dispositivo de mapa de bits que a imagem impressa ou exibida consiste uma matriz retangular, ou
raster, de pontos chamados pixels (picture elements) que podem ser acessados individualmente. Num
dispositivo de sada bidimensional, cada pixel pode ser composto de branco ou preto. Em alguns
dispositivos, pixels pdoe ser definidos em tons intermedirios de cinza ou em algum cor. A capacidade
de definir as cores de pixels individuais tornar possvel a gerao de sada impressa ou exibida que
pdoe incluir texto, formados grficos arbitrrios e a reproduo de imagens capturadas.

A resoluo de um dispositivo de sada de mapa de bits mede o nmero de pixels por unidade de
distncia ao longo de duas dimenses lineares. A resoluo tipicamente - mas no necessariamente - a
mesma horizontalmente ou verticalmente. As decises dos fabricantes na tecnologia dos dispositivos e
os problemas de custo-benefcio criam faixas de resoluo caractersticas:
* Os monitores de computadores possuem relativamente baixa resoluo, tipicamente de 75 a
110 pixels por polegada.
* Impressoras matriciais geram uma faixa de 100 a 250 pixels por polegada.
* Impressoras jato de tinta e scanners alcanam nveis mdios de resoluo de 300 a 1400
pixels por polegada.
* A tecnologia fotogrfica permite altas resolues de 2400 pixels por polegada ou mais.
Resolues mais altas resultam em melhor qualidade e fidelidade da sada resultante, porm
atravs de um grande custo. Enquanto a tecnologia avana e os custos de computao decaem, os
produtos evoluem para altas resolues.
2.1.4 Converso de scan
Um elemento grfico abstrato (tal como uma linha, um crculo, um glifo ou uma imagem
capturada) renderizado em um dispositivo de mapa de bits por um processo conhecido como
converso de scan (scan conversion). Dada uma descrio matemtica do elemento grfico, este
processo determina quais pixels deve ajustar e quais valores deve assinalar para estes pixels de modo a
conseguir a renderizao mais fiel possvel na resoluo dos dispositivo disponvel.
Os pixels na pgina podem ser representados por uma matriz bidimensional de valores de pixels
na memria do computador. Para um dispositivo cujos pixels podem ser apenas pretos ou brancos, um
nico bit o suficiente para representar cada pixel. Para um dispositivo que pode reproduzir nveis de
cinza ou cores, mltiplos bits por pixel so necessrios.
Nota: Embora a representao final de uma pgina impressa ou exibida logicamente uma matriz de
pixels completa, sua representao real na memria do computador no precisa consistir de uma clula
de memria por pixel. Algumas implementaes usam outras representaes, tal como listas de display.
O modelo de imagem Adobe foi projetado cuidadosamente a no depender de qualquer representao
particular de memria de mapa de bits.
Para cada elemento grfico a ser exibido na pgina, o conversor scan define os valores dos
pixels correspondentes. Quando a interpretao da descrio da pgina est completa, os valores dos
pixels na memria representam a aparncia da pgina. Neste ponto, processo de sada de mapa de bits
pode renderizar esta representao (faz-la visvel) em uma pgina impressa ou monitor.
O scan de um formato grfico, tal como um retngulo ou crculo, requer determinar quais pixels
do dispositivo residem dentro do formato e definir seus valores apropriadamente (por exemplo, para
preto). Devido aos cantos do formato nem sempre ficam dentro dos limites entre os pixel, alguma
ateno necessria para decidir como definir os pixels junto aos cantos. O scan de uma representao
de glifo de um caracter de texto conceitualmente o mesmo do scan de um formato grfico arbitrrio.

Porm, glifos de caracter so muito mais sensveis a requisitos de leitura e precisam se enquadrar em
objetivos mais rgidos e medidas subjetivas de qualidade.
A renderizao de elementos de tons de cinza de um dispositivo bidimensional efetuado pela
tcnica de halftoning. A matriz de pixesl dividida em pequenos clusters de acordo com alguma regra
(chamada de halftone scr2en). Dentro de cada cluster, alguns pixels so definidos em petro e outros em
branco na proporo dos nvels de cinza desejados nos locais da pgina. Quando visualiados de uma
distncia suficiente, os pontos individuais tornam-se imperceptveis e o resultado desejado um tom de
cinza. Isto permite que um dispositivo de sada de mapa de bits bidimensional reproduza os tons de
cinza e se aproxime de imagens naturais tal como fotografias. Alguns dispositivos de cores usam
tcnica similar.
2.2 Outras Propriedades Genricas
Esta seo descreve outras propriedades genricas notveis do formato PDF, alm de seu
modelo de imagem.
2.2.1 Portabilidade
Arquivos PDF representam sequncias de bytes de 8-bits. Um arquivo PDF projetado para ser
portvel entre todas as plataformas de sistemas operacionais. A representao binria destinada a
gerar, transportar, ser consumida diretamente, sem nenhuma traduo entre conjuntos de caracteres
nativos, representaes de fim-de-linha, ou outras convenes usadas entre vrias plataformas.
Qualquer arquivo PDF pode ser representado em uma forma que utiliza apenas caracteres
ASCII de 7 bits (American Standard Code for Information Interchange). Isto til para o propsito de
exposio, tal como este livro. Contudo, esta representao no recomendada para utilizao real,
pois menos eficiente que a representao binria. Independente de qual representao usada, arquivos
PDF precisam ser transportados e armazenados como arquivos binrios, no como arquivos de texto.
Mudanas inadvertidas, tal como uma converso entre convenes de fim-de-linha, iro danificar o
arquivo torn-lo inutilizvel.
2.2.2 Compresso
Para reduzir o tamanho do arquivo, o formato PDF suporta vrios filtros de compresso de
padro industrial:

JPEG e (no PDF 1.5) JPEG2000 para compresso de cores e imagens em tons de cinza
CCITT (Group 3 ou Group4), run-length, e (no PDF 1.4) JBIG2 para compresso de imagens
monocromticas
LZW (Lempel-Ziv-Welch) e (iniciando com PDF 1.2) compresso flate de textos, grficos e
imagens.

Usando compresso JPEG, imagens coloridas ou em tons de cinza podem ser comprimidas por um
fato de 10 ou mais. A compresso efetiva de imagens monocromticas depende do filtro de compresso
usado e as propriedades da imagem, mas redues de 2:1 at 8:1 so comuns (ou 20:1 at 50:1 para
compresso JBIG2 de uma imagem de uma pgina cheia ou de texto). A compresso LZW ou
compresso Flate de contedos de streams descrevendo todos os outros textos e grficos no documento
resultam em taxas de compresso de aproximadamente 2:1. Todos estes filtros de compresso geram
dados binrios, que posteriormente podem ser convertidos para a codificao ASCII base-85 se a
representao de 7-bits ASCII for necessria.
2.2.3 Gerenciamento de fontes
O gerenciamento de fontes um desafio fundamental na troca de documentos. Geralmente, o
receptor do documento precisa ter as mesmas fontes que foram usadas originalmente para cri-lo. Se
uma fonte diferente substituda, seu conjunto de caracteres, formatos do glifos, e suas mtricas podem
diferir daquelas da fonte original. Esta substituio pode produzir resultados inesperados e indesejados,
tal como linhas de texto se estendendo sobre as margens ou sobrepondo com imagens.
O formato PDF fornece vrios meios de lidar com o gerenciamento de fontes:

O programa da fonte original pode ser embutido no arquivo PDF, o que assegura resultados
mais seguros e confiveis. O formato PDF suporta vrios formatos de fonte, incluindo Type 1,
TrueType, OpenType, e fontes CID-Key.
Para preservar espao, um subconjunto da fonte pode ser embutido, contendo somente as
descries de glifos para os caracteres realmente utilizados no documento. Ademais, as fontes
Type 1 podem representar um formato compacto especial.
O formato PDF descreve um conjunto de 14 fontes padro que podem ser usadas sem definio
prvia. Essas fontes padro incluem os quatro estilos de trs tipos de fontes em latinas (Courier,
Helvtica e Times), bem como duas fontes simblicas (Symbol e ITC ZapfDingBats). Estas
fontes, ou fontes substitutas adequadas com as mesmas mtricas, so necessrias que fiquem
disponveis em todas as aplicaes PDF consumidoras.
Um arquivo PDF pode se referir ao nome das fontes que no esto embutidas no arquivo PDF.
Neste caso, uma aplicao PDF consumidora pode usar estas fontes se elas estiverem
disponveis no ambiente. Este mtodo sobre de algumas incertezas descritas acima.
Um arquivo PDF contm um descrito de fonte (font descriptor) para cada fonte utilizada. O
descritor de fonte inclui as mtricas e os estilos, possibilitam uma aplicao selecionar ou
sintetizar uma fonte substituta adequada se necessrio. Embora as formas do glifos serem
diferentes daquelas pretendidas, seu posicionamento exato.

O gerenciamento de fontes concebido primariamente com a produo da aparncia correta do texto


isto , a forma e a localizao dos glifos. Porm, algumas vezes necessrio para uma aplicao PDF
extrair o significado do texto, representado em alguma codificao de informao padro tal como
Unicode. Em alguns casos, esta informao pode ser deduzida da codificao usada para representar o
texto no arquivo PDF. Caso contrrio, a aplicao criadora PDF deve especificar o mapeamento
explicitamente atravs de um objeto especial, o CMap ToUnicode.
2.2.4 Gerao de arquivo por passo nico

Devido a limitaes do sistema e consideraes de eficincia, pode ser necessrio ou desejvel que uma
aplicao gere um arquivo PDF atravs de um nico passo. Por exemplo, o programa pode possuir
memria disponvel limitada ou ser incapaz de criar arquivos temporrios. Por esta razo, o formato
PDF suporta gerao de arquivos atravs de passo nico. Embora alguns objetos PDF precisem
especificar seu tamanho em bytes, um mecanismo fornecido permitindo o tamanho seguir o objeto no
arquivo PDF. Somado a isso, a informao sobre o nmero de pginas pode ser escrita no arquivo aps
todas as pginas terem sido geradas.
Um arquivo PDF que gerado em um passo nico geralmente no ordenado em favor de visualizao
mais eficiente, particularmente durante o acesso do contedo do arquivo em uma rede. Quando a for
gerado um arquivo PDF destinado a ser visualizado vrias vezes, vale a pena executar um segundo
passo para otimizar a ordem na qual os objetos ocorrem no arquivo. O PDF especifica uma organizao
de arquivo particular, o PDF linearizado (Linearized PDF), o qual documento no apndice F. Outras
otimizaes tambm so possveis, tal como a deteco de sequncias duplicadas de objetos grficos e
fundindo-os em uma nica sequncia compartilhada que especificada apenas uma vez.
2.2.5 Acesso Aleatrio
Um arquivo PDF deve ser pensado como uma representao compacta de uma estrutura de dados
consistindo de objetos que podem se referir uns com os outros em qualquer forma arbitrria. A ordem
de ocorrncia dos objetos no arquivo PDF no tm significado semntico. Em geral, uma aplicao
deve processar um arquivo PDF seguindo as referncias de um objeto para outro objeto, ao invs de
processar objetos sequencialmente. Isto particularmente importante para viso interativa do
documento ou para qualquer aplicao nas quais as pginas ou outros objetos no arquivo PDF so
acessadas fora de sequncia.
Para possibilitar tal acesso aleatrio aos objetos individuais, cada arquivo PDF contm uma tabela de
referncia cruzada que pode ser usada para localizar e acessar as pginas diretamente, bem como
outros objetos importantes do arquivo. A tabela de referncia cruzada armazenada no fim do arquivo,
permitindo as aplicaes que geram arquivos PDF em um nico passo armazen-la facilmente e
aquelas que lem os arquivos PDF, localiz-las facilmente. Atravs da tabela de referncia cruzada, o
tempo necessrio para localizar uma pgina ou outro objeto quase independente do tamanho do
documento, permitindo que documentos PDF contenham centenas ou milhares de pginas sejam
acessados eficientemente.
2.2.6 Segurana
O formato PDF possui dois recursos de segurana que podem ser usados, separadamente ou juntos, em
qualquer documento:

O documento pode ser criptografado de modo que somente usurios autorizados podem acesslos. Existe uma autorizao em separado para o proprietrio do documento e para todos os
outros usurios; o acesso dos usurios pode ser seletivamente restrito para permitir somente
certas operaes, tal como visualizao, impresso ou edio.
O documento pode ser assinado digitalmente para certificar sua autenticidade. A assinatura pode
ter vrias formas, incluindo resumo do documento (document digest) que pode ser criptografado

com uma chave pblica/privada, uma assinatura biomtrica tal como uma impresso digital, etc.
Qualquer alterao subsequente em um documento assinado invalida a assinatura.
2.2.7 Atualizao Incremental
Alguns aplicativos podem permitir que o usurio modifique os documentos PDF. Os usurios deviam
esperar que o arquivo inteiro o qual pode conter centenas de pginas ou mais fosse reescrito toda
vez que houvesse modificaes no arquido sendo salvo. Contudo, o formato PDF, permite que
modificaes sejam adicionadas (append) ao fim do arquivo, deixando os dados originais intactos. O
adendo adicionado quando o arquivo atualizado incrementalmente contm somente aqueles objetos
que foram realmente adicionados ou modificados, e inclui uma tabela de referncia cruzada atualizada.
Atualizaes incrementais permitem que uma aplicao salve modificaes para um documento PDF
em um tempo proporcional ao tamanho da modificao ao invs do tamanho do arquivo.
Alm disso, devido o contedo original ainda estar presente no arquivo, possvel desfazer alteraes
salvas apagando uma ou mais alteraes. A habilidade de recuperar o contedo exato do documento
original crtico quando assinaturas digitais tem que ser aplicadas e precisam ser subsequentemente
verificadas.
2.2.8 Extensibilidade
O formato PDF projetado para ser extensvel. No apenas novos recursos podem ser adicionados,
como aplicaes baseadas em verses anteriores do PDF podem se comportar satisfatoriamente quando
encontram novos recursos que no entendem. O Apndice H descreve como uma aplicao
consumidora de PDF deve se comportar em tais casos.
Alm disso, o PDF fornece meios para as aplicaes armazenarem suas prprias informaes no
arquivo PDF. Esta informao pode ser recuperada quando o arquivo importado pela mesma
aplicao, mas ignorada por outras aplicaes. Assim, o PDF pode servir como um formato de
arquivo nativo da aplicao enquanto seu documento pode ser visualizado e impresso por outras
aplicaes. Dados especficos de aplicao podem ser armazenados como um contedo marcado
(marked content) anotando os objetos grficos no fluxo de contedo PDF ou como objetos separados
inteiramente desconectados do contedo do PDF.
2.3 Criando um PDF
Os arquivos PDF podem ser produzidos diretamente pelos programas de aplicao ou indiretamente
por converso de outros formatos de arquivos ou modelos de imagem. Devido os documentos PDF e as
aplicaes que os processam tornarem-se mais prevalentes, novas maneiras de criar e usar o PDF
foram inventadas.
Muitas aplicaes podem gerar arquivos PDF diretamente, e algumas podem import-las tambm. Esta
viso direta prefervel, pois d acesso aplicao para todas as capacidades do PDF, incluindo o
modelo de imagem e os recursos de troca de documentos e interatividade. De outro forma, aplicaes
de no geram PDF diretamente podem produzir uma sada PDF indiretamente. Existem dois mtodos
indiretos principais:

A aplicao descreve sua sada impressa fazendo chamadas para uma interface de programa da
aplicao (API) tal como a GDI do Microsoft Windows ou QuickDraw no Apple Mac OS. Um
componente de software chamado driver de impressora (printer driver) intercepta estas
chamadas e interpreta-as para gerar uma sada no formato PDF.
A aplicao produz sada diretamente em algum outro formato, tal como PostScript, PCL,
HPGL ou DVI, a qual convertida para PDF por um programa de traduo separado.

Embora algumas dessas estratgias indiretas serem as formas mais fceis de obter uma sada em
formato PDF de uma aplicao existente, os arquivos PDF resultantes podem no fazer o melhor uso
do modelo de imagem Adobe de alto nvel. Isso se deve a informao embutida nas chamadas de API
da aplicao ou o arquivo de sada intermediria frequentemente descrever os resultados desejados em
nveis muito baixos. Qualquer informao de alto nvel mantida pela aplicao original foi perdida e
no est disponvel para o driver de impresso ou tradutor.
A figura 2.1 e 2.2 mostra como os produtos Acrobat fornecem estas vises indiretas. A impressora PDF
do Adobe (Figura 2.1), disponvel nas plataformas Windows e Mac OS, agem como um driver de
impressora, interceptando grficos e texto gerados pelo programa de aplicao sendo executado atravs
da API do sistema operacional. Ao invs de converter estas operaes nos comandos da impressora e
transmiti-los diretamente para a impressora, a impressora PDF do Adobe os converte para operadores
PDF equivalentes e os embuti no arquivo PDF. O resultado um arquivo independente de plataforma
que pode ser visualizado e impresso por uma aplicao PDF de visualizao, tal como Acrobat,
rodando em qualquer plataforma que o suporte mesmo numa plataforma diferente daquela na qual o
arquivo foi originalmente gerado.
Aplicativo Macintosh

Aplicativo Windows

QuickDraw/
CoreGraphics

GDI

Impressora PDF

PDF

Acrobat

Ao invs de descrever sua sada de impresso atravs de chamadas da API, algumas aplicaes
produzem descries de pginas PostScript diretamente devido as limitaes nos modelos de imagem
QuidraDraw/GDI ou porque as aplicaes rodam em plataformas tais como DOS ou UNIX, onde no

existe nenhum driver de impressora em nvel de sistema. Arquivos PostScript gerados por tais
aplicaes podem ser convertidos para PDF usando a aplicao Acrobat Distiller (veja Figura 2.2).
Devido PostScript e o PDF compartilharem o mesmo modelo de imagem Adobe, o Distiller pode
preservar o contedo grfico exato do arquivo PostScript na traduo do PDF. Adicionalmente, o
Distiller suporta uma extenso da linguagem PostScript, chamada pdfmark, que permite a aplicao de
produo embutir instrues no arquivo PostScript para criao de links de hipertexto, estrutura lgica
e outros recursos de interao e troca de documentos do PDF. Novamente, o arquivo PDF resultante
pode ser visualizado com uma aplicao de visualizao tal como o Acrobat em qualquer plataforma
suportada.
Descrio da pgina
PostScript

Acrobat Distiller

PDF

Acrobat

FIGURA 2.2 Criando arquivos PDF usando o Acrobat Distiller


2.4 O PDF e a linguagem PostScript
Os operadores PDF para definir estados grficos e objetos grficos de desenho so similares com os
operadores correspondentes da linguagem PostScript. Diferente do PostScript, porm, o PDF no uma
linguagem de programao de larga escala; ela compensa a flexibilidade reduzida com uma melhor
eficincia e maior previsibilidade. O formato PDF, portanto, difere do formato PostScript nas seguintes
maneiras:

O PDF fora uma estrutura de arquivo definida estritamente que permite uma aplicao acessar
partes do documento em uma ordem arbitrria.
Para simplificar o processo de fluxo de contedo, o PDF no inclui recursos de linguagem de
programao comuns tais como procedimentos, variveis e construes de controle.
Arquivos PDF contm informaes tais como mtricas de fonte para assegurar fidelidade na
visualizao.
Um arquivo PDF pode conter informao adicional que no conectada diretamente ao modelo
de imagem, tal como links de hipertexto para visualizao interativa e informao de estrutura
lgica para troca de documentos.

Devido estas diferenas, um arquivo PDF geralmente no pode ser transmitido diretamente para um
dispositivo de sada PostScript para impresso (embora alguns poucos dispositivos tambm
suportam PDF diretamente). Uma aplicao imprimindo um documento PDF para um dispositivo
PostScript precisa:
1. Inserir comandos de procedimento (procedure sets) contendo definies de procedimentos
PostScript para implementar operadores PDF.
2. Extrair o contedo de cada pgina. Cada fluxo de contedo essencialmente a poro de script
do programa PostScript tradicional usando procedimentos bem especficos, tal como m para
moveto e L para Lineto.
3. Decodificar o texto comprimido, grficos e dados de imagem necessrios. Os filtros de
compresso usando no PDF so compatveis com aqueles usados no PostScript; eles podem no
ser suportados, dependendo do LanguageLevel do dispositivo de sada.
4. Inserir qualquer recurso necessrio, tal como fontes, dentro do arquivo PostScript. Estas podem
ser as fontes originais ou substitutas baseadas nas mtricas das fontes do arquivo PDF. As fontes
podem no ser convertidas para o formato que o interpretador PostScript reconhece, tal como
Type1 ou Type42.
5. Por a informao na ordem correta. O resultado um programa PostScript tradicional que
representa totalmente os aspectos visuais do documento mas que no contem mais nenhum
elemento PDF tal como links hipertexto, anotaes e marcadores (bookmarks).
6. Transmitir o programa PostScript para o dispositivo de sada.

3.4 Estrutura de Arquivo


As sees anteriores descreveram a sintaxe de objetos individuais. Esta seo descreve como os objetos
so organizados no arquivo PDF para acesso aleatrio eficiente e atualizao incremental. Um arquivo
PDF cannico consiste inicialmente de quatro elementos (ver figura 3.2):

Um cabealho (header) de uma linha identificando a verso da especificao PDF para qual o
arquivo se adequa

Um corpo (body) contendo os objetos que compem o documento contido no arquivo

Uma tabela de referncia cruzada (cross-reference table) contendo informao sobre os


objetos indiretos no arquivo

Um trailer dando a localizao da tabela de referncia cruzada e certos objetos especiais dentro
do corpo do arquivo

Esta estrutura inicial pode ser modificada por atualizaes posteriores, que adiciona elementos ao final
do arquivo; ver Seo 3.4.5, Atualizaes incrementais, para detalhes.

Cabealho (Header)

Corpo (Body)

Tabela de referncia cruzada


Trailer
Figura 3.2 Estrutura inicial de um arquivo PDF
Como conveno, os tokens (identificadores) em um arquivo PDF so distribudos em linhas; ver Seo
3.1 Convenes Lxicas. Cada linha terminada por um marcador de fim-de-linha (EOL), que deve
ser um retorno de carro (carriage return, cdigo 13), um avano de linha (line feed, cdigo 10), ou
ambos. Arquivos PDF com dados binrios podem conter linhas arbitrariamente longas. Porm, para
aumentar a compatibilidade com outras aplicaes que processam arquivos PDF, as linhas que no so
parte de dados de objetos stream so limitadas a no mais que 255 caracteres, com uma exceo. A
partir da verso 1.3, a palavra Contents do dicionrio de assinatura (ver Seo 8.7, Assinaturas
Digitais) no est sujeita a restrio de tamanho de linha. Veja nota de implementao 12 no Apndice
H.
As regras descritas aqui so suficientes para produzir um arquivo PDF bem-formado. Porm, regras
adicionais aplicam-se na organizao de um arquivo PDF para permitir acesso incremental eficiente aos
componentes do documento em um ambiente de rede. Esta forma de organizao, chamado de PDF
Linearizado, est descrito no Apndice F.

3.4.1 Cabealho do Arquivo PDF (Header)


A primeira linha de um arquivo PDF um cabealho (header) identificando a verso do PDF que o
arquivo comporta. Para que o arquivo esteja em conformidade com a verso PDF 1.7, o cabealho deve
ser:
%PDF-1.7
Porm, como qualquer arquivo que represente uma verso anterior da atual tambm est em
conformidade com a verso 1.7, uma aplicao que processa o PDF 1.7, tambm aceita arquivos com
quaisquer do seguintes cabealhos:
%PDF-1.0

%PDF-1.1
%PDF-1.2
%PDF-1.3
%PDF-1.4
%PDF-1.5
%PDF-1.6
(Ver notas de implementaes 13 e 14 no apndice H).
A partir do PDF 1.4, a verso do cabealho do arquivo pode ser substituda (overriden) pela entrada
Version no dicionrio do catlogo do documento (localizada atravs da entrada Root no trailer do
arquivo, como descrito na Seo 3.4.4, Trailer do Arquivo). Isso permite a um editor PDF atualizar a
verso usando a atualizao incremental (ver Seo 3.4.5 Atualizaes Incrementais).
Sob algumas condies, uma aplicao PDF pode ser capaz de processar arquivos PDF em
conformidade com uma verso posterior na qual ele foi criado. Esses novos recursos do PDF so
frequentemente introduzidos de modo que eles podem ser prontamente ignorados por um visualizador
(viewer) que no os entende. (ver Seo H.1, Nmeros de Verso PDF).
Nota: Se um arquivo PDF contm dados binrios, como ocorre na maioria (ver Seo 3.1,
Convenes Lxicas), recomendado que a linha do cabealho seja imediatamente seguida por
uma linha de comentrio contendo pelo menos quatro caracteres binrios isto , caracteres com
cdigo maior que 128. Isto ir assegurar um comportamento correto das aplicaes de transferncia
de arquivos que inspecionam os dados prximos ao incio para determinar se sero tratados como
texto ou dados binrios durante a transferncia.

3.4.2 O corpo do arquivo (Body)


O corpo de um arquivo PDF consiste de uma sequncia de objetos indiretos representando o contedo
do documento. Os objetos, que so dos tipos bsicos descritos na Seo 3.2 Objetos, representam
componentes do documento tais como fontes, pginas e imagens. Iniciando com a verso 1.5, o corpo
tambm contm streams de objetos, os quais contm, por sua vez, uma sequncia de objetos indiretos;
ver Seo 3.4.6, Strems de Objetos.

3.4.3 Tabela de Referncia Cruzada (Cross-Reference Table)


A tabela de referncia cruzada contm informao que permite acesso aleatrio para objetos indiretos
dentro de um arquivo, de modo que o arquivo inteiro no precise ser lido para localizar um objeto
particular. Esta tabela contm uma entrada com uma linha simples para cada objeto indireto,
especificando a localizao daquele objeto dentro do corpo do arquivo. (A partir da verso 1.5, alguma
ou toda informao da tabela de referncia cruzada podem conter streams de referncia cruzada; ver
Seo 3.4.7, Strems de Referncia Cruzada).

A tabela de referncia cruzada a nica parte do arquivo PDF com um formato fixo; isto permite que
as entradas da tabela sejam acessadas aleatoriamente. A tabela compreende uma ou mais sees de
referncia cruzada. Inicialmente, a tabela inteira consiste de nica seo (ou duas, se o arquivo for
linearizado; ver apndice F); uma seo adicional adicionada toda vez que o arquivo for atualizado
(ver Seo 3.4.5, Atualizaes Incrementais).
Cada seo de referncia cruzada comea com uma linha contendo a palavra-chave xref. Seguindo esta
linha esto um ou mais subsees de referncia cruzada, que podem aparecer em qualquer ordem. A
estrutura de subseo til para atualizaes incrementais, pois permite uma nova seo de referncia
cruzada ser adicionada ao arquivo PDF, contendo somente entradas pra objetos que foram adicionados
ou excludos. Em um arquivo que nunca foi atualizado, a seo de tabela de referncia cruzada contm
apenas uma nica subseo, cuja numerao do objeto inicia em 0 (zero).
Cada subseo de referncia cruzada contm entradas para uma faixa de nmeros de objetos contguos.
A subseo comea com uma linha contendo dois nmeros, separados por um espao em branco: o
nmero de objeto do primeiro objeto nesta subseo e o nmero de entradas na subseo. Por exemplo,
a linha:
28 5
introduz uma seo contendo cinco objetos, numerados consecutivamente de 28 32.
Nota: Um nmero de objeto no pode ter uma entrada em mais de uma subseo dentro de uma seo.
Porm, veja nota de implementao 15 no Apndice H.
Seguindo esta linha (28 5) esto as entradas de referncia cruzada, uma por linha. Cada entrada possui
20 bytes, incluindo o marcador de fim de linha. Existem dois tipos de entradas de referncia cruzada:
um apara objetos que esto em uso e outro para objetos que foram excludos e, portanto, livres. Ambos
os tipos de entrada tem formato bsico similares, diferenciados pela palavra-chave n (para entradas em
uso) ou f (para entradas livres). O formato de uma entrada em uso :
nnnnnnnnnn ggggg n eol
onde
nnnnnnnnnn um deslocamento de 10 bytes
ggggg um nmero de gerao de 5 dgitos
n uma palavra-chave literal identificado que esta uma entrada em uso
eol uma sequncia de fim de linha de 2 caracteres
O deslocamento em bytes um nmero de 10 dgitos, preenchido com zeros esquerda se necessrio,
informando o nmero de bytes a partir do incio do arquivo at o incio do objeto. Ele separado do
nmero de gerao por um espao em branco simples. O nmero de gerao possui 5 dgitos, tambm
preenchido com zeros esquerda se necessrio. Seguindo o nmero de gerao h um espao simples,
depois a palavra-chave n, e finalmente o marcador de fim linha de 2 caracteres. Se o marcador de fim

de linha um caractere simples (retorno de carro ou avano de linha), ele ser precedido por um espao
em branco.
A entrada de referncia cruzada para um objeto excludo tem essencialmente o mesmo formato, exceto
que a palavra-chave f ao invs de n e a interpretao do primeiro item diferente:
nnnnnnnnnn ggggg f eol
onde
nnnnnnnnnn um nmero de objeto de 10 dgitos do prximo objeto liberado
ggggg um nmero de gerao de 5 dgitos
f uma palavra-chave literal identificando uma entrada livre
eol uma sequncia de fim de linha de 2 caracteres
As entradas livres na tabela de referncia cruzada formam uma lista encadeada, com ada entrada
contendo o nmero de objeto do prximo. A primeira entrada na tabela (nmero de objeto 0) sempre
est livre e tem um nmero de gerao de 65.535; ele o incio da lista encadeada dos objetos
liberados. A ltima entrada livre (o fim da lista encadeada) remete de volta ao objeto nmero 0.
(Adicionalmente, a tabela pode conter outras entradas livres que ligam de volta ao objeto nmero 0 e
que tem o nmero de gerao de 65.535, mesmo que estas entradas no estejam na lista encadeada.)
Exceto pelo objeto nmero 0, todos os objetos na tabela de referncia cruzada inicialmente tem nmero
de gerao 0. Quando um objeto indireto excludo, sua entrada na tabela de referncia cruzada
marcada como livre e adicionada para a lista de entradas liberadas. O nmero de gerao da entrada
incrementado em 1 para indicar o nmero de gerao a ser usado da prxima vez que um objeto seja
criado com o mesmo nmero. Assim, cada vez que uma entrada reusada, dado um novo nmero de
gerao. O mximo nmero de gerao 65.535; quando uma referncia cruzada encontrada alcana
este valor, ele nunca no ser mais reusado.
A tabela de referncia cruzada (correspondendo a seo de referncia cruzada original e todas as sees
atualizadas) precisa conter uma entrada para cada nmero de objeto de 0 at o nmero de mximo de
objetos usados no arquivo, mesmo se um ou mais nmeros de objeto nesta faixa no ocorrerem
realmente neste arquivo.
O exemplo 3.5 mostra a seo de referncia cruzada de uma simples subseo com seis entradas:
quando destas esto em uso (objetos de nmero 1, 2, 4 e 5) e dois que esto livres (objetos nmero 0 e
3). O objeto nmero 3 foi excludo, e o prximo objeto criado com este nmero ser dado um nmero
de gerao 7.
Exemplo 3.5
xref
0 6
0000000003 65535 f
0000000017 00000 n
0000000081 00000 n

0000000000 00007 f
0000000331 00000 n
0000000409 00000 n

O exemplo 3.6 mostra uma seo de referncia cruzada com quatro subsees, contendo um total de
cinco entradas. A primeira subseo contm uma entrada, para o objeto nmero 0, que est livre. A
segunda subseo contm uma entrada, para objeto nmero 3, que est em uso. A terceira subseo
contm duas entradas, para objetos nmero 23 e 24, ambos os quais esto em uso. O objeto nmero 23
foi reusado, como pode ser visto do fato que seu nmero gerao 2. A quarta subseo contm uma
entrada, para nmero de objeto 30, que est em uso.
Exemplo 3.6
xref
0 1
0000000000 65535 f
3 1
0000025325 00000 n
23 2
0000025518 00002 n
0000025635 00000 n
30 1
0000025777 00000 n
0000000409 00000 n

Ver Seo G.6, Exemplo de atualizao, para um exemplo mais extensivo da estrutura do arquivo
PDF que foi atualizado vrias vezes.
3.4.4 Trailer do Arquivo
O trailer de um arquivo PDF permite que uma aplicao leia o arquivo para rapidamente encontrar a
tabela de referncia cruzada e certos objetos especiais. As aplicaes devem ler o arquivo PDF a partir
do seu fim. A ltima linha contm somente um marcador de fim de arquivo, %%EOF. (Veja notas de
implementao 18 no Apndice H). As duas linhas precedentes contm a palavra-chave startxref e o
offset do incio do arquivo at o incio da palavra-chave xref na ltima seo de referncia-cruzada. A
linha startxref precedida pelo dicionrio do trailer, consistindo de palavra-chave trailer seguindo de
uma srie de pares de chaves-valores delimitados por caracteres de maior e menor duplos (<<..>>)(*).
Assim, o trailer tem geralmente a seguinte estrutura:
trailer
<< key 1 value 1
key 2 value 2

key n value n
>>
startxref
Offset_da_ltima_seo_de_referncia_cruzada
%%EOF

(*) A partir da verso 1.5, se houver tabela de referncia cruzada no formato de stream de objeto, o
offset indicado em startxref se refere ao incio desse objeto (nmero do objeto). Tambm, no haver a
palavra-chave trailer precedendo startxref, pois o dicionrio do trailer estar neste stream de objeto da
tabela de referncia cruzada.
A tabela 3.13 lista o contedo do trailer do dicionrio.
TABELA 3.13 Entradas no dicionrio do trailer
CHAVE
TIPO
Size
Integer

Prev

Integer

Root

Dictionary

Encrypt

Dictionary

Info

Dictionary

VALOR
(Necessrio; no deve ser
uma referncia indireta). O
nmero total de entradas na
tabela de referncia cruzada,
como
definida
pela
combinao
da
seo
original e todas as sees
atualizadas. Igualmente, este
dado ser um valor a mais
que o maior nmero de
objeto usado no arquivo.
Nota: Qualquer objeto numa
seo de referncia-cruzada
cujo nmero maior que
este valor ser ignorado e
considerado perdido.
(Presente somente se o
arquivo tem mais de uma
seo
de
referncia
cruzada; no pode ser uma
referncia
indireta)
O
deslocamento em bytes
(byte offset) do incio do
arquivo at o incio do
arquivo da seo de
referncia-cruzada anterior.
(Necessrio; deve ser uma
referncia
indireta)
O
dicionrio de catlogo do
documento PDF contido no
arquivo (ver Seo 3.6.1,
Catlogo do Documento).
(Necessrio, se o documento
estiver criptografado) O
dicionrio de criptografia do
documento (ver Seo 3.5
Criptografia).
(Opcional; deve ser uma
referncia
indireta)
O

ID

Array

dicionrio de informaes
do documento (ver Seo
10.2.1
Dicionrio
de
Informaes
do
Documento).
(Opcional,
mas
muito
recomendado; PDF 1.1) Um
array (vetor) de strings de
dois bytes constituindo um
identificador de arquivo (ver
Seo 10.3, Identificadores
de Arquivos para o arquivo.
As strings de dois bytes
devem ser objetos indiretos
e
devem
estar
sem
criptografia. Embora esta
entrada seja opcional, sua
ausncia pode prevenir o
arquivo de funcionar em
alguns
workflows
que
dependem
de
arquivos
identificados
de
forma
nica.

Nota: A tabela 3.17 define uma entrada adicional (XRefStm), que somente aparece no trailer nos
arquivos de referncia-hbrida, descritos em Compatibilidade com Aplicaes que no Suportam o
PDF 1.5 na pgina 109.
O Exemplo 3.7 mostra um exemplo de trailer de um arquivo que nunca foi atualizado (como indicado
pela ausncia da entrada Prev no dicionrio do trailer).
Exemplo 3.7
trailer
<< /Size
/Root
/Info
/ID [

22
2 0 R
1 0 R
<81b14aafa313db63dbd6f981e49f94f4>
<81b14aafa313db63dbd6f981e49f94f4>

]
>>
startxref
18799
%%EOF
3.4.5 Atualizaes Incrementais
O contedo de um arquivo PDF pode ser atualizado incrementalmente sem a necessidade de reescrever
o arquivo todo. As mudanas so adicionadas ao final do arquivo, deixando o seu contedo original

intacto. A principal vantagem de atualizar um arquivo desta maneira (como discutida na Seo 2.2.7,
Atualizao incremental) que pequenas alteraes em um grande arquivo podem ser salvos
rapidamente. Tambm so vantagens adicionais:
* Em alguns casos, a atualizao incremental a nica forma de salvar alteraes no documento. Uma
prtica aceita para minimizar o risco de perda de dados no momento de salvar os dados de um
documento escrev-lo em um novo arquivo e renomea-lo com o nome do antigo. Porm, em certos
contextos, tal como durante a edio de um documento atravs de uma conexo HTTP ou usando
objetos OLE (uma tecnologia especfica do Windows), no possvel sobrescrever o contedo do
arquivo original desta forma. Atualizaes incrementais podem ser usadas para salvar alteraes em
documentos nestes contextos.
* Uma vez o documento tiver sido assinado (ver Seo 2.2.6, Segurana), todas as mudanas feitas no
documento precisam ser salvas usando atualizaes incrementais, pois a alterao de qualquer byte
existente no arquivo invalida todas as assinaturas existentes.
Numa atualizao incremental, qualquer objeto novo ou alterado adicionado ao fim do arquivo, uma
nova tabela de referncia cruzada adicionada, bem como um novo trailer. O arquivo resultante ter a
estrutura mostrada na Figura 3.3. Um exemplo completo de um arquivo atualizado mostrado na Seo
G.6, Exemplo de Atualizao.
A tabela de referncia cruzada adicionada quando o arquivo atualizado contm entradas somente para
os objetos novos, alterados ou excludos. Objetos deletados so deixados inalterados no arquivo, mas
so marcados como excludos atravs de suas entradas na tabela de referncia cruzada. O trailer
adicionado contm todas as entradas (talvez modificado) do trailer anterior, bem como a entrada Prev
dando a localizao da tabela de referncia cruzada anterior (ver Tabela 3.13 na pgina 97). Tal como
mostrado na Figura 3.3, um arquivo que foi atualizado vrias vezes contm vrios trailers; cada trailer
terminado pelo seu prprio marcador de fim de linha (%%EOF).
Devido s atualizaes serem adicionadas ao fim do arquivo, um arquivo pode ter vrias cpias de um
objeto com mesmo identificador de objeto (nmero de objeto e nmero de gerao). Isto ocorre, por
exemplo, se uma anotao (ver Seo 8.4, Anotaes) alterada vrias vezes e o arquivo salvo
entre essas alteraes. Devido o texto da anotao no ser excludo, ele retm o mesmo nmero de
objeto e gerao do anterior. Uma cpia atualizada do objeto includa na nova seo (nova tabela de
referncia cruzada) atualizada do arquivo. A nova tabela de referncia cruzada inclui o deslocamento
em bytes da cpia deste objeto, sobrescrevendo o antigo byte offset (deslocamento) contido na tabela de
referncia cruzada original. Quando um aplicao PDF l o arquivo, ela precisa construir a informao
de referncia cruzada de tal forma que a cpia mais recente de cada objeto aquela que ser acessada
no arquivo.
Em verses do PDF anteriores 1.4, no era possvel usar atualizaes incrementais para alterar a
verso do PDF ao qual o documento se conformava, pois a verso era especificada somente no header
do incio do arquivo (ver Seo 3.4.1, Cabealho do arquivo). No PDF 1.4, possvel que uma
entrada Version no dicionrio de catlogo do documento (ver Seo 3.6.1, Catlogo do Documento)
sobrepor-se a verso especificada no cabealho, o que possibilita que a verso seja alterada usando
atualizao incremental.

Cabealho
Corpo original
Tabela de Referncia Cruzada
original
Trailer original
Atualizao do Corpo n1
Tabela de Referncia Cruzada
n1
Trailer atualizado n1

...
Atualizao do Corpo n
Tabela de Referncia Cruzada n
Trailer Atualizado n

3.4.6 Streams de Objetos


PDF 1.5 introduz um novo tipo de stream chamado stream de objeto que contm um sequncia de
objetos PDF. O propsito de streams de objeto permitir uma maior compresso de objetos PDF,
reduzindo substancialmente o tamanho do arquivo. Os objetos no stream so referidos como objetos
compactados. (Este termo usado independente do stream ter sido codificado com um filtro de
compresso).
Qualquer objeto PDF pode existir num stream de objeto, com a exceo de:

Fluxos de objetos (stream objects)

Objetos com nmero de gerao maior que zero


Dicionrio de criptografia de documento (ver Seo 3.5 Criptografia)
Objeto com o mesmo nmero da entrada Length no dicionrio de stream de objeto.

Observao: Alm disso, nos arquivos linearizados (veja apndice F, PDF Linearizado), o catlogo
de documento, o dicionrio linearizado e os objetos de pginas no podem aparecer num stream de
objeto.
Referncias indiretas para objetos dentro de streams de objeto usam a sintaxe normal: por exemplo, 14
0 R. O acesso para estes objetos requer uma forma diferente de armazenamento na tabela de referncia
cruzada; ver Seo 3.4.7, Streams de Referncia Cruzada. Embora uma aplicao precise suportar o
PDF 1.5 para usar objetos compactados, os objetos podem ser armazenados de uma maneira compatvel
com o PDF 1.4. As aplicaes que no suportam o PDF 1.5 podem ignorar os objetos; veja
Compatibilidade com Aplicaes que no suportam o PDF 1.5.
Junto com as chaves-padro dos streams mostrados na tabela 3.4, o dicionrio de stream descrevendo
um stream de objeto contm as seguintes entradas:
TABELA 3.14 Entradas adicionais para o dicionrio de stream de objeto
CHAVE
TIPO
DESCRIO
Type
name
(Necessrio) O tipo de objeto que este dicionrio descreve; precisa ser
ObjStm para um stream de objeto.
N
integer
(Necessrio) O nmero de objetos compactados no stream.
First
integer
(Necessrio) O offset (no stream decodificado) para o primeiro objeto
compactado.
Extends
Stream
(Opcional) Uma referncia para um stream de objeto, do qual o stream
de objeto atual considerado uma extenso. Ambos streams so
considerados parte de uma coleo de streams de objeto (veja abaixo).
Uma dada coleo consiste de um conjunto de streams o qual os links
Extends formam uma grafo acclico direcionado.

O criador de um arquivo PDF tem a flexibilidade em determinar quais objetos, se houver, sero
armazenados como streams de objeto. Por exemplo, pode ser til armazenar os objetos que tem
caractersticas em comum, tais como fontes da pgina 1, ou Comentrios sobre o rascunho #3.
Estes objetos so conhecidos como uma coleo.
Para evitar a degradao de performance, tal como pode ocorrer durante um downloading e
descompresso de um stream de objeto grande para acessar um nico objeto comprimido, o nmero de
objetos num stream de objeto individual deve ser limitado. (Ver notas de implementao 19 no
Apndice H.) Isto pode requerer um grupo de streams de objetos serem ligados como um coleo, o
que pode ser feito atravs da entrada Extends no dicionrio do stream de objeto.
Extends tambm pode ser usado quando uma coleo estiver sendo atualizada para incluir novos
objetos. Ao invs de redefinir o stream de objeto original, o que pode requerer duplicao dos dados do
stream, os novos objetos podem ser armazenados em um novo stream de objeto. Isto particularmente
importante quando adicionamos uma seo atualizada para o documento.
Os dados de stream no stream de objeto consiste dos seguintes itens:

N par de inteiros, onde o primeiro inteiro em cada par representa o nmero de objeto de um
objeto comprimido e o segundo inteiro representa o deslocamento em bytes deste objeto,
relativo ao primeiro. Os offsets precisam estar em ordem crescente, mas no existe restrio
para a ordem dos nmeros dos objetos.
Nota: O deslocamento em bytes do stream decodificado do primeiro objeto o valor da entrada
First.

Os N objetos armazenados consecutivamente. Somente os valores dos objetos so armazenados


no stream; as palavras-chave obj e endobj no so usadas. Um dicionrio ou array compactado
pode conter referncias indiretas.
Nota: ilegal um objeto comprimido consistir de apenas um referncia indireta; por exemplo,
3 0 R.
De modo inverso, dicionrios e arrays em contedo de streams no podem conter referncias
indiretas. Em um arquivo criptografado, strings que ocorrem em qualquer lugar do stream de
objeto no podem ser criptogradas separadamente, uma vez que stream de objeto todo est
criptografado.
Nota: Os dados do primeiro objeto no necessitam estar imediatamente aps o ltimo
deslocamento em bytes (offset sendo processado). Futuras extenses podem adicionar
informaes entre este dois pontos no stream.

Um stream de objeto, tal como qualquer stream, um objeto indireto, e precisa de um entrada na tabela
de referncia cruzada ou stream de referncia cruzada (ver Seo 3.4.7, Streams de Referncia
Cruzada, embora possa no existir alguma referncia a ele (na forma 243 0 R).
O nmero de gerao de um stream de objeto e de qualquer objeto compactado implicitamente igual a
zero. Se um stream de objeto ou objeto comprimido excludo e nmero de objeto liberado, aquele
nmero de objeto pode ser reusado somente para um objeto ordinrio (no compactado) e no mais por
um stream de objeto. Quando novos stream de objetos e objeto compactados so criados, eles sempre
devem ter novos nmeros de objeto, no os antigos da lista de liberados.
O exemplo 3.8 mostra trs objetos (duas fontes e um descritor de fonte) tal como eles podem ser
representados em uma verso de PDF 1.4 ou anterior, junto com a tabela de referncia cruzada. No
exemplo 3.9, o mesmo objeto est armazenado em um stream de objeto no arquivo de verso 1.5, junto
com o stream de referncia cruzada.
Exemplo 3.8
11 0 obj
<</Type /Font
/Subtype /TrueType
...outras entradas
/FontDescriptor 12 0 R
>>
endobj
12 0 obj

<</Type /FontDescriptor
/Ascent 891
... outras entradas
/FontFile2 22 0 R
>>
endobj
13 0 obj
<</Type /Font
/Subtype /Type0
... outras entradas
/ToUnicode 10 0 R
>>
endobj
...
xref
0 32
0000000000
...
0000001434
0000001735
0000002155
...

65535 f
00000 n %offset do objeto n 11
00000 n %offset do objeto n 12
00000 n %offset do objeto n 13

trailer
<</Size 32
/Root ...
>>

No exemplo 3.9, o stream de referncia cruzada (ver Seo 3.4.7, Streams de Referncia Cruzada)
contm entradas para as fontes (objetos 11 e 13) e o descritor (objeto 12), os quais so objetos
comprimidos em um stream de objeto. O primeiro campo destas entradas do tipo de entrada (2), o
segundo campo o nmero do stream de objetos, e o terceiro campo a posio dentro da sequncia
do stream (0, 1 e 2). A tabela de referncia cruzada tambm contm um tipo de entrada 1
correspondente ao stream de objetos.
Nota: Em favor da fcil leitura, o stream de objetos foi mostrado descodificado. Num arquivo PDF 1.5
real, a codificao Flate seria usualmente utilizada para obter os benefcios da compactao.
15 0 obj
% The object stream
<< /Type /ObjStm
/Length 1856
/N 3
% The number of objects in the stream
/First 24% The byte offset of the first object
>>
Stream
% O nmero dos objetos e os offsets relativos ao primeiro
11 0 12 547 13 665
<< /Type /Font
/Subtype
/TrueType

...outras palavras-chaves...
/FontDescriptor 12 0 R
>>
<< /Type /FontDescriptor
/Ascent 891
...outras palavras-chaves...
/FontFile2 22 0 R
>>
<< /Type /Font
/Subtype /Type0
... outras palavras-chaves...
/ToUnicode 10 0 R
>>
...
endstream
endobj
99 0 obj % The cross-reference stream
<< /Type /XRef
/Index [0 32] % A tabela possui uma seo com 32 objs
/W [1 2 2]
% Cada entrada tem 3 campos: 1, 2 and 2
% bytes in width, respectively
/Filter /ASCIIHexDecode % Para melhor leitura do arq.
/Size 32
...
>>
stream
00 0000 FFFF % 0 65535 f em uma tabela ref. cruzada
...
02 000F 0000 % O objeto 11, a primeira fonte
02 000F 0001 % O objeto 12, o descritor da fonte
02 000F 0002 % O objeto 13, a segunda fonte
...
01 BA5E 0000 % O objeto 15, o stream de objetos
...
endstream
endobj
startxref
54321 % O offset de 99 0 obj
%%EOF

Dicionrio do Stream de Referncia Cruzada


Streams de referncia cruzada contm as entradas mostradas na Tabela 3.15 juntamente com todas as
entradas comuns para todos os streams (Tabela 3.4) e mais o dicionrio do Trailer (Tabela 3.13).
Devido algumas informaes no stream de referncia cruzada serem necessrias para a aplicao PDF
construir o ndice que permite determinar as referncias indiretas, as entradas no stream de referncia
cruzada esto sujeitas as seguintes restries:

O valor de todas as entradas mostradas na Tabela 3.15 precisa ser objetos diretos; referncias
indiretas no so permitidas. Para arrays (as entradas ndex e W), todos seus elementos
precisam ser objetos diretos tambm. Se o stream est codificado, as entradas Filter e
DecodeParms na Tabela 3.4 precisam ser objetos diretos. Veja nota de implementao 20 no
Apndice H.
Nota: Outras entradas de referncia cruzada no listadas na Tabela 3.15 podem ser indiretas;
de fato, algumas (tal como Root na tabela 3.13) precisam ser indiretas.

O stream de referncia cruzada no precisa estar criptografado, nem mesmo qualquer string que
aparea no dicionrio do stream de referncia cruzada. Ele no precisa ter uma entrada Filter que
especifica um filtro Crypt (ver 3.3.9, Filtro Crypt).
Tabela 3.15 Entradas adicionais especficas do dicionrio do Stream de Ref. Cruzada
CHAVE TIPO
DESCRIO
Type
name
(Necessrio) O tipo do objeto PDF que este dicionrio descreve; precisa ser
XRef para um stream de referncia cruzada.
Size
integer
(Necessrio) O nmero posterior ao maior nmero de objeto usado nesta seo
ou em alguma seo para a qual esta seja uma atualizao. Ele equivalente a
entrada Size no dicionrio do Trailer.
ndex
array
(Opcional) Um array contendo um par de inteiros para cada subseo nesta
tabela (seo). O primeiro inteiro o primeiro objeto na subseo; o segundo
inteiro o nmero de entradas na subseo.
O array ordenado em ordem crescente de nmero de objeto. As subsees
no podem se sobrepor; um nmero de objeto deve ter somente uma entrada na
seo (tabela).
Valor padro: [0 Size]
Prev
integer
(Presente somente se o arquivo tiver mais de um stream de referncia cruzada;
no significativo em arquivos de referncia hbrida; ver Compatibilidade com
Aplicaes que no Suportam PDF 1.5 na pgian 109) O deslocamento em
bytes do incio do arquivo at o incio do stream de referncia cruzada anterior.
Esta entrada tem a mesma funo do Prev no dicionrio do trailer (Tabela
3.13). (Veja tambm nota de implementao 21 no Apndice H).
W
array
(Necessrio) Um array de inteiros representando o tamanho dos campos em
cada entrada de referncia cruzada. A Tabela 3.16 descreve os tipos de entradas
e seus campos. Para o PDF 1.5, W sempre contm trs inteiros; o valor de cada
inteiro o nmero de bytes (no stream decodificado) do campo

correspondente. Por exemplo, [1 2 1] significa que os campos tm um byte,


dois bytes e um byte respectivamente.
O valor zero para algum elemento do array W indica que o campo
correspondente no est presente no stream, e os valores padres sero usados,
se existir algum. Se o primeiro elemento zero, o tipo de campo no est
presente, e o seu padro ser o tipo 1.
A soma dos itens o tamanho total de cada entrada; isto pode ser usado como
ndice do array determinar o incio da posio de cada subseo.
Nota: Diferentes streams de referncia cruzada em arquivo PDF podem usar
diferentes valores para W.

Dados do Stream de Referncia Cruzada


Cada entrada no stream de referncia cruzada tem um ou mais campos. O primeiro determina o tipo da
entrada (veja Tabela 3.16). No PDF 1.5, somente os tipos 0, 1 e 2 so permitidos. Qualquer outro valor
interpretado como uma referncia a um objeto nulo, permitindo, assim, que novos tipos de entradas
sejam definidos no futuro.
Os campos so escritos em ordem crescente de nmero de campo (?); o tamanho de cada campo
determinado pelo valor correspondente entrada W (ver Tabela 3.15). Os campos que requerem mais
de um byte so armazenados com o byte de maior-ordem primeiro.
Tabela 3.16 Entradas no stream de referncia cruzada
Tipo
Campo
0
1

2
3
1

2
3

Descrio
O tipo desta entrada zero. As
entradas tipo 0 define a lista
encadeada de objetos liberados
(correspondendo as entradas f na
tabela de referncia cruzada.
O nmero de objeto do prximo
objeto livre.
O nmero de gerao a ser
usado se este objeto for usado
novamente.
O tipo desta entrada 1. As
entradas tipo 1 definem objetos
que esto em uso mas no esto
compactados (correspondem as
entradas n na tabela de
referncia cruzada).
O deslocamento em bytes do
objeto, a partir do incio do
arquivo.
O numero de gerao do objeto.

1
2

O valor padro zero.


O tipo desta entrada 2. As
entradas tipo 2 definem objetos
compactados.
O nmero do objeto do stream
de objeto no qual este objeto
est armazenado. (O nmero de
gerao do stream de objeto
implicitamente zero.)
O ndice deste objeto dentro do
stream de objetos.

Como qualquer stream, um stream de referncia cruzada um objeto indireto. Assim, uma entrada para
ele precisa existir em um stream de referncia direta ou em uma tabela de referncia cruzada (em
arquivos de referncia hbrida; veja Compatibilidade com as Aplicaes que no Suportam PDF 1.5
na pgina 109.
Compatibilidade com as Aplicaes que no Suportam o PDF 1.5
As aplicaes que no suportam o PDF 1.5 no podem acessar objetos que so referenciados atravs de
streams de referncia cruzada. Se um arquivo usa streams de referncia cruzada exclusivamente, ele
no poder ser aberto por tais aplicaes.
Porm, possvel construir um arquivo chamado arquivo de referncia hbrida que legvel por
leitores de PDF 1.4. Tal arquivo contm objetos referenciados por tabelas de referncia cruzada padro
junto com streams de objeto que so referenciados por streams de referncia cruzada.
Nestes arquivos, o dicionrio do trailer pode conter, juntamente com entradas para os trailers
mostrados na Tabela 3.13, uma entrada adicional, como mostrado na Tabela 3.17. Esta entrada
ignorada pelas aplicaes de PDF 1.4, os quais no possuem acesso s entradas no stream de referncia
cruzada que as entradas se referem.
Tabela 3.17 Entradas adicionais no dicionrio do trailer de arquivos de referncia hbrida
CHAVE TIPO
VALOR
XRefStm integer
(Opcional) O deslocamento em bytes do incio do arquivo do stream de
referncia cruzada.
A entrada Size do trailer precisa ser grande o suficiente para incluir todos os objetos, inclusive aqueles
definidos no stream de referncia de cruzada referenciados pela entrada XRefStm. Porm, para
permitir acesso aleatrio, uma seo de referncia cruzada principal precisa contem todos os objetos
numerados de 0 at Size 1 (ver Seo 3.4.3, Tabela de Referncia Cruzada). Assim, a entrada
XRefStm no pode ser usada no dicionrio do trailer da seo de referncia cruzada principal, exceto
em uma seo de referncia cruzada atualizada.
Quando uma aplicao de PDF 1.5 abre um arquivo de referncia hbrida, objetos com entradas nos
streams de referncia cruzada no esto escondidos. Quando a aplicao procura por um objeto, se uma
entrada no encontrada em alguma tabela de referncia cruzada padro, a busca continua em um

stream de referncia cruzada especificado pela entrada XRefStm antes de procurar numa tabela de
referncia cruzada anterior (a entrada Prev no trailer).
Objetos no visveis, portanto, tem duas entradas de referncia cruzada. Uma est no stream de
referncia cruzada. A outra uma entrada livre em alguma seo (tabela) anterior, tipicamente a seo
referenciada pela entrada Prev. Uma aplicao de PDF 1.5 busca primeiro no stream de referncia
cruzada, encontra o objeto l, e ignora a entrada livre na seo anterior. Uma aplicao de PDF 1.4
ignora o stream de referncia cruzada e procura na seo anterior, onde ele encontra a entrada livre. A
entrada livre precisa ter um nmero de gerao de 65635 de modo que o nmero de objeto nunca
reusado.
Existem limitaes nas quais os objetos do arquivo de referncia-hbrida podem ser invisveis sem
tornar o arquivo do PDF 1.4 invlido para aplicaes anteriores. Em particular, a entrada root do
arquivo PDF, o catlogo do documento (ver Seo 3.6.1, Catlogo do Documento), no podem ser
invisveis, nem qualquer objeto que est visvel a partir do root. Tais objetos podem ser determinados a
apartir do root e trabalhando recursivamente:

Em qualquer dicionrio que est visvel, objetos diretos so visveis. O valor de qualquer par
chave-valor obrigatrio visvel.
Em qualquer array visvel, cada elemento visvel.
Dicionrios de recursos em streams de contedo so visveis. Embora um dicionrio de recursos
no obrigatrio, estritamente falando, o contedo do stream na qual ele vinculado
presumido que contenha referncias aos recursos.

Em geral, os objetos que podem ser invisveis so objetos opcionais especificados por referncias
indiretas. Uma aplicao de PDF 1.5 pode determinar tais referncias atravs do processamento do
stream de referncia cruzada. Em uma aplicao PDF 1.4, os objetos parecem estar liberados, e as
referncias so tratadas como referncias para objetos nulos.
Por exemplo, a entrada Outlines no dicionrio do catlogo opcional. Assim, seu valor pode ser uma
referncia indireta para um objeto invisvel. Uma aplicao de PDF 1.4 trata-o como uma referncia
para um objeto nulo, o que equivalente a ter omitido a entrada inteiramente; uma aplicao PDF 1.5 o
reconhece. Porm, se o valor da entrada Outlines uma referncia indireta para um objeto visvel, toda
a rvore outline precisa estar visvel porque os nodos na rvore outline contm ponteiros necessrios
para outros nodos.
Seguindo esta lgica, itens que precisam estar visveis incluem toda rvore de pginas, fontes,
descritores de fontes, e tabelas de tamanho. Objetos que podem estar invisveis num arquivos de
referncia hbrida incluem a estrutura da rvore, a rvore do outline, os threads de artigos, anotaes,
destinaes, informaes capturadas da web, e rtulos de pginas.
O exemplo 3.11 mostra um arquivo de referncia hbrida contendo uma seo principal de referncia
cruzada e uma seo (tabela) de referncia cruzada atualizada com a entrada XRefStm que aponta para
o stream de referncia cruzada (objeto 11), o que, por sua vez, tem referncias para um stream de
objeto (objeto 2).

Neste exemplo, o catlogo (objeto 1) contm uma referncia indireta (3 0 R) para o root da rvore de
estrutura. A busca pelo objeto inicia na tabela de referncia cruzada atualizada, a qual no possui
objetos. A busca procede dependendo da verso da aplicao:

Numa aplicao PDF 1.4, a busca continua atravs ponteiro da entrada Prev para a tabela de
referncia cruzada principal. Esta tabela define o objeto 3 como um objeto livre, o qual tratado
como um objeto nulo. Assim, a entrada considerada perdida, e o documento no possui rvore
de estrutura.
Numa aplicao PDF 1.5, a busca continua atravs do ponteiro da entrada XRefStm at o
stream de referncia cruzada (objeto 11). Ele define o objeto 3 como um objeto compactado,
armazenado no ndice 0 no stream de objeto (2 0 obj). Assim, o documento no possui rvore de
estrutura.

Nota: Para tornar o formato e contedo do stream de referncia cruzada legvel neste exemplo, um
filtro ASCIIHexDecode foi usado. Como explicado em notas de implementao 20 no Apndice H, o
exemplo no seria aceito no Acrobat 6.0 e em outros visualizadores.
Exemplo 3.11
1 0 obj% The document root, at offset 23.
<</Type /Catalog
/StructTreeRoot 3 0 R

>>
endobj
12 0 obj

endobj

99 0 obj

endobj
xref
% The main xref section, at offset 2664
0 100
% This subsection has entries for objects 0 - 99.
0000000002 65535 f
% Entry for object 0
0000000023 00000 n
% Entry for object 1, the root
0000000003 65535 f % Entry for object 2 (object stream), marked free in this table
0000000004 65535 f % Entry for object 3, marked free in this table
0000000005 65535 f%
0000000006 65535 f
0000000007 65535 f
0000000008 65535 f
0000000009 65535 f
0000000010 65535 f
0000000011 65535 f
0000000000 65535 f % Entry for object 11 (xref stream), marked free in this table.
0000000045 00000 n % Entry for object 12, in use.
0000000179 00000 n % Entry for object 13, in use.

0000002201 00000 n % Entry for object 99, in use.


trailer
<</Size 100
/Root 1 0 R
/ID

>>
startxref
2664
% Offset of the main xref section
%%EOF
2 0 obj
% The object stream, at offset 3722
<</Length ...
/N 8
% This stream contains 8 objects.
/First 47
% The stream-offset of the first object
>>
stream
3 0 4 50 5 72 % The numbers and stream-offsets of the 8 objects
<</Type /StructTreeRoot % This is object 3.
/K 4 0 R
/RoleMap 5 0 R
/ClassMap 6 0 R
/ParentTree 7 0 R
/ParentTreeNextKey 8
>>
<< /S /Workbook
% This is object 4 (K value from StructTreeRoot).
/P 8 0 R
/K 9 0 R
>>
<</Workbook /Div % This is object 5 (RoleMap).
/Worksheet /Sect
/TextBox /Figure
/Shape /Figure
>>
% Objects 6 through 10 are defined here.
endstream
endobj
11 0 obj
% The cross-reference stream, at offset 4899
<</Type /XRef
/Index [2 10]
% This stream contains entries for objects 2 through 11
/Size 100
/W [1 2 1] % The byte-widths of each field
/Filter /ASCIIHexDecode % For readability only (not supported by Acrobat 6)

>>
stream
01 0E8A 0
% Entry for object 2 (0x0E8A = 3722)
02 0002 00 % Entry for object 3 (in object stream 2, index 0)
02 0002 01 % Entry for object 4 (in object stream 2, index 1)
02 0002 02 %
02 0002 03
02 0002 04
02 0002 05
02 0002 06
02 0002 07 % Entry for object 10 (in object stream 2, index 7)
01 1323 0
% Entry for object 11 (0x1323 = 4899)
endstream
endobj
xref
% The update xref section, at offset 5640
0 0
% There are no entries in this section.
trailer
<</Size 100
/Prev 2664 % Offset of previous xref section
/XRefStm 4899
/Root 1 0 R
/ID

>>
startxref
5640
%%EOF

Este exemplo ilustra vrios outros pontos:

O stream de objeto est descodificado e o stream de referncia cruzada usa hexadecimal em


ASCII para melhor clareza. Na prtica, ambos os streams deveriam estar codificados no
formato Flate. De igual modo, os comentrios mostrados na tabela de referncia cruzada no
exemplo acima so utilizados apenas para melhor esclarecimento; comentrios no PDF no so
permitidos na tabela de referncia cruzada.
Os objetos invisveis, de 2 at 11, so numerados consecutivamente. Na prtica, no existe tal
obrigatoriedade, nem existe obrigao que itens liberados na tabela de referncia cruzada sejam
encadeados em ordem crescente at o final.
A tabela de referncia cruzada no contm nenhuma entrada, o que no uma obrigatoriedade,
mas razovel. Um editor de PDF que usa o formato de referncia hbrida cria a tabela de
referncia cruzada principal, a tabela de referncia cruzada atualizada, e o stream de referncia
cruzada ao mesmo tempo. Os objetos 12 e 13, por exemplo, no esto comprimidos. Eles
precisam conter entradas na tabela atualizada. Devido os objetos 2 e 1, o stream de objeto e o
stream de referncia cruzada, no estarem comprimidos, eles tambm precisam estar definidos
na tabela atualizada. Contudo, devido serem parte da seo invisvel, faz sendo defini-los no
stream de referncia cruzada.
A tabela de referncia cruzada atualizada precisa aparecer no fim do arquivo, mas, de qualquer
forma, no existem restries de ordenamento em qualquer objeto ou na tabela de referncia
cruzada atualizada principal. Contudo, um arquivo que utiliza o formato de referncia hbrida e
o formato linearizado, possui restries de ordenamento. (Veja Apndice F, PDF
Linearizado).

You might also like