Formatar documentos PDF em Java
Formatação no Aspose.PDF for Java inclui comportamento do visualizador, incorporação de fontes e configurações de exibição.
Obter configurações da janela do documento
Use este exemplo para inspecionar as preferências de visualização atuais armazenadas em um documento PDF existente.
- Abra o PDF de origem em um objeto Document.
- Leia as propriedades de janela e exibição necessárias do documento.
- Exiba as configurações atuais para inspeção ou depuração.
public static void getDocumentWindow(Path inputFile) {
try (Document document = new Document(inputFile.toString())) {
System.out.println("CenterWindow: " + document.isCenterWindow());
System.out.println("Direction: " + document.getDirection());
System.out.println("DisplayDocTitle: " + document.isDisplayDocTitle());
System.out.println("FitWindow: " + document.isFitWindow());
System.out.println("HideMenuBar: " + document.isHideMenubar());
System.out.println("HideToolBar: " + document.isHideToolBar());
System.out.println("HideWindowUI: " + document.isHideWindowUI());
System.out.println("NonFullScreenPageMode: " + document.getNonFullScreenPageMode());
System.out.println("PageLayout: " + document.getPageLayout());
System.out.println("PageMode: " + document.getPageMode());
}
}
Definir preferências da janela do documento
Este exemplo atualiza como o PDF deve ser exibido quando aberto em um visualizador compatível.
- Abra o PDF de origem em um objeto Document.
- Defina as preferências de janela, layout e modo de página necessárias.
- Salve o PDF atualizado Document.
public static void setDocumentWindow(Path inputFile, Path outputFile) {
try (Document document = new Document(inputFile.toString())) {
document.setCenterWindow(true);
document.setDirection(Direction.R2L);
document.setDisplayDocTitle(true);
document.setFitWindow(true);
document.setHideMenubar(true);
document.setHideToolBar(true);
document.setHideWindowUI(true);
document.setNonFullScreenPageMode(PageMode.UseOC);
document.setPageLayout(PageLayout.TwoColumnLeft);
document.setPageMode(PageMode.UseThumbs);
document.save(outputFile.toString());
}
}
Incorporar fontes em um PDF existente
Use esta abordagem quando um documento deve conter as fontes necessárias para uma renderização mais confiável em outros sistemas.
- Abra o PDF de origem em um objeto Document.
- Habilite incorporação de fontes padrão e itere pelas fontes usadas por cada Page.
- Marcar qualquer não incorporado objetos Font para incorporação.
- Salve o documento atualizado.
public static void embeddedFonts(Path inputFile, Path outputFile) {
try (Document document = new Document(inputFile.toString())) {
document.setEmbedStandardFonts(true);
for (Page page : document.getPages()) {
for (Font pageFont : page.getResources().getFonts()) {
if (!pageFont.isEmbedded()) {
pageFont.setEmbedded(true);
}
}
}
document.save(outputFile.toString());
}
}
Incorporar fontes ao criar um novo PDF
Este exemplo cria um novo PDF e atribui uma fonte incorporada ao conteúdo de texto desde o início.
- Crie um novo documento PDF Document e adicione um Page.
- Crie o necessário TextFragment, TextSegment, e TextState.
- Resolva o alvo Font do repositório e marcá-lo como incorporado.
- Adicione o conteúdo de texto à página e salve o documento de saída.
public static void embeddedFontsInNewDocument(Path outputFile) {
try (Document document = new Document()) {
try (Page page = document.getPages().add()) {
TextFragment fragment = new TextFragment("");
TextSegment segment = new TextSegment(" This is a sample text using Custom font.");
TextState textState = new TextState();
Font font = FontRepository.findFont("Arial");
font.setEmbedded(true);
textState.setFont(font);
segment.setTextState(textState);
fragment.getSegments().add(segment);
page.getParagraphs().add(fragment);
}
document.save(outputFile.toString());
}
}
Definir uma Font padrão para a saída PDF
Use este padrão quando o documento salvo deve recorrer a uma fonte específica durante a geração da saída.
- Abra o PDF de origem em um objeto Document.
- Crie PdfSaveOptions e defina o nome da Font padrão.
- Salve o documento com as opções de salvamento configuradas.
public static void setDefaultFont(Path inputFile, Path outputFile) {
try (Document document = new Document(inputFile.toString())) {
PdfSaveOptions saveOptions = new PdfSaveOptions();
saveOptions.setDefaultFontName("Arial");
document.save(outputFile.toString(), saveOptions);
}
}
Obter todas as fontes usadas em um PDF
Este exemplo lista todas as Font detectadas no documento para que você possa auditar o uso de Font antes de exportar ou atualizar o arquivo.
- Abra o PDF de origem em um objeto Document.
- Enumere as fontes retornadas pelos utilitários de fontes do documento.
- Exiba o nome de cada detectado Font.
public static void getAllFonts(Path inputFile) {
try (Document document = new Document(inputFile.toString())) {
for (Font font : document.getFontUtilities().getAllFonts()) {
System.out.println(font.getFontName());
}
}
}
Melhorar a incorporação de Font por subdefinição de fonts
Use esta abordagem quando quiser reduzir a carga de fontes enquanto mantém os dados de fontes incorporadas alinhados ao uso do documento.
- Abra o PDF de origem em um objeto Document.
- Execute a subdefinição de fontes através das utilidades de fontes do documento com o necessário FontSubsetStrategy valores.
- Salve o documento otimizado.
public static void improveFontsEmbedding(Path inputFile, Path outputFile) {
try (Document document = new Document(inputFile.toString())) {
document.getFontUtilities().subsetFonts(FontSubsetStrategy.SubsetAllFonts);
document.getFontUtilities().subsetFonts(FontSubsetStrategy.SubsetEmbeddedFontsOnly);
document.save(outputFile.toString());
}
}
Definir o fator de zoom ao abrir o documento
Este exemplo configura o nível de zoom inicial que deve ser aplicado quando o PDF é aberto.
- Abra o PDF de origem em um objeto Document.
- Crie um GoToAction com um XYZExplicitDestination.
- Atribua a ação como a ação de abertura do documento e salve o resultado.
public static void setZoomFactor(Path inputFile, Path outputFile) {
try (Document document = new Document(inputFile.toString())) {
GoToAction action = new GoToAction(new XYZExplicitDestination(1, 0.0, 0.0, 0.5));
document.setOpenAction(action);
document.save(outputFile.toString());
}
}
Obter o fator de zoom de abertura do documento
Use este exemplo para verificar se um PDF já define um nível de zoom explícito para sua ação de abertura.
- Abra o PDF de origem em um objeto Document.
- Verifique se a ação de abertura é um GoToAction com um XYZExplicitDestination.
- Exiba o valor de zoom configurado ou informe que nenhum zoom está definido.
public static void getZoomFactor(Path inputFile) {
try (Document document = new Document(inputFile.toString())) {
if (document.getOpenAction() instanceof GoToAction action
&& action.getDestination() instanceof XYZExplicitDestination destination) {
System.out.println("Zoom: " + destination.getZoom());
} else {
System.out.println("Zoom: not set");
}
}
}