Como faço para mover parte de uma página PDF para outra página PDF
772
Tenho um documento PDF de 2 páginas. Gostaria de criar um novo documento PDF de uma página com parte de p1 do documento original e parte de p2 (veja o link da imagem):
Um objetivo é evitar a "rasterização" do documento. As letras ainda devem ser "letras" (em vez de imagens de letras) e quaisquer imagens no PDF de entrada devem ser mantidas em sua glória original e não reamostradas. Tenho certeza de que a abordagem descrita aqui consegue isso.
Em geral, a abordagem é:
Isole cada parte de entrada em seu próprio arquivo PDF
Crie um PDF em branco com as dimensões finais desejadas
(Ab)use pdftk para colocar as peças no documento em branco
Parece que seria possível pular a etapa 1 acima e fazê-la como parte da etapa 3, mas não consegui descobrir como 1) escolher uma página da entrada e 2) cortar a página de entrada antes de inseri-la no documento em branco.
Etapas detalhadas
Crie um diretório "espaço de trabalho"
mkdir pdftk && cd pdftk;
Coloque o arquivo de entrada
cp ~/Downloads/ticket.pdf .;
Crie um PDF em branco que corresponda às dimensões finais desejadas
magick xc:none -page Letter a.pdf;
Isolar página de entrada 1 (e similarmente para a página 2)
Grosso modo, não testado:
cpdf in.pdf 1 -o 1.pdf
cpdf in.pdf 2 -o 2.pdf
cpdf -shift "0 dy" 2.pdf -o shifted.pdf
cpdf -cropbox "x y w h" shifted.pdf -o cropped.pdf
cpdf -hard-box /CropBox cropped.pdf -o clipped.pdf
cpdf -stamp-on clipped.pdf 1.pdf -o final.pdf
Você precisará escolher valores apropriados para
dy, x, y, w, h
.Se você tiver mais de duas páginas, você pode substituir
cpdf in.pdf odd -o 1.pdf
e,cpdf in.pdf even -o 2.pdf
no começo, fazer tudo de uma vez.Um objetivo é evitar a "rasterização" do documento. As letras ainda devem ser "letras" (em vez de imagens de letras) e quaisquer imagens no PDF de entrada devem ser mantidas em sua glória original e não reamostradas. Tenho certeza de que a abordagem descrita aqui consegue isso.
Em geral, a abordagem é:
Parece que seria possível pular a etapa 1 acima e fazê-la como parte da etapa 3, mas não consegui descobrir como 1) escolher uma página da entrada e 2) cortar a página de entrada antes de inseri-la no documento em branco.
Etapas detalhadas
mkdir pdftk && cd pdftk;
cp ~/Downloads/ticket.pdf .;
magick xc:none -page Letter a.pdf;
pdftk ticket.pdf cat 1 output ticket-p1.pdf
pdfcrop --margins '0 0 0 -440' ticket-p1.pdf ticket-p1-cropped.pdf
git clone 'https://gitlab.com/pdftk-java/pdftk.git' source;
cd source && git checkout origin/master
mvn package -DskipTests=true
mvn package -DskipTests=true
cd target/
java -jar pdftk-java-*.jar ../../blank.pdf background ../../ticket-p1-cropped.pdf output ../../phase1.pdf
filter.java
novamente e crie a segunda fase:java -jar pdftk-java-*.jar ../../phase1.pdf background ../../ticket-p2-cropped.pdf output ../../phase2.pdf