
Incorporar um arquivo é bastante fácil usando LaTeX (veja, por exemplo:Incorporar link em um arquivo incorporado).
Ocultar um arquivo incorporado também é possível e bastante fácil de fazer fora do LaTeX (veja, por exemplo:https://blog.didierstevens.com/2009/07/01/embedding-and-hiding-files-in-pdf-documents/)
Mas tenho quase certeza de que é possível fazer o mesmo (ou seja, incorporar um arquivo E ocultá-lo da lista de anexos) usando apenas Latex...
Motivação: para poder incluir o código fonte do tex como um anexo que éescondidoda lista de anexos.
Algum barbudo grisalho por aí sabe a resposta para essa pergunta?
Responder1
O arquivo incorporado "oculto" na postagem do blog não é um arquivo incorporado no sentido do padrão PDF, então a questão é o que você realmente deseja:
Se quiser incluir apenas o conteúdo do arquivo no PDF gerado, você pode adicionar um fluxo de PDF: Se você escrever \immediate\pdfobj file{some-filename.tex}
, o arquivo some-filename.tex
será copiado para o PDF como um fluxo. Se quiser ver isso sem escrever um analisador de PDF, você pode usar
\documentclass{article}
\pdfobjcompresslevel=0% Don't hide the objects
...
\begin{document}
...
% Disable compression for this one object
{\pdfcompresslevel=0\immediate\pdfobj file{some-filename.tex}}
...
\end{document}
Se você abrir o arquivo PDF resultante em um editor, em algum lugar você encontrará algo como: (O primeiro número pode variar)
11 0 obj
<Here comes the content of some-filename.tex>
endobj
Este objeto não estará visível em nenhum visualizador de PDF.
Claro, isso não está realmente incorporado. Uma segunda tentativa: incorpore o arquivo, mas não o liste no formato /EmbeddedFiles
. Você pode usar
\documentclass{article}
\usepackage{embedfile}
\pdfobjcompresslevel=0% Don't hide the objects
...
\begin{document}
...
{\pdfcompresslevel=0\embedfile{some-filename.tex}}
\makeatletter
\global\let\EmFi@list\empty
\makeatother
...
\end{document}
Desativei parcialmente a compactação novamente para que você possa encontrar o arquivo no PDF resultante. Isso \global\let\EmFi@list\empty
faz com que o embedfile
pacote esqueça todos os arquivos até este ponto, então eles nunca serão gravados na lista de arquivos incorporados, mas o /EmbeddedFile
objeto PDF com o conteúdo do arquivo e alguns metadados ainda serão gravados. Você não pode tornar isso visível facilmente, porque faltam as entradas do catálogo.
Se você tentar reproduzir a postagem do blog referenciada e alterar o caso de /EmbeddedFiles
, será necessário substituir a rotina de saída do embedfile:
\documentclass{article}
\usepackage{embedfile}
\pdfobjcompresslevel=0% Don't hide the objects, otherwise you can't see
% /Embeddedfiles, so you also can't change it back
\makeatletter
% The following is mostly copied from embedfile.sty, (C) by Heiko Oberdiek
% But all the errors are propably introduced by me
\def\embedfilefinish{%
\ifEmFi@finished
\EmFi@Error{%
Too many invocations of \string\embedfilefinish
}{%
The list of embedded files is already written.%
}%
\else
\ifx\EmFi@list\empty
\else
\global\EmFi@finishedtrue
\begingroup
\def\do##1##2{%
(##1)##2%
}%
\immediate\pdfobj{%
<<%
/Names[\EmFi@list]%
>>%
}%
\pdfnames{%
% Changed name to make this invalid
/Embeddedfiles \the\pdflastobj\space 0 R%
}%
\endgroup
\fi
\fi
}
\makeatother
\begin{document}
...
\embedfile{hidden.tex}
...
\end{document}
Responder2
Se você deseja fazer isso de maneira indireta: Use o programa gráfico GIMP e o ImageMagick. Você também precisará extrair imagens de um PDF: No Linux, experimente a ferramenta de linha de comando pdfimages. Ou experimente a ferramenta de linha de comando pdfimages.exe, do Xpdf.
No GIMP, crie uma nova imagem de tamanho 100x100 pixels. Isso terá mais bytes do que o texto simples do seu currículo. Caso contrário, use uma imagem maior.
Preencha a imagem com branco. Exporte-o como *.bmp (bitmap do Windows), mesmo se você não estiver no Windows. Não use nenhuma codificação e não salve informações de cores ou qualquer outra coisa.
Abra o texto simples do seu currículo. Coloque alguns espaços antes de começar e depois de terminar. Copie tudo para a área de transferência.
Abra a imagem *.bmp em um editor hexadecimal. Após o prólogo, você verá vários bytes FF, significando branco. Em algum lugar ali, substitua um monte de FF com o texto colado. Salvar.
Você deverá conseguir abrir o *,bmp editado no GIMP, onde o texto aparecerá como linhas escuras de aparência aleatória. Exporte-o como PNG, usando compactação 0 e sem salvar nenhuma informação (sem Exif, etc.).
Usando o ImageMagick: mogrify -strip thatimage.png No Windows: magick mogrify -strip thatimage.png
Usando o
includegraphics
comando (packagegraphicx
), coloque a imagem *.png em um local discreto no arquivo CV TeX. Você pode reduzi-lo para ficar ainda menor. Você também pode usar otextpos
pacote para posicionar um retângulo branco em branco (imagem) sobre sua imagem *.png, para que nada apareça na impressão. Ou, se o currículo contiver sua foto ou logotipo corporativo, você poderá colocar a foto ou logotipo acima do arquivo *.png.Se você não estiver colocando uma imagem sobre a outra, é possível que o PDF encontre PDF/X ou PDF/A. No que diz respeito ao PDF, o png editado é apenas uma imagem. Ele não sabe sobre o texto dentro. Se você estiver colocando uma imagem sobre outra, ela (normalmente) não atenderá ao PDF/X ou PDF/A, a menos que você esteja usando uma versão recente desses padrões.
A imagem *.png é armazenada usando métodos PDF, não "como png". Posteriormente, você pode extraí-lo usando a linha de comando pdfpages (Linux), mas certifique-se de especificar a saída como formato png, não o formato ppm padrão.
No GIMP, abra o png extraído e converta para bmp, garantindo novamente que nenhuma codificação ou dados perdidos sejam gravados.
Abra o bmp extraído em um editor hexadecimal e veja: seu texto está lá, escondido entre os bytes FF.
O nome geral para ocultar informações em uma imagem é “esteganografia”. Você pode ler sobre isso online. Este não é um bom exemplo, pois os dados originais podem ser vistos por qualquer pessoa que saiba o que você fez, sem a necessidade de descriptografia.
Acabei de testar meu próprio conselho e funciona. Porém, se quiser experimentar, você deve escolher cuidadosamente quais opções você usa (e não usa) em cada etapa, ou o texto da imagem ficará distorcido.