O PDFSizeOpt é um programa para converter grandes arquivos PDF em pequenos, sem diminuir a qualidade visual ou remover recursos interativos (como hiperlinks). Mais especificamente, o PDFSizeOpt é um aplicativo gratuito de linha de comando de plataforma cruzada (para Linux, Windows, MacOS e Unix) e uma coleção de melhores práticas para otimizar o tamanho dos arquivos PDF, com foco nos PDFs criados nos documentos Tex e Latex. O PDFSizeOpt está escrito em Python, por isso é um pouco lento, mas descarrega parte do trabalho pesado para suas dependências mais rápidas (C, C ++ e Java).
O PDFSizeOpt não funciona com seu PDF? Relate o problema aqui: https://github.com/pts/pdfsizeopt/issues
Envie doações para o autor de PdfsizeOpt: https://flattr.com/submit/auto?user_id=pts&url=https://github.com/pts/pdfsizeopt
Se for a sua primeira vez tentando PDFizeOpt, siga estas instruções. (Esta seção foi atualizada em 2023-02-15.)
É fácil instalar e executar o PDFSizeOpt nos sistemas Linux e Windows modernos com um processador X86. Se você tiver esse sistema, pule diretamente para uma das seções a seguir ( instruções de instalação e uso em instruções de instalação ou instalação e uso no Windows ). Levará menos de 5 minutos.
É fácil instalar e executar o PDFSizeOpt em um Mac (os processadores Intel X86 e os processadores ARM com Apple Silicon são suportados). Se você tiver esse sistema, pule diretamente para as instruções de instalação da seção e o uso no macOS ( não usando o Docker). Levará menos de 5 minutos.
Alternativamente (mas não recomendado porque é mais lento), é possível executar o PDFSizeOpt no Docker nos seguintes sistemas: Linux AMD64, MacOS Intel 64 bits x86 (AMD64, x86_64), MacOS 64 bits (Apple Silicon, GEG M1 ou M2 chip). Depois disso, pule diretamente para as instruções de instalação da seção e o uso com o Docker no Linux e MacOS . Esse último passo levará menos de 5 minutos.
Se você estiver usando um sistema operacional diferente do Linux, Windows ou MacOS (em um computador com processador Intel), a maneira mais fácil de experimentar o PDFSizeOpt está emprestando o computador de um amigo com Linux, Windows ou MacOS ou alugando uma VM Linux na nuvem. A razão pela qual é difícil executar o PDFSizeOpt em outros tipos de sistemas é porque o PDFSizeOpt tem algumas dependências necessárias, algumas delas são versões antigas (por exemplo, Python 2.4--2.7, Ghostscript 9.05), então você terá que compilar as versões certas de As dependências primeiro, que podem levar várias horas e muitas tentativas e erros frustrantes, mesmo para hackers experientes.
É tecnicamente possível portar PDFSizeOpt para outros sistemas (e facilitar a instalação), mas o autor do PDFSizeOpt não tem tempo livre para criar e manter essa porta. Como FYI, veja #154 sobre portar para a Apple Silicon.
Não há instalador, você precisa executar alguns comandos na linha de comando para baixar e instalar. PDFSizeOpt é um aplicativo apenas da linha de comando, não há GUI.
Para instalar o PDFSizeOpt em um sistema Linux (com a Arquitetura i386 ou AMD64), abra uma janela do terminal e execute esses comandos (sem os principais $
):
$ mkdir ~/pdfsizeopt
$ cd ~/pdfsizeopt
$ wget -O pdfsizeopt_libexec_linux.tar.gz https://github.com/pts/pdfsizeopt/releases/download/2023-04-18/pdfsizeopt_libexec_linux-v9.tar.gz
$ tar xzvf pdfsizeopt_libexec_linux.tar.gz
$ rm -f pdfsizeopt_libexec_linux.tar.gz
$ wget -O pdfsizeopt.single https://raw.githubusercontent.com/pts/pdfsizeopt/master/pdfsizeopt.single
$ chmod +x pdfsizeopt.single
$ ln -s pdfsizeopt.single pdfsizeopt
Para otimizar um PDF, execute o seguinte comando:
~/pdfsizeopt/pdfsizeopt input.pdf output.pdf
Se o PDF de entrada tiver muitas imagens ou imagens grandes, o PDFSizeOpt poderá ser muito lento. Você pode acelerar, desativando o pngout, o método de otimização de imagem mais lento, como este:
~/pdfsizeopt/pdfsizeopt --use-pngout=no input.pdf output.pdf
O PDFSizeOpt cria muitos arquivos temporários (PSOTMP.*) No diretório de saída, mas também se limpa depois de si.
É possível otimizar um PDF fora do diretório atual. Para fazer isso, especifique o nome do caminho (incluindo o nome do diretório) na linha de comando.
Observe que os comandos acima baixam todas as dependências (incluindo Python e GhostScript) também. É possível instalar algumas das dependências com o gerenciador de pacotes, mas essas etapas são consideradas alternativas e mais complicadas e, portanto, não são cobertas aqui.
Observe que o PDFSizeOpt funciona perfeitamente em qualquer sistema X86 e AMD64 Linux. Não há restrição no LIBC, distribuição do Linux etc. porque o PDFSizeOpt usa apenas seus executáveis X86 estaticamente vinculados e não usa comandos externos (além do PDFSizeOpt, PDFSizeOpt.Single e PDFSizeOpt_libexec/*) no sistema. O PDFSizeOpt também funciona perfeitamente nos sistemas X86 FreeBSD com a camada de emulação Linux ativada.
Para evitar digitar ~/pdfSizeOpt/pdfSizeOpt, adicione "$ home/pdfSizeOpt" ao seu caminho (provavelmente no seu ~/.bashrc), abra uma nova janela do terminal e o comando pdfSizeOPT funcionará em qualquer diretório.
Você também pode colocar o PDFSizeOpt em um diretório que não seja ~/pdfSizeOpt, como desejar.
Além disso, você pode instalar alguns imptimizadores de imagem extras (veja mais na seção Otimizadores de imagem abaixo):
$ cd ~/pdfsizeopt
$ wget -O pdfsizeopt_libexec_extraimgopt_linux-v3.tar.gz https://github.com/pts/pdfsizeopt/releases/download/2017-01-24/pdfsizeopt_libexec_extraimgopt_linux-v3.tar.gz
$ tar xzvf pdfsizeopt_libexec_extraimgopt_linux-v3.tar.gz
$ rm -f pdfsizeopt_libexec_extraimgopt_linux-v3.tar.gz
Não há instalador, você precisa executar alguns comandos na linha de comando (janela de prompt de comando preto) para baixar e instalar. PDFSizeOpt é um aplicativo apenas da linha de comando, não há GUI.
Crie a pasta C: pdfsizeOpt, faça o download https://github.com/pts/pdfsizeopt/releases/download/2023-04-18/pdfsizeopt_win32exec-v9.zip, e extraem o conteúdo da pasta C: pdfsize O arquivo c: pdfSizeOpt pdfsizeopt.exe existe.
Faça o download https://raw.githubusercontent.com/pts/pdfsizeopt/master/pdfsizeopt.single e salve -o em c: pdfsizeOpt, como c: pdfsizeOpt pdfSizeOpt.Single.
Para otimizar um PDF, execute o seguinte comando:
C:pdfsizeoptpdfsizeopt input.pdf output.pdf
Na linha de comando, que é uma janela preta de prompt de comando, você pode iniciá -la por menu inicial / run / cmd.exe, ou para encontrar o prompt de comando no menu Iniciar.
(Pressione a guia para obter a conclusão do nome do arquivo durante a digitação.)
Como você precisa digitar o nome do arquivo de entrada como um nome completo, é recomendável criar um diretório com um nome curto (por exemplo, c: pdfs) e copiar o pdf de entrada primeiro.
Se o PDF de entrada tiver muitas imagens ou imagens grandes, o PDFSizeOpt poderá ser muito lento. Você pode acelerar, desativando o pngout, o método de otimização de imagem mais lento, como este:
C:pdfsizeoptpdfsizeopt --use-pngout=no input.pdf output.pdf
Para evitar a digitação c: pdfSizeOpt pdfSizeOpt, adicione C: pdfSizeOpt a (o final do) caminho do sistema, abra uma nova janela de prompt de comando e o comando pdfsizeopt
funcionará em qualquer diretório.
Dependendo do seu ambiente, os nomes de arquivos com caracteres acentuados podem não funcionar na versão do Windows do PDFSizeOpt. Para reproduzi-lo seguro, verifique se seus arquivos de entrada e saída têm nomes com letras, números, sublinhado (_), Dash (-), Dot (.) E Plus (+). A barragem () e a barra (/) são boas como o separador de diretório.
Os espaços em nomes de arquivos e nomes de caminhos devem funcionar, mas você precisa colocar citações duplas (") em torno do nome.
Names de arquivos com alguns caracteres de pontuação (como citação dupla ("), ponto de interrogação (?) E asterisk ( )) e caracteres não impressos (como a Newline) não funcionarão no Windows. Isso ocorre porque o Windows não suporta esses caracteres ([ x00 .. x1f " : <>? | x7f] em nomes de arquivos, e ele usa / e como separador de diretório.
Você também pode colocar o PDFSizeOpt em um diretório que não seja C: pdfSizeOpt, mas não funcionará se houver espaço em branco ou há caracteres acentuados em qualquer um dos nomes de pastas.
Observe que o PDFSizeOpt funciona perfeitamente no vinho (testado com o Wine-1.2 no Ubuntu Lucid e Wine-1.6.2 no Ubuntu Fiel), mas é um pouco mais lento do que executá-lo nativamente (como um programa Linux ou UNIX).
Essas instruções funcionam nos seguintes sistemas: Linux AMD64, MacOS Intel X86 (AMD64, x86_64), MacOS Arm de 64 bits (Apple Silicon, EG M1 ou M2 Chip). A versão do Linux ou MacOS não importa (sistemas antigos como o MacOS Leopard 10.5 também funcionam), desde que tenha instalado e funcionando.
Os programas no Docker Image PTSPTs/PDFSizeOpt são compilados para o Linux i386 (Intel X86 de 32 bits), e esses binários funcionam em todas as plataformas mencionadas acima, mesmo com o Apple Silicon. (Testado em 2023-02-21.)
Não há instalador, você precisa executar alguns comandos na linha de comando para baixar e instalar. PDFSizeOpt é um aplicativo apenas da linha de comando, não há GUI.
Primeiro, verifique se você instalou o Docker corretamente executando este comando e verificando o OK no final:
docker version && echo OK
Se você não ficar bem, porque o comando `Docker 'não foi encontrado, o Docker não será instalado no seu computador. Instruções de instalação (em 2023-02-22):
Para instalar o Docker no Linux, você tem duas opções: Docker Engine (https://docs.docker.com/engine/install/, na seção do servidor) ou Docker Desktop (https://docs.docker.com/desktop/ Instale/Linux-Install/). Qualquer um deles funcionaria.
Para instalar o Docker no macOS, instale o Docker Desktop (https://docs.docker.com/desktop/install/mac-install/).
Em seguida (no macOS), adicione o comando docker
ao seu caminho executando o seguinte comando (copie-o, não digite, para evitar erros de digitação):
(echo; echo 'export PATH="/Applications/Docker.app/Contents/Resources/bin:$PATH"') >>~/.profile
Em seguida (no macOS), feche o aplicativo terminal e abra novamente (para que mude para ~/.Profile entrar em vigor).
Após a instalação, tente novamente o comando docker version
acima.
Remova todas as imagens anteriores do PDFSizeOpt:
docker image rm ptspts/pdfsizeopt
Faça uma execução de otimização de teste, que exerce todas as dependências do PDFSizeOpt:
curl -L -o deptest.pdf https://github.com/pts/pdfsizeopt/raw/master/deptest/deptest.pdf
docker run -v "$PWD:/workdir" -u "$(id -u):$(id -g)" --rm -it ptspts/pdfsizeopt pdfsizeopt deptest.pdf
Se você receber uma mensagem de aviso (inofensiva) como
WARNING: The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm64/v8) and no specific platform was requested
, e você não deseja obtê -lo novamente e adicione --platform linux/amd64
após o -it
:
docker run -v "$PWD:/workdir" -u "$(id -u):$(id -g)" --rm -it --platform linux/amd64 ptspts/pdfsizeopt pdfsizeopt deptest.pdf
Para otimizar um PDF, execute este comando:
docker run -v "$PWD:/workdir" -u "$(id -u):$(id -g)" --rm -it ptspts/pdfsizeopt pdfsizeopt input.pdf output.pdf
Se o PDF de entrada tiver muitas imagens ou imagens grandes, o PDFSizeOpt poderá ser muito lento. Você pode acelerar, desativando o pngout, o método de otimização de imagem mais lento, como este:
docker run -v "$PWD:/workdir" -u "$(id -u):$(id -g)" --rm -it ptspts/pdfsizeopt pdfsizeopt --use-pngout=no input.pdf output.pdf
O PDFSizeOpt cria muitos arquivos temporários (PSOTMP.*) No diretório de saída, mas também se limpa depois de si.
É possível otimizar um PDF fora do diretório atual. Para fazer isso, especifique o nome do caminho (incluindo o nome do diretório) na linha de comando.
Para evitar digitar um longo comando, execute
(echo '#! /bin/sh'; echo 'exec docker run -v "$PWD:/workdir" -u "$(id -u):$(id -g)" --rm -it ptspts/pdfsizeopt pdfsizeopt "$@"') >pdfsizeopt && chmod 755 pdfsizeopt
e, em seguida, copie o script PDFSizeOpt no seu caminho e abra uma nova janela do terminal e agora esse comando também funcionará para otimizar um PDF:
pdfsizeopt input.pdf output.pdf
Observe que a imagem PTSPTS/PDFSizeOpt Docker é atualizada muito raramente. Para usar uma versão mais atualizada do PDFSizeOpt, execute esses comandos para baixar:
curl -L -o pdfsizeopt.single https://raw.githubusercontent.com/pts/pdfsizeopt/master/pdfsizeopt.single
chmod +x pdfsizeopt.single
Em seguida, execute este comando para otimizar um PDF:
docker run -v "$PWD:/workdir" -u "$(id -u):$(id -g)" --rm -it ptspts/pdfsizeopt ./pdfsizeopt.single --use-pngout=no input.pdf output.pdf
Se você deseja incluir otimizadores de imagem extras no Linux, use PTSPTs/PDFSizeOpt-With-Extraimgopt em vez de PTSPTS/PDFSizeOpt nos comandos acima. Exemplo:
docker run -v "$PWD:/workdir" -u "$(id -u):$(id -g)" --rm -it ptspts/pdfsizeopt-with-extraimgopt pdfsizeopt --use-image-optimizer=sam2p,jbig2,pngout,zopflipng,optipng,advpng,ECT input.pdf output.pdf
Essas instruções funcionam em Macs com MacOS Catalina 10.15 (e até mais velho, talvez MacOS Snow Leopard 10.6)-MacOS Ventura 13 (e ainda mais recente), com um processador de braço de 64 bits (Apple Silicon) ou um Intel X86 de 64 bits ( X86_64, AMD64) Processador. Os programas são compilados para processadores Intel X86 de 64 bits e também trabalham em processadores de ARM de 64 bits, usando a emulação do Rosetta 2 no macOS. Essas instruções foram testadas e conhecidas para trabalhar no MacOS Ventura 13.3, ambos com processador Intel X86 (x86_64, AMD64) e silício de Apple (Processador ARM).
Se você tiver um Mac mais antigo executando o Mac OS X Leopard 10.5 - MacOS Mojave 10.14, siga as instruções de instalação da seção e o uso no MacOS mais antigo .
Essas instruções ainda não foram testadas. Veja #154 para atualizações de progresso.
Não há instalador, você precisa executar alguns comandos na linha de comando para baixar e instalar. PDFSizeOpt é um aplicativo apenas da linha de comando, não há GUI.
Para instalar o PDFSizeOpt em um sistema MacOS, abra uma janela de terminal e execute esses comandos (sem o $
principal):
$ mkdir ~/pdfsizeopt
$ cd ~/pdfsizeopt
$ curl -L -o pdfsizeopt_libexec_darwin.tar.gz https://github.com/pts/pdfsizeopt/releases/download/2023-04-18/pdfsizeopt_libexec_darwinc64-v9.tar.gz
$ tar xzvf pdfsizeopt_libexec_darwin.tar.gz
$ rm -f pdfsizeopt_libexec_darwin.tar.gz
$ curl -L -o pdfsizeopt.single https://raw.githubusercontent.com/pts/pdfsizeopt/master/pdfsizeopt.single
$ chmod +x pdfsizeopt.single
$ ln -s pdfsizeopt.single pdfsizeopt
Faça uma execução de otimização de teste, que exerce todas as dependências do PDFSizeOpt:
$ curl -L -o deptest.pdf https://github.com/pts/pdfsizeopt/raw/master/deptest/deptest.pdf
$ ~/pdfsizeopt/pdfsizeopt deptest.pdf
... e aberto (exibir) deptest.pdf e o deptest otimizado correspondente.pso.pdf.
Para otimizar um PDF, execute o seguinte comando:
~/pdfsizeopt/pdfsizeopt input.pdf output.pdf
Se o PDF de entrada tiver muitas imagens ou imagens grandes, o PDFSizeOpt poderá ser muito lento. Você pode acelerar, desativando o pngout, o método de otimização de imagem mais lento, como este:
~/pdfsizeopt/pdfsizeopt --use-pngout=no input.pdf output.pdf
Além disso, se você tiver um Mac de 32 bits, o pngout agrupado com PDFSizeOpt não funcionará (porque precisa de um Mac de 64 bits), então você precisa forçar-use-pngout = não. Consulte os otimizadores da imagem da seção para alternativas do PNGOUT.
O PDFSizeOpt cria muitos arquivos temporários (PSOTMP.*) No diretório de saída, mas também se limpa depois de si.
É possível otimizar um PDF fora do diretório atual. Para fazer isso, especifique o nome do caminho (incluindo o nome do diretório) na linha de comando.
Observe que os comandos acima baixam a maioria das dependências (incluindo GhostScript, mas excluindo o Python) também. Tudo deve funcionar conforme instruído acima, fora da caixa. Se você estiver enfrentando problemas, relate um problema em https://github.com/pts/pdfsizeopt/issues.
Para evitar digitar ~/pdfSizeOpt/pdfSizeOpt, adicione "$ home/pdfSizeOpt" ao seu caminho (provavelmente no seu ~/.bashrc), abra uma nova janela do terminal e o comando pdfSizeOPT funcionará em qualquer diretório.
Você também pode colocar o PDFSizeOpt em um diretório que não seja ~/pdfSizeOpt, como desejar.
Essas instruções devem funcionar em Macs mais antigos executando o Mac OS X Leopard 10.5-MacOS Mojave 10.14 e com um processador Intel X86 de 32 ou 64 bits. Os programas são compilados para o processador Intel X86 (i386) de 32 bits (e também trabalham em um processador Intel de 64 bits com MacOS Mojave 10.14 ou anterior), exceto a ferramenta PNGOUT, que precisa de pelo menos o Mac OS X Snow Leopard 10.6 e um processador Intel de 64 bits.
Não há instalador, você precisa executar alguns comandos na linha de comando para baixar e instalar. PDFSizeOpt é um aplicativo apenas da linha de comando, não há GUI.
Para instalar o PDFSizeOpt em um sistema MacOS mais antigo, abra uma janela de terminal e execute esses comandos (sem o $
principal):
$ mkdir ~/pdfsizeopt
$ cd ~/pdfsizeopt
$ curl -L -o pdfsizeopt_libexec_darwin.tar.gz https://github.com/pts/pdfsizeopt/releases/download/2023-04-18/pdfsizeopt_libexec_darwin-v9.tar.gz
$ tar xzvf pdfsizeopt_libexec_darwin.tar.gz
$ rm -f pdfsizeopt_libexec_darwin.tar.gz
$ curl -L -o pdfsizeopt.single https://raw.githubusercontent.com/pts/pdfsizeopt/master/pdfsizeopt.single
$ chmod +x pdfsizeopt.single
$ ln -s pdfsizeopt.single pdfsizeopt
Faça uma execução de otimização de teste, que exerce todas as dependências do PDFSizeOpt:
$ curl -L -o deptest.pdf https://github.com/pts/pdfsizeopt/raw/master/deptest/deptest.pdf
$ ~/pdfsizeopt/pdfsizeopt deptest.pdf
... e aberto (exibir) deptest.pdf e o deptest otimizado correspondente.pso.pdf.
Para otimizar um PDF, execute o seguinte comando:
~/pdfsizeopt/pdfsizeopt input.pdf output.pdf
Se o PDF de entrada tiver muitas imagens ou imagens grandes, o PDFSizeOpt poderá ser muito lento. Você pode acelerar, desativando o pngout, o método de otimização de imagem mais lento, como este:
~/pdfsizeopt/pdfsizeopt --use-pngout=no input.pdf output.pdf
Além disso, se você tiver um Mac com um processador Intel X86 de 32 bits, o PNGOUT empatado com PDFSizeOpt não funcionará (porque precisa de um processador de 64 bits), então você precisa forçar-use-pngout = não. Consulte os otimizadores da imagem da seção para alternativas do PNGOUT.
O PDFSizeOpt cria muitos arquivos temporários (PSOTMP.*) No diretório de saída, mas também se limpa depois de si.
É possível otimizar um PDF fora do diretório atual. Para fazer isso, especifique o nome do caminho (incluindo o nome do diretório) na linha de comando.
Observe que os comandos acima baixam a maioria das dependências (incluindo GhostScript, mas excluindo o Python) também. Tudo deve funcionar conforme instruído acima, fora da caixa. Se você estiver enfrentando problemas, relate um problema em https://github.com/pts/pdfsizeopt/issues.
Para evitar digitar ~/pdfSizeOpt/pdfSizeOpt, adicione "$ home/pdfSizeOpt" ao seu caminho (provavelmente no seu ~/.bashrc), abra uma nova janela do terminal e o comando pdfSizeOPT funcionará em qualquer diretório.
Você também pode colocar o PDFSizeOpt em um diretório que não seja ~/pdfSizeOpt, como desejar.
Não há instalador, você precisa executar alguns comandos na linha de comando para baixar e instalar. PDFSizeOpt é um aplicativo apenas da linha de comando, não há GUI.
O PDFSizeOpt funciona perfeitamente nos sistemas X86 FreeBSD com a camada de emulação Linux ativada. Portanto, habilite a camada de emulação do Linux no seu sistema FreeBSD e siga as instruções de instalação e o uso no Linux .
Alterivamente, você pode seguir as instruções de instalação e o uso no Unix genérico , mas isso precisa de muito mais trabalho de sua parte (e é inconveniente e propenso a erros), porque você precisa instalar muitas dependências separadamente, possivelmente compilando algumas delas da fonte.
Fazer isso é cada vez mais difícil em 2023, porque o PDFSizeOpt precisa de Python 2.4--2.7 e Ghostscript 9.05, ambos muito antigos e, portanto, difíceis de instalar em um sistema moderno.
Não há instalador, você precisa executar alguns comandos na linha de comando (janela de prompt de comando preto) para baixar e instalar. PDFSizeOpt é um aplicativo apenas da linha de comando, não há GUI.
PdfizeOpt é um script python. Funciona com Python 2.4, 2.5, 2.6 e 2.7 (mas não funciona com o Python 3.x). Então, por favor, instale o Python primeiro.
Crie um novo diretório chamado PDFSizeOpt e faça o download deste link lá: https://raw.githubusercontent.com/pts/pdfsizeopt/master/pdfsizeopt.single
Renomeie -o para PDFSizeOpt e faça com que seja executável executando os seguintes comandos (sem o $
principal):
$ cd pdfsizeopt
$ mv pdfsizeopt.single pdfsizeopt
$ chmod +x pdfsizeopt
Se o seu executável do Python não for/usr/bin/python, edite a primeira linha (começando com #!
) No script pdfSizeOpt de acordo.
Experimente com:
$ ./pdfsizeopt --version
info: This is pdfsizeopt ZIP rUNKNOWN size=105366.
O PDFSizeOpt tem muitas dependências. Para funcionalidade completa, você precisa de todos eles. Instale o máximo possível e coloque -os no caminho.
Dependências:
imgdataopt
como sam2p
(eg/usr/local/bin/sam2p) para o seu CAMINHO. Se você não puder instalá-lo, use PDFSizeOpt--do-otimize-images = Não. Algumas distribuições Linux têm binários SAM2P, mas tendem a ser muito velhos. Como alternativa, o sam2p> = 0,49.3 + png22pnm também funciona em vez de imgdataopt, mas o imgdataopt é mais fácil de instalar.Após a instalação, use PDFSizeOpt como:
$ ./pdfsizeopt input.pdf output.pdf
Você pode adicionar o diretório que contém PDFSizeOpt ao caminho, para que o comando pdfsizeopt
funcione em qualquer diretório.
O PDFSizeOpt pode usar as seguintes ferramentas externas para criar imagens em arquivos PDF incorporados menores:
Para ativar ou desativar qualquer otimizador de imagem, especifique todos os otimizadores de imagem que você deseja ser ativado assim: --Use-image-otimizer = Optipng, JBIG2. Isso também desativará o pngout padrão.
Você também pode especificar padrões de comando de otimizador de imagem personalizados especificando especificações separadas e adicionais-use-image-otimier = sinalizadores, como este:
--use-image-optimizer="optipng %(sourcefnq)s -o6 -fix -force %(optipng_gray_flags)s-out %(targetfnq)s"
Você sempre precisa especificar %(TargetFNQ) no padrão de comando.
Especifique--do-debug-image-otimizadores = sim para ver quais otimizadores de imagem estão ativados (e sua linha de comando completa) para a execução atual.
Na startup, o PDFSizeOpt verifica se os otimizadores de imagem solicitados estão disponíveis (como arquivos de programas) e falhará se alguns deles estiverem faltando. Para ignorar aqueles que estão ausentes, especifique--do-reabire-image-otimizers = não.
É sua responsabilidade (do usuário) instalar os otimizadores de imagem e adicioná -los ao caminho. Se você seguir as instruções de instalação para Windows e Linux acima, os otimizadores de imagem padrão (SAM2P, JBIG2 e PNGOUT) serão instalados para você. Para o Linux, também existem instruções de instalação acima para otimizadores de imagem extras (Zopflipng, Optipng, ADVPNG e ECT).
Especifique--do-unify-fontes = NO e--do-regenerado-todos-fontes = Não.
Se ainda falhar, especifique--do-otimize-fontes = não.
Em ambos os casos, informe -o em https://github.com/pts/pdfsizeopt/issues
Especifique--do-otimize-images = Não.
Por favor, relate -o em https://github.com/pts/pdfsizeopt/issues
Especificar --se-pngout = não. Isso desativa o pngout, que é a etapa de otimização mais lenta para as imagens.
Por favor, relate -o em https://github.com/pts/pdfsizeopt/issues, anexando o arquivo PDF de entrada e a saída do console do PDFSizeOpt. Seu relatório é muito apreciado.
Se o PDFSizeOpt sair com uma exceção não capturada, ele poderá deixar alguns arquivos temporários (PSOTMP.*) Para trás no diretório atual. Você pode remover esses arquivos.
Observe que o PDFSizeOpt não é resiliente no processamento de arquivos PDF corruptos (ou seja, aqueles que não são compatíveis com o padrão PDF). Portanto, se o PDFSizeOpt falhar, o motivo poderá ser um bug no PDFSizeOpt ou em um arquivo de entrada em PDF corrupto. No entanto, relate um problema (veja acima).
Relate -o em https://github.com/pts/pdfsizeopt/issues, anexando o arquivo PDF de entrada e o arquivo pdf de saída (.pso.pdf) e a saída do console do PDFSizeOpt. Seu relatório é muito apreciado.
Isso pode acontecer se o nome do arquivo ou o nome completo do caminho contiver qualquer caractere que não seja as letras ascii (AZ e AZ), dígitos (0-9), sublinhado (_), ASCII Dash (-), Plus (+), dot (. ), barragem () ou barra (/). Normalmente, esses personagens não funcionam:
Espaços e guias: é fácil de corrigir, basta embrulhar o nome do arquivo em citações duplas ("), da maneira usual.
Double Quotes ("): Isso não pode acontecer, os nomes de arquivos no Windows não podem conter cotações duplas. Se você precisar passar por um argumento sem filenome com uma cotação dupla para PDFSizeOpt, faça isso. Enrole o argumento em dobro Citações ("), substitua todas as cotações duplas (") por "e (paralelamente à substituição anterior) substitua uma reversão de sequência () e uma citação dupla (") imediatamente seguindo -as duplicando as barras de barriga e substituindo a citação dupla ( ") Com".
NEWLINES e outro espaço em branco não espacial: isso não funciona, o prompt de comando do Windows (cmd.exe) não permite esses caracteres nos argumentos da linha de comando. Além disso, o Windows não os permite em nomes de arquivos.
caracteres acentuados (como Á e ő). Esses caracteres não funcionam (ou pode funcionar apenas para alguns caracteres, dependendo da página de código ativo) no nome do arquivo PDF especificado na linha de comando ou no nome completo do PDFSizeOpt (então não instale o PDFSizeOpt para C: bőr, não funcionará).
Os caracteres acentuados (fora da página de código ativo) não funcionarão no nome completo do PDFSizeOpt (como C: BőR pdfSizeOpt.exe). Isso ocorre porque o Python não consegue chamar programas externos (OS.System, OS.Popen, OS.Spawnl e Subprocess.Call) com caracteres acentuados em seu nome, porque usa a API de byte.
Qualquer coisa que não seja a ASCII imprimível (código entre 33 e 126, inclusive): se não for coberto acima, isso pode não funcionar. Veja a descrição de caracteres acentuados.
Se alguns nomes de arquivos ainda não funcionarem, as soluções alternativas são:
Os caracteres acentuados no nome do arquivo em PDF podem ser feitos de trabalho da seguinte maneira (como um trabalho de melhoria futura para o PDFSizeOpt):
pdfsizeopt.exe deve chamar a API de 16 bits (getCommandlinew) em vez da API de byte único (getCommandlinea) para obter os argumentos
pdfsizeopt.exe deve escapar dos caracteres não-ASCII nos argumentos (por exemplo, como U+12AB)
pdfsizeopt.exe deve executar pdfsizeopt.single assim:
.../pdfsizeopt_win32exec/pdfsizeopt_python.exe .../pdfsizeopt.single --args-u+ ...
O código python pdfSizeOpt deve reconhecer --args-u+, e ao encontrar o nome do arquivo, ele deve convertê-lo para unicode (mantendo as ASCII, exceto U+12AB), e deve passar pelo valor do unicode para abrir (...) . Esse trabalho (...) funciona no Python 2.6 no Windows.
Ao exibir nomes de arquivos, o código PDFSizeOpt Python ainda deve exibir o ASCII com o U+12AB escape. Assim, o módulo Win32Console não é necessário. Assim, os nomes de arquivos serão exibidos legalmente, mas incorretamente (não copiarem-seavelmente) na janela Prompt de comando.
Não é necessário escapar nas linhas de comando dos programas auxiliares (por exemplo, GS, SAM2P), porque é tudo ASCII, porque os nomes de arquivos são nomes temporários de FIL temporários autogenerados, que são todos ascii, e o caminho para o próprio PDFSizeOPT é necessário para o ASCII.
Os caracteres acentuados no nome do caminho do PDFSizeOpt.Single podem ser feitos de trabalho dessa maneira (como um trabalho de melhoria futura para o PDFSizeOpt):
Faça os caracteres acentuados no nome do arquivo acima primeiro.
pdfsizeopt.exe deve usar o WGETCWD para obter o diretório atual.
pdfsizeopt.exe deve usar o wchdir para alterar para o diretório de pdfsizeopt.single.
pdfSizeOpt.exe deve prender os diretórios pdfsizeOpt_win32exec e pdfsizeOpt_win32exec/pdfsizeOpt_gswin para o caminho, usando wputEnv.
pdfsizeopt.exe deve executar pdfsizeopt.single assim:
pdfsizeopt_python.exe pdfsizeopt.single --args-u+ --cwd=... ...
, onde o valor de - -CWD = é a versão escapada (U+12AB) do resultado do wgetcwd.
O código python pdfSizeOpt deve prender o valor de - -CWD = ... ao nome do arquivo de entrada se for relativo.
O código python pdfSizeOpt não deve modificar o caminho se -cwd = ... estiver presente. (Essa propagação variável do ambiente funciona no Python 2.6.? Vamos tentar!)
Ainda é verdade que não é necessário escapar nas linhas de comando de programas externos (por exemplo, GS, SAM2P), porque é tudo ASCII, porque os nomes temporários dos arquivos são todos ASCII, e o caminho para o próprio PDFSizeOpt é necessário para o ASCII. A fuga for necessária se o nome do caminho do diretório temporário (variável temp) precisar escapar.
Este erro aconteceu em um sistema Windows XP. A solução: baixe msvcr90.dll (ou encontre -a em algum lugar já no seu sistema) e copie -o para pdfSizeOpt_win32Exec (próximo ao python26.dll). Qualquer versão do msvcr90.dll funcionará:
Esse erro aconteceu em um sistema Windows XP quando o arquivo microsoft.vc90.crt.Manifest estava ausente no diretório pdfSizeOpt_win32exec. A solução: reinstale pdfsieopt, o diretório pdfsizeopt_win32exec na versão mais recente possui esse arquivo.
Instale o PDFSizeOpt seguindo as instruções de instalação em https://github.com/pts/pdfsizeOpt. Ao fazer isso, o PDFSizeOpt usará o GhostScript 9.05 com ele, e funcionará.