SQL Inserting up to 10'000 records from a table to a secondary table
Ideally, you should provide all relevant code (including the whole query) in order to receive more targeted answers (and also obey site's rules), but based on you have provided, one way to optimize the insertion is the following:

1) Define a session table which will hold all the keys that require inserting the data for

ThermalPrinterSession

ThermalPrinterSessionId INT PRIMARY KEY,
SessionId UNIQUEIDENTIFIER,
Quantity INT,
Label VARCHAR(100),
Id INT


2) Create a stored procedure that will be able to process data for a session

CREATE PROCEDURE uspProcessThermalPrinterData
(
   @SessionId UNIQUEIDENTIFIER,
   @Quantity INT,
   @Label VARCHAR(100),
   @Id INT
)
AS
BEGIN
   INSERT INTO PRINT_TABLE(ID, KEYNAME1,
       KEYNAME2, KEYNAME3, KEYNAME4,
       PRINTFORMATSTRING, PRINTQUANTITY, COLLECTION, COLLECTION_OWNER,
       MANAGER, LOCATIONID )
   SELECT 1                       -- all columns for insertion
   FROM ThermalPrinterSession S
      JOIN OtherTable1 T ON T.Id = S.Id        -- other joins and other tables come here
   WHERE T.SessionId = @SessionId
END
GO


3) For each insert session you can define a new unique identifier

Guid.NewGuid();


4) Actual insertion can be done using bulk insert for improved performance. Entity framework has an extension that helps with bulk inserts and an elegant generic solution can also be found here.

5) call the stored procedure for current session

6) Session table maintenance

If this table is not going to be very big (depends on session inserts), it is better not to perform deletes during the working hours and truncate it once a day (e.g.in a nightly job)