Anotações de mídia em PDF
Anotações de mídia em PDF normalmente abrangem conteúdo multimídia incorporado ou vinculado, como clipes de áudio, regiões de reprodução de tela, contêineres de mídia rica e modelos 3D.
Adicionar uma anotação de mídia rica
Use este exemplo quando uma página PDF deve hospedar conteúdo de vídeo incorporado com um player personalizado, imagem de pôster e skin.
- Crie um novo documento PDF Document e adicione uma página.
- Crie um RichMediaAnnotation, configure os recursos do player, poster e fluxo de conteúdo.
- Adicione a anotação à página e salve o documento de saída.
public static void richMediaAnnotationsAdd(Path mediaDir, Path outputFile) throws Exception {
String pathToAdobeApp = "C:\\Program Files (x86)\\Adobe\\Acrobat 2017\\Acrobat\\Multimedia Skins";
try (Document document = new Document()) {
Page page = document.getPages().add();
String videoName = "file_example_MP4_480_1_5MG.mp4";
String posterName = "file_example_MP4_480_1_5MG_poster.jpg";
String skinName = "SkinOverAllNoFullNoCaption.swf";
RichMediaAnnotation richMediaAnnotation = new RichMediaAnnotation(
page,
new Rectangle(100, 500, 300, 600, true));
String playerPath = pathToAdobeApp + "\\Players\\Videoplayer.swf";
richMediaAnnotation.setCustomPlayer(new FileInputStream(playerPath));
richMediaAnnotation.setCustomFlashVariables("source=" + videoName + "&skin=" + skinName);
String skinPath = pathToAdobeApp + "\\" + skinName;
richMediaAnnotation.addCustomData(skinName, new FileInputStream(skinPath));
Path posterPath = mediaDir.resolve(posterName);
richMediaAnnotation.setPoster(new FileInputStream(posterPath.toString()));
Path videoPath = mediaDir.resolve(videoName);
try (FileInputStream videoStream = new FileInputStream(videoPath.toString())) {
richMediaAnnotation.setContent(videoName, videoStream);
}
richMediaAnnotation.setType(RichMediaAnnotation.ContentType.Video);
richMediaAnnotation.setActivateOn(RichMediaAnnotation.ActivationEvent.Click);
richMediaAnnotation.update();
page.getAnnotations().add(richMediaAnnotation);
document.save(outputFile.toString());
}
}
Excluir anotações de mídia rica
Este exemplo remove anotações de mídia rica existentes de uma página.
- Abra o PDF de origem em um objeto Document.
- Colete anotações do tipo AnnotationType.
RichMedia. - Exclua as anotações coletadas e salve o documento atualizado.
public static void richMediaAnnotationsDelete(Path inputFile, Path outputFile) {
try (Document document = new Document(inputFile.toString())) {
Page page = document.getPages().get_Item(1);
List<Annotation> toDelete = new ArrayList<>();
for (Annotation annotation : page.getAnnotations()) {
if (annotation.getAnnotationType() == AnnotationType.RichMedia) {
toDelete.add(annotation);
}
}
for (Annotation annotation : toDelete) {
page.getAnnotations().delete(annotation);
}
document.save(outputFile.toString());
}
}
Obter anotações multimídia
Use este exemplo para inspecionar anotações de tela, som e mídia rica já presentes na página.
- Abra o PDF de origem em um objeto Document.
- Defina o conjunto de tipos de anotação multimídia que você deseja detectar.
- Itere pelas anotações da página e imprima o tipo e o retângulo para cada correspondência.
public static void multimediaAnnotationsGet(Path inputFile) {
try (Document document = new Document(inputFile.toString())) {
Set<AnnotationType> targetTypes = Set.of(
AnnotationType.Screen,
AnnotationType.Sound,
AnnotationType.RichMedia);
for (Annotation annotation : document.getPages().get_Item(1).getAnnotations()) {
if (targetTypes.contains(annotation.getAnnotationType())) {
System.out.println(annotation.getAnnotationType() + " [" + annotation.getRect() + "]");
}
}
}
}
Adicionar uma anotação 3D
Este exemplo adiciona uma visualização de modelo 3D interativa com perspectivas predefinidas e opções de renderização.
- Crie um novo documento PDF Document.
- Carregue o modelo em PDF3DContent e configure um PDF3DArtwork.
- Crie o PDF3DAnnotation, adicione-a a uma página e salve o documento.
public static void annotation3dAdd(Path modelFile, Path outputFile) {
try (Document document = new Document()) {
PDF3DContent pdf3dContent = new PDF3DContent(modelFile.toString());
PDF3DArtwork pdf3dArtwork = new PDF3DArtwork(document, pdf3dContent);
pdf3dArtwork.setLightingScheme(new PDF3DLightingScheme(LightingSchemeType.CAD));
pdf3dArtwork.setRenderMode(new PDF3DRenderMode(RenderModeType.Solid));
Matrix3D topMatrix = new Matrix3D(
1, 0, 0,
0, -1, 0,
0, 0, -1,
0.10271, 0.08184, 0.273836);
Matrix3D frontMatrix = new Matrix3D(
0, -1, 0,
0, 0, 1,
-1, 0, 0,
0.332652, 0.08184, 0.085273);
pdf3dArtwork.getViewArray().add(new PDF3DView(document, topMatrix, 0.188563, "Top"));
pdf3dArtwork.getViewArray().add(new PDF3DView(document, frontMatrix, 0.188563, "Left"));
Page page = document.getPages().add();
PDF3DAnnotation pdf3dAnnotation = new PDF3DAnnotation(
page,
new Rectangle(100, 500, 300, 700, true),
pdf3dArtwork);
pdf3dAnnotation.setBorder(new com.aspose.pdf.Border(pdf3dAnnotation));
pdf3dAnnotation.setDefaultViewIndex(1);
pdf3dAnnotation.setFlags(AnnotationFlags.NoZoom);
pdf3dAnnotation.setName(modelFile.getFileName().toString());
page.getAnnotations().add(pdf3dAnnotation);
document.save(outputFile.toString());
}
}
Adicionar uma anotação de tela
Use este exemplo quando uma página deve referenciar um arquivo de mídia por meio de uma região de reprodução na tela.
- Crie um novo documento PDF Document e adicione uma página.
- Crie um ScreenAnnotation para o arquivo de mídia e retângulo de destino.
- Adicione a anotação à página e salve o documento.
public static void screenAnnotationWithMediaAdd(Path mediaFile, Path outputFile) {
try (Document document = new Document()) {
Page page = document.getPages().add();
ScreenAnnotation screenAnnotation = new ScreenAnnotation(
page,
new Rectangle(170, 190, 470, 380, true),
mediaFile.toString());
page.getAnnotations().add(screenAnnotation);
document.save(outputFile.toString());
}
}
Adicionar uma anotação de som
Este exemplo coloca uma anotação de som na página e a associa a um arquivo WAV.
- Abra o PDF de origem em um objeto Document.
- Crie um SoundAnnotation para o arquivo de áudio de destino e configure seus metadados.
- Adicione a anotação à página e salve o documento de saída.
public static void soundAnnotationAdd(Path inputFile, Path outputFile) {
try (Document document = new Document(inputFile.toString())) {
Page page = document.getPages().get_Item(1);
Path mediaFile = inputFile.getParent().resolve("file_example_WAV_1MG.wav");
SoundAnnotation soundAnnotation = new SoundAnnotation(
page,
new Rectangle(20, 700, 60, 740, true),
mediaFile.toString());
soundAnnotation.setColor(Color.getBlue());
soundAnnotation.setTitle("John Smith");
soundAnnotation.setSubject("Sound Annotation demo");
soundAnnotation.setPopup(new PopupAnnotation(
page,
new Rectangle(20, 700, 60, 740, true)));
page.getAnnotations().add(soundAnnotation);
document.save(outputFile.toString());
}
}