Primeiro passo é você tentar fazer um profiling do seu codigo, ver em quais pontos está demorando.
Pode fazer usando alguma ferramenta de profiling, ou simplesmente marcando o tempo de execução em cada "passo" do seu código.
Veja se você está fazendo muitas queries ao banco, e se é possível unificar algumas dessas queries.
Quando estamos desenvolvendo não nos importamos com queries "demoradas" de 50ms. só que em produção as vezes essas queries se repetem dezenas de vezes, e ja viram alguns segundos.
As vezes o gargalo não tem nada a ver com a geração de PDF em si, mas sim com as suas queries, ou algum pedaço do código que está mal otimizado.