Formatear documentos PDF en Java
El formato en Aspose.PDF for Java incluye el comportamiento del visor, la inserción de Font y la configuración de visualización.
Obtener configuración de ventana del documento
Utilice este ejemplo para inspeccionar las preferencias de visualización actuales almacenadas en un documento PDF existente.
- Abra el PDF de origen
Document. - Lea las propiedades de ventana y visualización requeridas del documento.
- Muestre la configuración actual para inspección o depuración.
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());
}
}
Establecer preferencias de ventana del documento
Este ejemplo actualiza cómo se debe mostrar el PDF cuando se abre en un visor compatible.
- Abra el PDF de origen
Document. - Establezca las preferencias de ventana, diseño y modo de página requeridas.
- Guarde el PDF actualizado
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());
}
}
Incrustar fuentes en un PDF existente
Utilice este enfoque cuando un documento deba incluir sus fuentes requeridas para una representación más fiable en otros sistemas.
- Abra el PDF de origen
Document. - Habilite la incrustación de fuentes estándar e iterar a través de las fuentes usadas por cada una
Page. - Marque cualquier no incrustado
Fontobjetos para incrustar. - Guarde el documento actualizado.
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());
}
}
Incrustar fuentes al crear un nuevo PDF
Este ejemplo crea un nuevo PDF y asigna una fuente incrustada al contenido de texto desde el inicio.
- Cree un nuevo PDF
Documenty agregue unPage. - Cree lo requerido
TextFragment,TextSegment, yTextState. - Resuelva el objetivo
Fontdel repositorio y márquelo como incrustado. - Agregue el contenido de texto a la página y guarde el documento de salida.
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());
}
}
Establecer una Font predeterminada para la salida PDF
Utilice este patrón cuando el documento guardado debe recurrir a una fuente específica durante la generación de salida.
- Abra el PDF de origen
Document. - Cree
PdfSaveOptionsy establezca el nombre de Font predeterminado. - Guarde el documento con las opciones de guardado 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);
}
}
Obtener todos los Font utilizados en un PDF
Este ejemplo enumera cada Font detectado en el documento para que pueda auditar el uso de Font antes de exportar o actualizar el archivo.
- Abra el PDF de origen
Document. - Enumere las fuentes devueltas por las utilidades de fuentes del documento.
- Muestre el nombre 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());
}
}
}
Mejorar la incrustación de Font mediante la creación de subconjuntos de Font
Utilice este enfoque cuando desee reducir la carga de fuentes mientras mantiene los datos de fuentes incrustadas alineados con el uso del documento.
- Abra el PDF de origen
Document. - Ejecute el subconjunto de fuentes mediante las utilidades de fuentes del documento con lo necesario
FontSubsetStrategyvalores. - Guarde el documento optimizado.
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());
}
}
Establecer el factor de zoom al abrir el documento
Este ejemplo configura el nivel de zoom inicial que debe aplicarse cuando se abre el PDF.
- Abra el PDF de origen
Document. - Cree un
GoToActioncon unXYZExplicitDestination. - Asigne la acción como la acción de apertura del documento y guarde el 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());
}
}
Obtener el factor de zoom al abrir el documento
Utilice este ejemplo para inspeccionar si un PDF ya define un nivel de zoom explícito para su acción de apertura.
- Abra el PDF de origen
Document. - Verifique si la acción de apertura es una
GoToActioncon unXYZExplicitDestination. - Muestre el valor de zoom configurado o informar que no se ha establecido zoom.
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");
}
}
}