Преобразовать документ в PDF

Возможность легко и надежно конвертировать документы из одного формата в другой является ключевой особенностью Aspose.Words. Одним из самых популярных форматов для конвертации является PDF – формат с фиксированной компоновкой, который сохраняет первоначальный вид документа при его отображении на различных платформах. Термин “рендеринг” используется в Aspose.Words для описания процесса преобразования документа в формат файла, который разбит на страницы или имеет концепцию страниц.

Преобразовать документ Word в PDF

Преобразование из Word в PDF - довольно сложный процесс, требующий нескольких этапов расчета. Механизм верстки Aspose.Words имитирует работу механизма верстки страниц Microsoft Word, благодаря чему выходные документы PDF выглядят как можно ближе к тому, что вы можете увидеть в Microsoft Word.

С помощью Aspose.Words вы можете программно преобразовать документ из формата DOC или DOCX в формат PDF без использования Microsoft Office. В этой статье объясняется, как выполнить это преобразование.

Преобразование DOCX или DOC в PDF

Преобразование из формата документа DOC или DOCX в формат документа PDF в Aspose.Words очень просто и может быть выполнено всего с помощью двух строк кода, которые:

  1. Загрузите ваш документ в объект Document, используя один из его конструкторов, указав имя документа с расширением его формата.
  2. Вызовите один из методов Document.Save для объекта Document и укажите желаемый выходной формат как PDF, введя имя файла с расширением “.PDF”.

В следующем примере кода показано, как преобразовать документ из DOCX в PDF с помощью метода Save:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java.git.
Document doc = new Document(getMyDir() + "Document.docx");
doc.save(getArtifactsDir() + "BaseConversions.DocxToPdf.pdf");

Вы можете скачать файл шаблона для этого примера с сайта Aspose.Words GitHub.

Преобразование в другие стандарты PDF

Aspose.Words предоставляет перечисление PdfCompliace для поддержки преобразования DOC или DOCX в различные стандарты формата PDF (такие как PDF 1.7, PDF 1.5, и т.д.).

Следующий пример кода демонстрирует, как преобразовать документ в PDF 1.7, используя PdfSaveOptions с соблюдением PDF17:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java.git.
Document doc = new Document(getMyDir() + "Rendering.docx");
PdfSaveOptions saveOptions = new PdfSaveOptions(); { saveOptions.setCompliance(PdfCompliance.PDF_17); }
doc.save(getArtifactsDir() + "WorkingWithPdfSaveOptions.ConversionToPdf17.pdf", saveOptions);

Преобразование изображений в PDF

Преобразование в PDF не ограничено форматами документов Microsoft Word. Любой формат, поддерживаемый Aspose.Words, включая программно созданный, также может быть преобразован в PDF. Например, мы можем преобразовать одностраничные изображения, такие как JPEG, PNG, BMP, EMF, или WMF, а также многостраничные изображения, такие как TIFF и GIF, в PDF.

В следующем примере кода показано, как преобразовать изображения JPEG и TIFF в PDF:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java.git.
convertImageToPDF(getImagesDir() + "Logo.jpg", getArtifactsDir() + "BaseConversions.JpgToPdf.pdf");
convertImageToPDF(getImagesDir() + "Transparent background logo.png", getArtifactsDir() + "BaseConversions.PngToPdf.pdf");
convertImageToPDF(getImagesDir() + "Windows MetaFile.wmf", getArtifactsDir() + "BaseConversions.WmfToPdf.pdf");
convertImageToPDF(getImagesDir() + "Tagged Image File Format.tiff", getArtifactsDir() + "BaseConversions.TiffToPdf.pdf");
convertImageToPDF(getImagesDir() + "Graphics Interchange Format.gif", getArtifactsDir() + "BaseConversions.GifToPdf.pdf");
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java.git.
/**
* Converts an image to PDF using Aspose.Words for Java.
*
* @param inputFileName File name of input image file.
* @param outputFileName Output PDF file name.
* @throws Exception
*/
private void convertImageToPDF(String inputFileName, String outputFileName) throws Exception {
// Create Aspose.Words.Document and DocumentBuilder.
// The builder makes it simple to add content to the document.
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
// Load images from the disk using the appropriate reader.
// The file formats that can be loaded depends on the image readers available on the machine.
ImageInputStream iis = ImageIO.createImageInputStream(new File(inputFileName));
ImageReader reader = ImageIO.getImageReaders(iis).next();
reader.setInput(iis, false);
// Get the number of frames in the image.
int framesCount = reader.getNumImages(true);
// Loop through all frames.
for (int frameIdx = 0; frameIdx < framesCount; frameIdx++) {
// Insert a section break before each new page, in case of a multi-frame image.
if (frameIdx != 0)
builder.insertBreak(BreakType.SECTION_BREAK_NEW_PAGE);
// Select active frame.
BufferedImage image = reader.read(frameIdx);
// We want the size of the page to be the same as the size of the image.
// Convert pixels to points to size the page to the actual image size.
PageSetup ps = builder.getPageSetup();
ps.setPageWidth(ConvertUtil.pixelToPoint(image.getWidth()));
ps.setPageHeight(ConvertUtil.pixelToPoint(image.getHeight()));
// Insert the image into the document and position it at the top left corner of the page.
builder.insertImage(
image,
RelativeHorizontalPosition.PAGE,
0,
RelativeVerticalPosition.PAGE,
0,
ps.getPageWidth(),
ps.getPageHeight(),
WrapType.NONE);
}
if (iis != null) {
iis.close();
reader.dispose();
}
doc.save(outputFileName);
}

Чтобы заставить этот код работать, вам нужно добавить ссылки на пакеты классов Aspose.Words, Java.awt.image и javax.imageio в ваш проект.

Уменьшить размер выходных данных PDF

При сохранении в PDF вы можете указать, хотите ли вы оптимизировать выходные данные. Для этого вам нужно установить флаг OptimizeOutput в значение true, и тогда избыточные вложенные холсты и пустые холсты будут удалены, соседние глифы с одинаковым форматированием будут объединены.

В следующем примере кода показано, как оптимизировать выходные данные:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java.git.
Document doc = new Document(getMyDir() + "Rendering.docx");
PdfSaveOptions saveOptions = new PdfSaveOptions(); { saveOptions.setOptimizeOutput(true); }
doc.save(getArtifactsDir() + "WorkingWithPdfSaveOptions.OptimizeOutput.pdf", saveOptions);

Смотрите также