Преобразовать документ в 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 очень просто и может быть выполнено всего с помощью двух строк кода, которые:
- Загрузите ваш документ в объект Document, используя один из его конструкторов, указав имя документа с расширением его формата.
- Вызовите один из методов 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. Эти параметры можно задать с помощью класса PdfSaveOptions, содержащего свойства, которые определяют, как будет отображаться результат PDF.
Обратите внимание, что с помощью того же метода вы можете преобразовать любой документ в формате flow-layout в формат PDF.
Преобразование в другие стандарты 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); |
Смотрите также
- Статья Визуализация для получения дополнительной информации о форматах фиксированной страницы и потокового макета
- Статья Преобразование в формат фиксированной страницы для получения дополнительной информации о макете страницы
- Статья Укажите параметры отображения при преобразовании в PDF для получения дополнительной информации об использовании класса
PdfSaveOptions