Dokumentumok nyomtatása Aspose.Words for Java nyelven

Ha az Aspose.Words for Java használatával szeretne dokumentumokat nyomtatni, akkor jó helyen jár. Ebben a lépésenkénti útmutatóban végigvezetjük a dokumentumok Aspose.Words for Java segítségével, a mellékelt forráskód használatával történő nyomtatásának folyamatán.

Bevezetés

A dokumentumok nyomtatása sok alkalmazásban gyakori feladat. Az Aspose.Words for Java hatékony API-t biztosít a Word-dokumentumokkal való munkavégzéshez, beleértve a nyomtatás lehetőségét is. Ebben az oktatóanyagban lépésről lépésre végigvezetjük a Word-dokumentum nyomtatásának folyamatán.

Környezetének beállítása

Mielőtt belemerülnénk a kódba, győződjön meg arról, hogy a következő előfeltételek teljesülnek:

  • Java Development Kit (JDK) telepítve
  • Aspose.Words for Java könyvtár letöltve és hozzáadva a projekthez

A dokumentum betöltése

A kezdéshez be kell töltenie a nyomtatni kívánt Word-dokumentumot. Cserélje ki"Your Document Directory" a dokumentum elérési útjával és"Your Output Directory" a kívánt kimeneti könyvtárral.

string dataDir = "Your Document Directory";
string outPath = "Your Output Directory";
Document doc = new Document(dataDir + "Rendering.docx");

Nyomtatási feladat létrehozása

Ezután létrehozunk egy nyomtatási feladatot a betöltött dokumentumunk kinyomtatásához. Az alábbi kódrészlet inicializálja a nyomtatási feladatot, és beállítja a kívánt nyomtatóbeállításokat.

// Hozzon létre egy nyomtatási feladatot a dokumentumunk nyomtatásához.
PrinterJob pj = PrinterJob.getPrinterJob();
//Inicializáljon egy attribútumkészletet a dokumentum oldalainak számával.
PrintRequestAttributeSet attributes = new HashPrintRequestAttributeSet();
attributes.add(new PageRanges(1, doc.getPageCount()));
// Adja át a nyomtató beállításait a többi paraméterrel együtt a nyomtatási dokumentumnak.
MultipagePrintDocument awPrintDoc = new MultipagePrintDocument(doc, 4, true, attributes);

A dokumentum kinyomtatása

Most, hogy beállítottuk a nyomtatási feladatunkat, ideje kinyomtatni a dokumentumot. A következő kódrészlet társítja a dokumentumot a nyomtatási feladathoz, és elindítja a nyomtatási folyamatot.

// Adja át a nyomtatandó dokumentumot a nyomtatási feladat segítségével.
pj.setPrintable(awPrintDoc);
pj.print();

Teljes forráskód

string dataDir = "Your Document Directory";
Document doc = new Document(dataDir + "Rendering.docx");
// Hozzon létre egy nyomtatási feladatot a dokumentumunk nyomtatásához.
PrinterJob pj = PrinterJob.getPrinterJob();
//Inicializáljon egy attribútumkészletet a dokumentum oldalainak számával.
PrintRequestAttributeSet attributes = new HashPrintRequestAttributeSet();
attributes.add(new PageRanges(1, doc.getPageCount()));
// Adja át a nyomtató beállításait a többi paraméterrel együtt a nyomtatási dokumentumnak.
MultipagePrintDocument awPrintDoc = new MultipagePrintDocument(doc, 4, true, attributes);
// Adja át a nyomtatandó dokumentumot a nyomtatási feladat segítségével.
pj.setPrintable(awPrintDoc);
pj.print();

A MultipagePrintDocument forráskódja

class MultipagePrintDocument implements Printable
{
    private final Document mDocument;
    private final int mPagesPerSheet;
    private final boolean mPrintPageBorders;
    private final AttributeSet mAttributeSet;
    /// <összefoglaló>
    /// Az egyedi PrintDocument osztály konstruktora.
    // / </summary>
    public MultipagePrintDocument(Document document, int pagesPerSheet, boolean printPageBorders,
                                  AttributeSet attributes) {
        if (document == null)
            throw new IllegalArgumentException("document");
        mDocument = document;
        mPagesPerSheet = pagesPerSheet;
        mPrintPageBorders = printPageBorders;
        mAttributeSet = attributes;
    }
    public int print(Graphics g, PageFormat pf, int page) {
        // Az oldal kezdő és záró indexei az attribútumkészletben meghatározottak szerint.
        int[][] pageRanges = ((PageRanges) mAttributeSet.get(PageRanges.class)).getMembers();
        int fromPage = pageRanges[0][0] - 1;
        int toPage = pageRanges[0][1] - 1;
        Dimension thumbCount = getThumbCount(mPagesPerSheet, pf);
        // Számítsa ki a következő oldalindexet.
        int pagesOnCurrentSheet = (int) (page * (thumbCount.getWidth() * thumbCount.getHeight()));
        // Ha az oldalindex nagyobb, mint a teljes oldaltartomány, akkor nincs semmi
        // többet kell megjeleníteni.
        if (pagesOnCurrentSheet > (toPage - fromPage))
            return Printable.NO_SUCH_PAGE;
        // Számítsa ki az egyes miniatűr-helyőrzők méretét pontokban.
        Point2D.Float thumbSize = new Point2D.Float((float) (pf.getImageableWidth() / thumbCount.getWidth()),
                (float) (pf.getImageableHeight() / thumbCount.getHeight()));
        // Számítsa ki az erre a papírlapra nyomtatandó első oldal számát.
        int startPage = pagesOnCurrentSheet + fromPage;
        // Válassza ki az erre a papírlapra nyomtatandó utolsó oldal számát.
        int pageTo = Math.max(startPage + mPagesPerSheet - 1, toPage);
        //Lapozás a kiválasztott oldalakon a tárolt aktuális oldaltól a számítottig
        // utolsó oldal.
        for (int pageIndex = startPage; pageIndex <= pageTo; pageIndex++) {
            // Számítsa ki az oszlop- és sorindexeket!
            int rowIdx = (int) Math.floor((pageIndex - startPage) / thumbCount.getWidth());
            int columnIdx = (int) Math.floor((pageIndex - startPage) % thumbCount.getWidth());
            // Határozza meg a miniatűrök helyét a világ koordinátáiban (ebben az esetben pontokban).
            float thumbLeft = columnIdx * thumbSize.x;
            float thumbTop = rowIdx * thumbSize.y;
            try {
                // Számítsa ki a bal és a felső kiindulási helyzetet.
                int leftPos = (int) (thumbLeft + pf.getImageableX());
                int topPos = (int) (thumbTop + pf.getImageableY());
                // Számított koordináták segítségével jelenítse meg a dokumentum oldalát a Graphics objektumnak
                // és a miniatűr helyőrző mérete.
                // A hasznos visszatérési érték az a lépték, amelyen az oldal renderelésre került.
                float scale = mDocument.renderToSize(pageIndex, (Graphics2D) g, leftPos, topPos, (int) thumbSize.x,
                        (int) thumbSize.y);
                // Rajzolja meg az oldalszegélyeket (az oldal bélyegképe kisebb lehet, mint a miniatűr
                // helyőrző mérete).
                if (mPrintPageBorders) {
                    // Szerezze meg az oldal valódi 100%-os méretét pontokban.
                    Point2D.Float pageSize = mDocument.getPageInfo(pageIndex).getSizeInPoints();
                    // Rajzolja meg a szegélyt a méretezett oldal köré az ismert léptéktényezővel.
                    g.setColor(Color.black);
                    g.drawRect(leftPos, topPos, (int) (pageSize.x * scale), (int) (pageSize.y * scale));
                    // Rajzolja meg a szegélyt az indexkép helyőrzője köré.
                    g.setColor(Color.red);
                    g.drawRect(leftPos, topPos, (int) thumbSize.x, (int) thumbSize.y);
                }
            } catch (Exception e) {
                // Ha bármilyen hiba történik a renderelés során, akkor ne tegyen semmit.
                // Ez üres oldalt rajzol, ha a renderelés során hiba történik.
            }
        }
        return Printable.PAGE_EXISTS;
    }
    private Dimension getThumbCount(int pagesPerSheet, PageFormat pf) {
        Dimension size;
        // Határozza meg az oszlopok és sorok számát a lapon a
        //Fekvő tájolású papír.
        switch (pagesPerSheet) {
            case 16:
                size = new Dimension(4, 4);
                break;
            case 9:
                size = new Dimension(3, 3);
                break;
            case 8:
                size = new Dimension(4, 2);
                break;
            case 6:
                size = new Dimension(3, 2);
                break;
            case 4:
                size = new Dimension(2, 2);
                break;
            case 2:
                size = new Dimension(2, 1);
                break;
            default:
                size = new Dimension(1, 1);
                break;
        }
        // Cserélje fel a szélességet és a magasságot, ha a papír álló tájolású.
        if ((pf.getWidth() - pf.getImageableX()) < (pf.getHeight() - pf.getImageableY()))
            return new Dimension((int) size.getHeight(), (int) size.getWidth());
        return size;
	}
}

Következtetés

Gratulálok! Sikeresen kinyomtatott egy Word-dokumentumot az Aspose.Words for Java használatával. Ez a lépésenkénti útmutató segít abban, hogy a dokumentumnyomtatást zökkenőmentesen integrálja Java-alkalmazásaiba.

GYIK

1. kérdés: Kinyomtathatok egy dokumentum bizonyos oldalait az Aspose.Words for Java használatával?

Igen, dokumentum nyomtatásakor megadhatja az oldaltartományt. A kódpéldában használtukattributes.add(new PageRanges(1, doc.getPageCount())) az összes oldal kinyomtatásához. Igény szerint módosíthatja az oldaltartományt.

2. kérdés: Az Aspose.Words for Java alkalmas kötegelt nyomtatásra?

Teljesen! Az Aspose.Words for Java kiválóan alkalmas kötegelt nyomtatási feladatokra. Ismételheti a dokumentumok listáját, és egyenként nyomtathatja ki őket hasonló kóddal.

3. kérdés: Hogyan kezelhetem a nyomtatási hibákat vagy kivételeket?

nyomtatási folyamat során esetlegesen előforduló kivételeket kezelnie kell. A kivételek kezelésével kapcsolatos információkért tekintse meg az Aspose.Words for Java dokumentációját.

4. kérdés: Testreszabhatom a nyomtatási beállításokat?

Igen, testreszabhatja a nyomtatási beállításokat, hogy megfeleljenek az egyedi követelményeknek. Fedezze fel az Aspose.Words for Java dokumentációját, hogy többet megtudjon az elérhető nyomtatási lehetőségekről.

5. kérdés: Hol kaphatok további segítséget és támogatást az Aspose.Words for Java-hoz?

További támogatásért és segítségért látogassa meg aAspose.Words for Java fórum.


Most, hogy sikeresen megtanulta, hogyan nyomtathat dokumentumokat az Aspose.Words for Java használatával, megkezdheti ennek a funkciónak a megvalósítását Java-alkalmazásaiban. Boldog kódolást!